(2024-08-12) Sokoban: a case of Occam's Razor in video gaming
-------------------------------------------------------------
In case I didn't already mention it, my gaming preferences have significantly
changed throughout the year. Now, I prefer the games that are more quiet,
calm and don't require a lot of timing. For instance, I have beaten Solomon
no Kagi 2 (along with its 50 bonus levels), started playing Saboteur (on BGA
website) and mastering FreeCell (usually on Aisleriot but I also have my own
AWK-based implementation), but I think the most important switch in my
"gaming career" was the return to Sokoban.

Being introduced back in 1982 by Hiroyuki Imabayashi and his company called
Thinking Rabbit, Sokoban was a major hit. Few people know, however, that the
original NEC PC-8801 version had some mechanics in the second half of the
game that later disappeared from all subsequent releases, as well as
unofficial clones: false walls. Quoting Sokoban Fandom: "These false walls
appear just like regular walls, with no indication that they are different,
but if the player moves toward them from a specific direction they are
demolished, thus forming a path through which the player can move through.
This mechanic would be ditched after this game."

Well, why was it ditched? I think it was because such a mechanic would be
excessive, and much more variety can be added just by designing new levels
instead of complicating the engine itself. And this is what I'd like to
emphasize on: simplicity at the core. Sokoban rules are so simple and
well-defined that the entire engine can even fit into a 512-byte x86 boot
sector ([1]). There are just seven different tile sets: empty space, a goal
spot, the player, a box, the player on a goal, a box on a goal and a wall.
Together with a "line break", this only means 8-state (3-bit) pieces needed
to design a level. Moves and collisions are easily implementable by simple
comparisons and bitwise operations. Controls require 6 buttons at most, that
is, if we include undo functionality, which is a good practice for any
Sokoban developer. There were some famous official Sokoban implementations
though (like Boxxle on Game Boy) that only included last move undo and
didn't save entire history, but nowadays that's more of an exception.

Considering this simplicity, the amount of alternative engines and even two
different "standard" level formats (one plaintext and one XML-based),
there's no wonder Sokoban gathered a huge community around it. And this is
where the variety I was talking about comes from: as of now, there are over
43000 ([2]) community-submitted levels! Just try to wrap your head around
the number and imagine the total playtime of all this. Even if some of them
could repeat others, it still would easily be over 40k levels of unique
content. No game publisher could ever do such work. Maybe we are going to
see some AI-generated Sokoban levels in the near future, but I'm referring
to a database of the levels designed, played and proven to be solvable by
real people. This is what I call success: from 20 levels on an obscure
Japanese PC to over 43k levels that can be played on any platform existing
in the world that allows to sideload applications.

Needless to say, I'm in.

--- Luxferre ---

[1]: https://ish.works/bootsector/bootsector.html
[2]: https://www.sourcecode.se/sokoban/levels.php