Sokoban Skins
Sokoban is probably one of the most open games because of its simple rules. Sokoban is open in many ways. I will list four reasons below.
(1) There are several excellent open source Sokoban programs, such as Sokoban YASC and JSoko. I have also written a GPLv3-licensed Sokoban for Linux - USokoban, and a Javascript+HTML5 Sokoban program SokoPlayer HTML5 that runs in modern browsers.
(2) Sokoban has standard text-based formats for both the levels and solutions. These formats are supported by most Sokoban programs, including the just mentioned open sources implementations. The levels are saved in the so-called XSB format. Following is an example,
----#####----------
----#---#----------
----#$--#----------
--###--$##---------
--#--$-$-#---------
###-#-##-#---######
#---#-##-#####--..#
#-$--$----------..#
#####-###-#@##--..#
----#-----#########
----#######--------
Title: Classic level 1
Author: Thinking Rabbit
where '#' stands for WALL, '-' for FLOOR, '@' for MAN, '$' for BOX, '.' for GOAL, '*' for BOX ON GOAL and '+' for MAN ON GOAL.
The solutions are saved in the LURD format, which are strings of lower and upper case of the letters L, U, R and D. Lower case letters 'l', 'u', 'r' and 'd' represent MOVE left, up, right and down respectively, while upper case letters represent PUSH.
(3) There is even a more or less cross-program standard format for the skins. I am going the describe the skin format using in my GPLv3 project USokoban. This format can be also used by other Sokoban programs with little or no modification at all. The format is referred to as "Common Sokoban Skin Format" by Brian Damgaard, the author of Sokoban YASC.
The common skin is just an image file usually in BMP or PNG format. I have attached two sample skins. The first one created by Borgar with a CC license. The second one is from XSokoban. Following is the skin format description.
The skin image is consisted of 4 by 4 tiles, with each tile representing a game element.
First row, from (0,0) to (3,0) represent FLOOR, MAN, BOX, SELECTED BOX
2nd row, (0,1) - (3,1): FLOOR on goal, MAN on goal, BOX on goal, SELECTED BOX on goal.
The first 3 tiles of the 3rd row and the first 2 tiles of 4th row are used for WALLs. These 5 tiles can be either identical, or they can be used to piece together seamless WALLs.
Tile (3,2) is also used for FLOOR, but for outside FLOOR, this can be the same as tile (0,0).
Tile (2,3) is used to draw hints, I will explain this later.
Tile (3,3) is not used (in USokoban).
Some sokoban programs allow users to play with mouse. The user clicks a box to select it, and the program draws hints on the map showing where the selected box can be pushed to, without pushing other boxes. The selected box and selected box on goal are drawn using tile (3,0) and (3,1), respectively. And in USokoban, hints are drawn with a colored square in the center of the corresponding tiles in the maze. And that color is determined by Tile (3,3) of the skin file. The skin author may choose a color that fits.
All major sokoban programs agree on the usage of the tiles of the first 3 columns except the Tile (2,3). All other tiles are either unused or program-specific. Anyway, I think the skin format is common enough to be called "common skin".
Could anyone help making more skins for USokoban? I am fine with any art style, but prefer simple ones. But other sokoban players may prefer a different style. Because it is rather easy to change skins in USokoban, it will be great if there are many skins to be choosed from. And skin sizes for each tile can be 16x16, 32x32, 64x64 or any size you like, because USokoban supports skins of any size.
I appreciate if you consider making a skin for USokoban.
(4) I continue to explain why Sokoban is open. There are dozens, if not hundreds, of people publish their sokoban levels freely on the web in plain XSB text format. Sokoban is open also because we have an open competition for it.
We are holding a monthly sokoban competition on the web. The competition is open to anyone who can access the open world wide web. We published the competition level in the standard XSB format on our website http://sokoban.ws. The participants can use any sokoban program they like, provided the program can load XSB level and can export LURD solutions. Usually, participants solve the level offline and submit the LURD solution online. The competition has attracted participants from several countries.
I have finished listing the four reasons that make Sokoban a very open game. Please consider designing skins for this open game. Thank you!