summary refs log tree commit diff homepage
path: root/docs/source/config.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/config.rst')
-rw-r--r--docs/source/config.rst129
1 files changed, 129 insertions, 0 deletions
diff --git a/docs/source/config.rst b/docs/source/config.rst
new file mode 100644
index 0000000..d3aed3f
--- /dev/null
+++ b/docs/source/config.rst
@@ -0,0 +1,129 @@
+Configuration
+=============
+
+Configuration Files
+-------------------
+
+At the time of writing, this is the default configuration file:
+
+.. code-block:: ini
+
+   [Graphics]
+   Screen width: 640
+   Screen height: 480
+   # FPS should not be greater than refresh rate.
+   Maximum FPS: 60
+
+   [Sound]
+   Muted: no
+   # Volume must be between 0.0 and 1.0.
+   Music volume: 1.0
+   # Use space music background, which sounds cold and creepy.
+   Space theme: no
+
+   [Control]
+   # Touch-friendly control
+   Touch: no
+   # Input values should be either from Mouse1 to Mouse3 or a keyboard key
+   # and they are case-insensitively read.
+   # Aliases for special keys are listed here (without the K_ part):
+   # http://www.pygame.org/docs/ref/key.html
+   # Key combinations are not supported.
+   New game: F2
+   Toggle pause: p
+   Toggle mute: m
+   Move left: a
+   Move right: d
+   Move up: w
+   Move down: s
+   Long-range attack: Mouse1
+   Close-range attack: Mouse3
+
+   [Record]
+   # Directory to write record of game states, leave blank to disable.
+   Directory:
+   # Number of snapshots per second. This is preferably from 3 to 60.
+   Frequency: 30
+
+   [Server]
+   # Enabling remote control will disable control via keyboard and mouse.
+   Enable: no
+   Host: localhost
+   Port: 42069
+   # Timeout on blocking socket operations, in seconds.
+   Timeout: 1.0
+   # Disable graphics and sound (only if socket server is enabled).
+   Headless: no
+
+By default, Brutal Maze also then tries to read site (system-wide)
+and user configuration.
+
+Site Config File Location
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* Apple macOS: ``/Library/Application Support/brutalmaze/settings.ini``
+* Other Unix-like: ``$XDG_CONFIG_DIRS/brutalmaze/settings.ini`` or
+  ``/etc/xdg/brutalmaze/settings.ini``
+* Microsoft Windows:
+
+    * XP: ``C:\Documents and Settings\All Users\Application Data\brutalmaze\settings.ini``
+    * Vista: Fail! (``C:\ProgramData`` is a hidden *system* directory,
+      however if you use Windows Vista, please file an issue telling us
+      which error you receive)
+    * 7 and above: ``C:\ProgramData\brutalmaze\settings.ini``
+
+User Config File Location
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* Apple macOS: ``~/Library/Application Support/brutalmaze/settings.ini``
+* Other Unix-like: ``$XDG_CONFIG_HOME/brutalmaze/settings.ini`` or
+  ``~/.config/brutalmaze/settings.ini``
+* Microsoft Windows (roaming is not supported until someone requests):
+
+    * XP: ``C:\Documents and Settings\<username>\Application Data\brutalmaze\settings.ini``
+    * Vista and above: ``C:\Users\<username>\AppData\Local\brutalmaze\settings.ini``
+
+Command-Line Arguments
+----------------------
+
+.. code-block:: console
+
+   $ brutalmaze --help
+   usage: brutalmaze [options]
+
+   optional arguments:
+     -h, --help            show this help message and exit
+     -v, --version         show program's version number and exit
+     --write-config [PATH]
+                           write default config and exit, if PATH not specified use stdout
+     -c PATH, --config PATH
+                           location of the configuration file
+     -s X Y, --size X Y    the desired screen size
+     -f FPS, --max-fps FPS
+                           the desired maximum FPS
+     --mute, -m            mute all sounds
+     --unmute              unmute sound
+     --music-volume VOL    between 0.0 and 1.0
+     --space-music         use space music background
+     --default-music       use default music background
+     --touch               enable touch-friendly control
+     --no-touch            disable touch-friendly control
+     --record-dir DIR      directory to write game records
+     --record-rate SPF     snapshots of game state per second
+     --server              enable server
+     --no-server           disable server
+     --host HOST           host to bind server to
+     --port PORT           port for server to listen on
+     -t TIMEOUT, --timeout TIMEOUT
+                           socket operations timeout in seconds
+     --head                run server with graphics and sound
+     --headless            run server without graphics or sound
+
+First, Brutal Mazes read the default settings, then it try to read site and
+user config whose locations are shown above.  These files are listed as fallback
+of the ``--config`` option and their contents are fallback for other options
+(if they are absent default values are used instead).  We don't support control
+configuration via CLI because that is unarguably ugly.
+
+If ``--config`` option is set, Brutal Maze parse it before other command-line
+options.  Later-read preferences will override previous ones.