CommandLineOptions.wiki
author sheepluva
Thu, 23 Mar 2023 20:47:32 +0000
changeset 2221 4bf8172a73a1
parent 2044 683467addd2e
permissions -rw-r--r--
TableOfContents: TableOfContents: Adjust two Entries

#summary Full list of command line switches for hedgewars, hwengine and server
#labels Documentation,Engine,Frontend

= Command-line options =
<wiki:toc max_depth="2" />

== Frontend ==
The frontend in Hedgewars refers to the main and all the other menus before an actual game has started. It does *not* refer to the part where the actual game takes place (see “Engine” for this).

Symtax: `hedgewars [OPTION …] [CONNECTSTRING]`

All command-line arguments are optional. When invoked without any command-line arguments, the Hedgewars frontend will start normally with standard directory locations.

`OPTION` is a sequence of one or more options (seperated by spaces. There are options that enable to load the data directory and the configuration directory in non-standard locations. The following options are available:

  * {{{--data-dir=[path containing 'hedgewars/Data']}}}: Data directory
  * {{{--config-dir=[path containing 'Demos' 'Saves' etc.]}}}: Configuration directory
  * {{{--help:}}}: Display help about command-line arguments and exit the program thereafter

The program exits if either one of the folders is not correct; quotes are optional, but needed if your path contains spaces.

Specify `CONNECTSTRING` if you want Hedgewars to join a server and possibly even a room on start. This must be a `hwplay` URL (see [HWPlaySchemeSyntax] to learn more about this).

=== Examples ===
This is an example on GNU/Linux on a shell (the dollar sign is not part of the input):

{{{
$ /usr/bin/hedgewars --data-dir="/opt/local/share/" --config-dir=".hedgewars/tesing config/"
}}}

This starts Hedgewars with the data directory `/opt/local/share/` and the configuration directory `.hedgewars/testing config/` (relative to the current working directory).

Another example:
{{{
$ /usr/bin/hedgewars hwplay://example.org
}}}

Makes Hedgewars join an alternative server `example.org` on start.

== Engine ==
The engine is the program which runs the actual game.

It is possible to start a replay or save file directly from the console issuing the standalone {{{hwengine}}} utility with a very simple syntax. 

=== Standard usage ===
{{{hwengine [options] <path to replay file>}}}

By default, `hwengine` will look in the current folder for game assets, if you wish to use another directory you should set the `--prefix` and `--user-prefix` options. See below for even more commands.

The replay file can be stored anywhere. Note that, as always, engine can only load replay files generated from the same Hedgewars version.

=== Advanced usage ===
It is possible to specify almost any settings by adding additional arguments:

  * {{{--prefix [path to Hedgewars data folder]}}} - Sets the path to the system game data folder
  * {{{--user-prefix [path to custom Hedgewars folder]}}} - Sets the path to the custom data folder to find game content
  * {{{--locale [language file]}}} - Sets the game language (en.txt for sample)
  * {{{--nick [string]}}} - Represents the user nickname
  * {{{--width [size]}}} - Starts the game with the given width (in pixels)
  * {{{--height [size]}}} - Starts the game with the given height (in pixels)
  * {{{--volume [level]}}} - Sets the volume level, possible values range from 0-100 (negative is muted)
  * {{{--nomusic}}} - Disables music
  * {{{--nosound}}} - Disables sound effects
  * {{{--fullscreen}}} - Starts game in fullscreen
  * {{{--showfps}}} - Shows a fps counter in the top right
  * {{{--altdmg}}} - Uses an alternative damage indicator
  * {{{--low-quality}}} - Lowers the game quality
  * {{{--stereo [type]}}} - Sets stereoscopic rendering type (1 to 14)
  * {{{--help}}} - Shows a list of command line options and exits the program directly after

==== More advanced usage ====
Generally you don't need to set these options but here they are for full documentation:

  * {{{--frame-interval [interval]}}} - Sets minimum interval (in ms) between each frame. Eg, 40 would make the game run at most 25 fps
  * {{{--raw-quality [flags]}}} - (For advanced users only). Manually specifies the reduced quality flags, see below. 
  * {{{--stats-only}}} - Outputs the round information without launching the game, useful for statistics only
  * {{{--fullscreen-width [size]}}} - Starts the game with the given width (in pixels) when fullscreen
  * {{{--fullscreen-height [size]}}} - Starts the game with the given height (in pixels) when fullscreen

Note: any modification to the command line arguments should be reflected in the autostart `.desktop` file, `game.cpp`, `GameInterfaceBridge.m`.

`--prefix location` is usually hardcoded at compile time, but should you changed the installation directory, then you can use this flag to override it; alternatively you can just specify `--user-prefix`.

Personal game data is by default contained in one of the following directories:

  * _Windows_: {{{%USERPROFILE%\Hedgewars}}}
  * _GNU/Linux_: {{{~/.hedgewars}}}
  * _macOS_: {{{~/Library/Application Support/Hedgewars}}}

`--raw-quality value` is determined by combining the values of the flags you wish to enable. Up-to-date variables (in hexadecimal) are online here: [https://hg.hedgewars.org/hedgewars/file/default/hedgewars/uConsts.pas#l62 uConsts.pas]

  * {{{qLowRes        = 1}}}
  * {{{rqBlurryLand   = 2}}}
  * {{{rqNoBackground = 4}}}
  * {{{rqSimpleRope   = 8}}}
  * {{{rq2DWater      = 16}}}
  * {{{rqAntiBoom     = 32}}}
  * {{{rqKillFlakes   = 64}}}
  * {{{rqSlowMenu     = 128}}}
  * {{{rqPlainSplash  = 256}}}
  * {{{rqClampLess    = 512}}}
  * {{{rqTooltipsOff  = 1024}}}
  * {{{rqDesyncVBlank = 2048}}}

E.g., to have blurry land and simple rope, you would use the number 10 (2+8).

There are some internal commands, such as `--internal`, `--port [int]`, that are not meant for command-line usage.

If you want to get your hands dirty and see how the engine interprets commands, you can check out the source code:
[https://hg.hedgewars.org/hedgewars/file/default/hedgewars/ArgParsers.inc ArgParsers.inc]

== Server ==

The server can be configured to run on non standard port or to run as separate process.

  * {{{--port=PORT}}} or {{{-p PORT}}}: Server listens on `PORT`
  * {{{--dedicated=BOOL}}} or {{{-d BOOL}}}: Spawn a separate process (`BOOL` is either “True” or “False”)
  * {{{--help}}}: Shows a short text explaining the command-line arguments and exists the program thereafter.