Wednesday, May 6, 2020

Game 184: Sokoban

Here I am, emulating a computer that I know practically nothing about, using a Japanese emulator that I barely understand how to use, all so I can play an outdated version of an otherwise widely available puzzle game in a language I can't read. Such is a fact of life when seeking original sources in the video game world.

Today, Sokoban is a synecdoche for crate-pushing puzzle elements seen in all kinds of games, but the original is a pure puzzle game about pushing boxes around a warehouse into a loading bay, and requires logic, planning, and spatial awareness to figure out the sequence of pushes needed to move them all into their target area without stranding yourself, pushing any of the boxes into irretrievable corners, or blocking off crucial passages. Its first international release was in 1987, by Spectrum Holobyte, who were also responsible for the first international release of an even more famous puzzle game of east hemisphere origin. Sokoban has since been endlessly ported, remade, and even received an official sequel on mobile phones.

I've worked out a chronology of notable Sokoban games, using notes from Wikipedia, Mobygames, and this Sokoban-focused blog:
  • Sokoban, released in December 1982 for the FM-7, PC-8000, and PC-8801 Japanese microcomputers by Thinking Rabbit.
  • Sokoban Extra, a ten level expansion pack published in 1983 as BASIC code in PC Magazine.
  • Sokoban 2, released in 1984 for the FM-7 and PC-88 families.
  • Soko-Ban, released in 1987 by Spectrum Holobyte, featuring a mix of 50 levels from Sokoban and Sokoban 2, with some tweaks to most of the levels.
  • Perfect Soko-ban, released in 1989 for multiple Japanese computers by Thinking Rabbit, featuring all-new levels and graphics.
  • XSokoban, an unofficial port released in 1989 featuring the 50 levels of the Spectrum Holobyte version with some further changes.
  • XSokoban 3.0, adding 40 levels of unknown origin.

Most of the versions on the Internet seem to be based on XSokoban, and a few are based on Spectrum Holobyte's 50-level set. The original 1982 game had 20 levels, and while the first ten were remade by Spectrum Holobyte, it doesn't look like the other ten were ever reused in any later versions. I wouldn't have known that if I hadn't insisted on emulating these computers, but now I do, and it means this 1982 release isn't just an old version, but rather a different game entirely.

I wound playing the FM-7 version in tape format, using the "XM7" emulator. I also found a few PC-88 versions with slightly nicer presentations, some had level select features, and some had alternate level sets (I assume these are mislabeled copies of Sokoban Extra), but all of the PC-88 versions had a critical flaw - in the FM-7 version, one keystroke moves your box-pusher one space, but in the PC-88 versions, he'll move continuously depending on how long you keep the key held. Tapping it lightly might not register at all, and it's very easy to accidentally move two spaces with a single keystroke, which can instantly ruin your game, given Sokoban's nature. Regardless of version, you can't play this game on most laptops, because it's controlled by the numeric keypad, and although there is an emulator option in the emulator to map that to the cursor keys, it doesn't work here.

After loading and running the game, we get this instructions screen.

Big thanks to Redditor flakpanther171 for translating this.

You have a part-time job at a big warehouse company! Your job is to clear up 20 warehouses. Please try your best. However, since the boxes are large, you can only push one by one. If you do poorly, the box will get stuck! Please be careful.

Please clean up by moving them to the red dots. Press PF1 key when you fail or finish the job.
Press SPACE to start !

You'll want scanlines OFF to play this game (FullScan=1 in the .ini file), because the tiny dots designating the loading bay area can be obscured otherwise. Annoyingly, walking over the dots "erases" them, so you better remember where they are.

The first layout is mostly identical to the first level of Spectrum Holobyte's version and also of XSokoban. This will continue for the first ten levels. Sokoban doesn't waste any time with childishly easy puzzles, but this first one isn't overly difficult either. There are basically three options at the start:
  • Push the lower of two accessible crates north
  • Push the lower of two accessible crates west
  • Push the higher of two accessible crates west

Pick either of the first two options, and you'll quickly find out you were wrong.

Deadlock. There is no possible way to move the triangle of boxes without trapping them further.

Pressing F1 brings up this message:

Do your best or you’ll get fired! Try again?

Push the higher crate instead, and the path to the loading bay becomes clear.

From here on, it's a simple matter to push the crates into the bay, which only gets simpler with each one you remove from the corridors. The round doesn't automatically end when you push the last crate into position. You've got to hit F1.

The first warehouse is done! Go to the next warehouse?

I progressed through the game, occasionally needing to restart, until, on level 9, I faced this message and a shrill buzzer noise when hitting F1.

You’re now dismissed! Start over?

Hitting "Y" did not reset the level. It reset the game back to level 1. Apparently you are only allowed four resets per level! From here on, I used XM7's save states to bypass this limit, but only for this purpose.

Level 11 seemed completely impossible, until I stumbled upon a little secret.

Destructible walls! That's not kosher Sokoban. And yet, here it is, in the original game - a feature removed from the Spectrum Holobyte port, and every other port hence. Levels 11-20 all feature destructible walls, which is why, as I mentioned earlier, they can only be found in this original version of the game.

And what a miserable feature to spring on you, on top of the already miserable feature of limited continues. Sokoban is all about planning your moves, and you can't very well plan your moves if the game withholds information from you. You're likely to waste at least one reset per level just finding out which walls are destructible, and from which direction. It's not a big deal today on an emulator with save states, but knowing the original system didn't have this, it feels like a very cheap way to waste the player's time by forcing them to restart the entire game again and again.

The stage layouts increasingly rely on these walls, demanding trial and error to excavate the warehouse without boxing your crates into unreachable corners, until reaching critical mass in the last two levels.

Level 19

Level 20 dug out at warp speed

That last level is pure trial and error - I can't imagine how infuriating it must be to restart all the way at the beginning because you guessed which way to push a crate wrong and found yourself with nothing to dig once too often. But if you can dig every diggable block without getting the crates trapped, then it's not terribly hard to push them into the loading bay (if you can remember where it is), and you're rewarded with this:

"Rabbit's" message

GAB rating: Above Average. Sokoban's first half is a pleasant exercise in logic and planning, with a progressive difficulty curve and well designed puzzles with satisfying "ah-ha!" moments as they get more challenging, though I could have done without the limited continues. The second half is a cruel joke that undermines everything that worked in the first half by taking away the deterministic, perfect information gameplay, and forcing you to guess where the diggable squares might be and reset the level or game whenever you guess wrong.


  1. I was wondering if we could come with more frustrating features for this classic, in the vein of the diggable walls and the erasing of the bay (not really a feature, but still). Some ideas:

    * Tiles that mirror the movement controls after stepping on them (bonus points if they are invisible, so you can get locked out on the first encounter).
    * Crates that move towards you when "pushed" (again bonus points if they are indistinguishable).
    * No markings whatsoever for the target tiles, so you need to guess where to place them before pressing F1.

    Anyway, thank you for digging the original version; this was an interesting read!

    1. You're welcome! This was one of the more fun ones to do, even if it had some frustrating play aspects.

      I actually started off with a PC-88 disk version that had a level select, before deciding that the tape versions are likely more authentic, and the FM-7 version definitely more playable. Didn't realize at first that the F1 message is different depending on whether the level is complete or not. I assumed the game didn't even detect a completed level, and it was the player's responsibility to use F1 to restart the game and manually select a new level.

      On the subject of ways to make things even more annoying, how about invisible walls? Picture a level that just looks like a bunch of crates floating in a black void, easily pushed into the marked bay, until one crate simply refuses to move. And soon you realize with horror that the walls are there, and you just pushed a crate into an invisible corner.

    2. Or bottomless pits! Just push the crate along this unmarked narrow black path, but make sure not to push it into the gaping black void on either side of the path...

      (Reminiscent of the NetHack variants where you DO need to push the boulders into the holes!)

    3. Thanks for this post. I've always been curious about the origins of sokoban style games. I played one called Shikin Joh, which has matching tiles to remove them instead of a loading bay area, the goal being to unlock and get to the exit tile. It had a lot of different versions, including MSX, so maybe you'll get to play it at some point. It has some special stages that kind of mix up the rules. Trying to figure out the logic for those levels is definitely special.

  2. Another blast from my past! I spent a ton of hours on the 1987 DOS release, but a kid was really only going to go so far in a game like this. I remember my parents were obsessed with Sokoban, but I doubt they ever beat it.

  3. Simple question. Are the FM-7 and PC88 versions Basic programs? I am trying to confirm that the original versions started as Basic programs or not.


Most popular posts