XSOKOBAN(6)
π XSOKOBAN(6) β the pushing-objects-around game, but make it X11 π
okay bestie, so this is the manual page for xsokoban, from the Games Manual section. Pull up a chair, we're pushing boxes π«Ά
β¨ NAME β¨
xsokoban β literally just... Pushing objects around... that's the whole vibe π
β¨ SYNOPSIS β¨
xsokoban [{ -nn | -s[level] | -r | -u <username> -c[scorefile-text]} -C
-display <disp> {-w | -walls} {-rv | -reverse} {-f | -font} <fn> {-b |
-bitdir} <path> {-fg | -foreground} <color> {-bg | -background} <color>
{-bd | -border} <color> {-pr | -pointer} <color> -xrm <arg> ]
that's a lot of flags, I know, but she ate and left no crumbs π
πΈ DESCRIPTION πΈ
xsokoban is an implementation of the game sokoban, written on top of X(1). iconic behavior, honestly π
The goal of xsokoban is to push all the round objects into the score area of each level using the mouse or the arrow keys. The arrow keys move the player in the corresponding direction, pushing an object if it is in the way and there is a clear space on the other side. The mouse buttons each have a distinct function β yes, each one, they're all main characters in their own way π¦
If the left mouse button is pressed on a clear square, the player will move to that location via the optimal path if such a path exists; otherwise, the game will beep. (the beep is the vibe check failing π)
If the middle button is pressed on an object that is adjacent to the player, the object will be pushed one step. If the middle mouse button is pressed on an empty space, the player will move the closest object that is on a straight line with the destination, such that the object can be pushed in that direction, and the player is not directly between the destination and the object. Before pushing the object, the player is moved optimally to start the push. no cap, that's the actual rule β¨
Either the left or middle mouse buttons may be used to "drag" an object from an initial to a final position. If a straightforward way exists for the player to push the object without moving any other objects, the player will execute appropriate moves and pushes to get the object to the desired destination. slay π«Ά
The right button mouse undoes the last user action, and may be used any number of times. infinite undo, we love to see it π
The rest of the functions are bound to the keyboard:
?β Display the help screen.qβ Quit the current level.h,j,k,lβ Move the man just like the arrow keys, as invi(1).sβ Save and quit.uβ Undo the last action. Same as right mouse button.Uβ Restart a level.cβ Snapshot the current position^Uβ Restore to the last snapshot^Rβ Redraw the screen.Sβ View the score file.
π the score file situation π
The score file can be viewed at any time during the playing of the game. The scores are also displayed whenever a level is completed. Scores of the current user are initially highlighted. While viewing scores, the following keys may be used to control the listing:
qβ Quit the gameReturnβ Return to the game and continue with the current level; or, if the current level is completed, begin the next level.<left>β The left mouse button may be used to select a different user to highlight. It also controls the scroll bar at the right side of the screen.<middle>β The middle mouse button selects a new level to play if a level is not already in progress.
Scores are saved in the score file if they are of high enough rank. A score is ranked according to how many scores are better than it; there are no scores superior to a rank 1 score, only one score superior to a rank 2 score, and so on. If two scores are identical, the first one entered is ranked higher. (so if you're tied with someone, she who got there first wins, periodt β)
β οΈ watch out bestie: it is possible for other users to have the same username as you, and thus collide in the score file. One symptom of this problem is that when you first play the game, you are not started at level 1. To avoid this problem, set your "xsokoban.username" X resource to the desired unique username.
π OPTIONS π
-nnβ Start at level nn, provided that levels below it are completed.-s [level]β Print the scores on standard output. The optional level will restrict the printout to scores on just that level.-rβ Restore a saved game.-u <username>β Set the name of the user playing the game. By default, the user's login name is used.-c [scorefile-text]β Create a new score file (can be ran only by the owner of the game). If the argument"scorefile-text"is supplied, the file of that name is assumed to contain the textual output compatible with the output of"xsokoban -s -D". The scorefile is initialized to contain the scores described in that text file. If no argument is supplied, the score file is initialized to be empty.-Cβ Create a new X colormap for display purposes. Ordinarilyxsokobancreates a new colormap automatically if the default colormap does not contain enough free slots to allow it to run properly.-display <display>β Run the game on the named display.{-w | -walls}β Use fancy walls. (This is the default unless an option bitmap set is used){-rv | -reverse}β Use reverse video.{-f | -font} <fontname>β Use the named font instead of the default9x15font.{-b | -bitdir} <path>β Use the bitmaps found in <path> instead of the defaults.{-fg | -foreground} <color>β Use the named color as the foreground color. (default isBlackPixel()){-bg | -background} <color>β Use the named color as the background color. (default isWhitePixel()){-bd | -border} <color>β Use the named color as the border color. (default is foreground color){-pr | -pointer} <color>β Use the named color as the mouse pointer foreground. (default is foreground)-xrm <arg>β <arg> is an X Resource specification.
π OTHER INFORMATION π
There is more information about xsokoban in the WWW, at
http://xsokoban.lcs.mit.edu/xsokoban.html
A global score file is also located there. go snoop, it's giving archive-core π§
π AUTHORS π
- Unknown Hacker β Original
curses(3)implementation. - Joseph L. Traub β X windows interface.
- Kevin Solie β simultaneously developed X implementation (merged in).
- Mark Linderman, Christos Zoulas β Mouse code (added to Solie's version).
- Andrew Myers(
http://www.pmg.lcs.mit.edu/~andru) β Improved mouse UI, score ranking, color and WWW support.
Code has also been donated by many xsokoban users. Thanks for all your contributions and suggestions! π y'all carried fr fr
π RESOURCES π
xsokoban understands the following resources.
username : stringβ The name you would like to use when playingxsokoban. It defaults to your real username. If you are playing in WWW mode, some domain information is appended to your real username to disambiguate from other users with the same name. This domain information is not appended to the username if specified through the resource.fancyWalls : booleanβ Use fancy walls.fontName : fontβ Use named font.reverseVideo : booleanβ Reverse foreground and background pixels.foreground : colorβ Use color as foreground color.background : colorβ Use color as background color.borderColor : colorβ Use color as border color.pointerColor : colorβ Use color as pointer color.bitmapDir : stringβ Look for bitmaps in path specified by string.border.color: colorβ Color of borders in the score displaytext.font: fontβ Font of text in the score displaytext.color: colorβ Color of text in the score displaytext.highlight: colorβ Color of highlighted text in the score displaytext.indent: intβ Indenting of text in the score displayscrollbar.width: intβ Width of the scrollbar in the score displayscrollbar.background: colorβ Color of the scrollbar backgroundscrollbar.thumb.height: int, scrollbar.thumb.width: intβ Size of the scrollbar thumbscrollbar.thumb.color: colorβ Color of the scrollbar thumbpanel.height: intβ Height of the help panel in the score displaypanel.font: fontβ Font of the help panel in the score displaybevel.widthβ Width of the Motif-like bevelssep.color: colorβ Color of the lines separating different score levels
π¦ SPECIAL BITMAPS π¦
In order to define your own bitmaps for xsokoban you only need to know the names of which files it is looking for. The standard bitmap files are:
man.xbmβ The player bitmap.goal.xbmβ The goal area bitmap.wall.xbmβ The standard wall bitmap.object.xbmβ The object that gets pushed.treasure.xbmβ The bitmap for the object when it is on the goal.saveman.xbmβ The bitmap for the player when it is on the goal.
To use the fancy walls option, you need the following additional files. (yes, all of them, she's thorough π )
lonewall.xbmβ a wall with connections on no sides.southwall.xbmβ a wall with only northern connectionsnorthwall.xbmβ a wall with only southern connectionseastwall.xbmβ a wall with only western connectionswestwall.xbmβ a wall with only eastern connectionsllcornerwall.xbmβ a wall with northern and eastern connectionsulcornerwall.xbmβ a wall with southern and eastern connectionslrcornerwall.xbmβ a wall with northern and western connectionsurcornerwall.xbmβ a wall with southern and western connectionsnorth_twall.xbmβ a wall with connections on all BUT northern sidesouth_twall.xbmβ a wall with connections on all BUT southern sideeast_twall.xbmβ a wall with connections on all BUT eastern sidewest_twall.xbmβ a wall with connections on all BUT western sidecenterwall.xbmβ A wall will connections on all four sides.
π BUGS π
- Auto bitmap resizing code doesn't take into account font sizes.
- Feedback on user error is poor (only beeps).
ngl those beeps are lowkey rude but we forgive her π
okay that's the whole page, bestie, you're officially xsokoban-pilled π this was MIT Lab for Computer Science, dated 3 January 1994, filed under XSOKOBAN(6) β vintage, iconic, one hundred percent ate πβ¨π
π¦ where this page comes from
- nixos 26.05: xsokoban 3.3c
- nixpkgs unstable: xsokoban 3.3c
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms