
                          ***  SIMPLE SOKOBAN  ***

                          http://simplesok.osdn.io

                    Copyright (C) 2014-2023 Mateusz Viste


Simple Sokoban is a (simple) Sokoban game aimed at playability and portability
across systems. It is written in ANSI C89, using SDL2 for user interactions.
I developed it primarily for Linux, but it should compile and work just fine
on virtually anything that has a C compiler and supports SDL2. A Windows build
is provided for Linux-deficient gamers.

 Features:
  - animated movements,
  - unlimited level solutions,
  - unlimited undos,
  - 3 embedded level sets,
  - support for external *.xsb levels (possibly RLE compressed),
  - support for levels of size up to 62x62,
  - copying levels to clipboard,
  - save/load,
  - skins supports,
  - ...


=== EXTERNAL LEVEL FILES =====================================================

Simple Sokoban can load levels from external *.xsb files. There are two ways
to load such file: either pass it as a parameter on command line, or drop the
file to the Simple Sokoban application window. The second method will work
only if your windowing system supports it.

Simple Sokoban is also able to load gzipped xsb files (xsb.gz).


=== COMMAND-LINE PARAMETERS ==================================================

Simple Sokoban accepts some command-line parameters. If a parameter is not
part of the known list of parameters, then Simple Sokoban assumes it is the
path to a XSB level file.

--framedelay=X      Adjusts the delay between rendered frames to X us. Use it
                    if you'd like to make Simple Sokoban slower/faster. The
                    default value is 10500. This value must be in the range
                    0..64000.

--framefreq=X       Adjusts the frequency at which frames should be displayed.
                    The default value is 15000, which means 'every 15000 us'.
                    This value must be in the range 1..1000000.

--skin=name         skin name to be used (default: antique3)
--skinlist          Displays the list of available skins


=== SKINS SUPPORT ============================================================

Simple Sokoban is distributed with a few skins and uses the "antique3" skin by
default. Skin files can be stored in a couple of different directories:

 * a skins/ subdirectory in SimpleSok's application directory
 * /usr/share/simplesok/skins/
 * a skins/ subdirectory in SimpleSok's user directory


=== KEY BINDINGS =============================================================

Simple Sokoban is though to react to keyboard keys that are well-known and
seem intuitive. However, for the sake of documentation, I present here below
the list of keys one can use when using Simple Sokoban:

  F1                - display help
  F2                - turn on/off graphical elements
  F3                - dump the level to clipboard
  F5/F7             - save/load game state
  Backspace         - undo last move
  R                 - restart the ongoing level
  S                 - play the solution (if available)
  CTRL+C            - copy current level state to clipboard
  CTRL+V            - paste moves from clipboard
  CTRL+UP/CTRL+DOWN - zoom in/out
  F11 or ALT+ENTER  - fullscreen on/off


=== CONTACT ==================================================================

Need to get in touch with me? You will find instructions about how to do so on
my web page: http://mateusz.viste.fr


=== CREDITS ==================================================================

Simple Sokoban has been written by Mateusz Viste. However, the project also
relies on the valuable work of other people:

 - Hiroyuki Imabayashi - The original creator of the Sokoban game
 - David W. Skinner - Designed the level sets embedded in Simple Sokoban
 - Gerry Wiseman - Default skin ("antique3")
 - Borgar Thorsteinsson - Fallback embedded skin ("yoshi")

Not forgetting Patrick Monnerat, who kindly contributed a set of high quality
patches in Simple Sokoban version 1.0.3.


=== CODE LICENSE =============================================================

The Simple Sokoban program is created by Mateusz Viste, who releases it under
the terms of the MIT license:

Copyright (C) 2014-2023 Mateusz Viste

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


=== LEVELS LICENSE ===========================================================

The levels embedded within SimpleSokoban are the work of David W. Skinner.
He kindly released them, allowing free distribution ("These sets may be freely
distributed provided they remain properly credited").
src: https://web.archive.org/web/20120627234900/users.bentonrea.com/~sasquatch


=== ART LICENSES =============================================================

Default graphics distributed with Simple Sokoban are based on "AntiqueDesk 3"
and "Nightshift" skins created by Gerry Wiseman. He has published them under
the GNU GPL.

The embedded fallback skin "Yoshi" is designed by Borgar Thorsteinsson and he
published it under the terms of the Creative Commons Attribution 3.0 license.
src: https://github.com/borgar/sokoban-skins/tree/master/yoshi-32


====================================================================== EOF ===
