(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