Liquid War 6


Up: (dir)

Liquid War 6, a unique multiplayer wargame.

Introduction

User's manual

Hacker's guide

Reference

Appendices

Table of Contents


Next: , Up: Top

1 Introduction

Read this chapter to discover Liquid War 6.


Next: , Up: Introduction

1.1 In a nutshell

Liquid War 6 is a unique multiplayer wargame. Your army is a blob of liquid and you have to try and eat your opponents. Rules are very simple yet original, they have been invented by Thomas Colcombet. It is possible to play alone against the computer but the game is really designed to be played with friends, on a single computer, on a LAN, or on Internet.

An older version, Liquid War 5, is available, but is not part of the GNU Project. Only Liquid War 6 is part of the GNU Project, it is a complete rewrite.

Yor more information, you can read the Wikipedia article about Liquid War.


Next: , Previous: In a nutshell, Up: Introduction

1.2 Project status

As of today, the game is in beta state. It can be installed, and you can toy arround with, but it's far from being complete.

What works:

In the near future:

In the long run:


Previous: Project status, Up: Introduction

1.3 How you can help

1.3.1 Help GNU

Please remember that development of Liquid War 6 is a volunteer effort, and you can also contribute to its development. For information about contributing to the GNU Project, please read How to help GNU.

1.3.2 Todo list

Here's a short list of todo items. It is probably too early to start hacking the core engine itself, for it is still under heavy development, might undergo major rewrites, and it's hard for documentation to keep up with the reality of the code. However, there are still many things to do.

Feel free to join the mailing-lists or contact Christian Mauduit if you are interested.


Next: , Previous: Introduction, Up: Top

2 User's manual

The Liquid War 6 user's manual hopefully contains any usefull information to install the program and play the game. If you just want to enjoy Liquid War 6 without diving into map creation and programming, this is just for you.


Next: , Up: User's manual

2.1 Mailing lists

2.1.1 General discussion

The main discussion list is <help-liquidwar6@gnu.org>, and is used to discuss all aspects of Liquid War 6, including installation, development, game strategies, and whatever subject players and hackers might want to talk about, provided it is Liquid War 6 related. If you don't know on which list to subscribe, this is the one.

To subscribe to it, please send an empty mail with a Subject: header line of just "subscribe" to the -request list, that is <help-liquidwar6-request@gnu.org>.

You can also subscribe to the list using the Mailman web interface for help-liquidwar6 and consult help-liquidwar6 archives.

2.1.2 Announcements

Announcements about LiquidWar 6 are made on <info-liquidwar6@gnu.org>. Subscribe to it to be informed of major releases, and other significant news.

To subscribe to it, please send an empty mail with a Subject: header line of just "subscribe" to the -request list, that is <info-liquidwar6-request@gnu.org>.

You can also subscribe to the list using the Mailman web interface for info-liquidwar6 and consult info-liquidwar6 archives.

Please also consider reading the latest news on Savannah.

2.1.3 Bugs

There is also a special list used for reporting bugs, <bug-liquidwar6@gnu.org>. Please try and describe the bug as precisely as possible. The more accurate the description, the more chances it will get to be fixed.

While this is the standard GNU way of reporting bugs, modern SPAM standards make it very hard to filter real bug reports from junk on this list. It is more convenient to report bugs on Savannah using a web interface.


Next: , Previous: Mailing lists, Up: User's manual

2.2 Getting the game

2.2.1 Download source

Liquid War 6 can be found on http://download.savannah.gnu.org/releases/liquidwar6/.

Downloading the latest file from this place, and compile it yourself on your computer with a classical ./configure && make && make install is the recommended way to install Liquid War 6.

Latest work in progress versions can be obtained with GNU Arch. Here's a typical set of commands which will fetch the latest version:

     tla register-archive http://arch.sv.gnu.org/archives/liquidwar6
     tla get -A liquidwar6@sv.gnu.org liquidwar6--beta

2.2.2 Download binaries

Some binary packages are available. As of today, only GNU/Linux based systems are supported, through Debian .deb and Red Hat RPM packages.

Using these files might save you time installing the game, but installing from source is still the safest and best supported way to install the game, as it is still in beta stage. Binary are also not necessarly available for the latest, most up to date versions of the game.

The list of all the available downloads is accessible on http://www.ufoot.org/liquidwar/v6/download.

Check out the MD5 checksums and GnuPG signatures to verify the integrity and authenticity of the files you download.


Next: , Previous: Getting the game, Up: User's manual

2.3 Installation

This section covers installation from source. Other ways of installing the program are not described here.

2.3.1 Requirements

All these libraries are mandatory to compile the game. Liquid War 6 won't compile, let alone run, without them. Some of them could probably be replaced by equivalent tools, but this would certainly require a programming effort and some changes in Liquid War 6 source code.

2.3.2 Optional libraries

While all these libraries are theorically optional (the game will successfully compile without them), you'll obviously need, for instance, one graphics backend. Otherwise, you'll simply have no display. This is not acceptable. As of today, one can reasonnably consider all SDL-related libraries are required. The rest is truely optional.

2.3.3 Compiling

Liquid War 6 uses GNU Automake, Autoconf and GNU Libtool. Once the requirements and optional libraries are installed on your system, run:

     ./configure
     make
     make install

Liquid War 6 supports the standard ./configure --prefix= option (in fact, it supports much more than that) so you can install the game in any directory.


Next: , Previous: Installation, Up: User's manual

2.4 Troubleshooting

2.4.1 Compilation problems

A quick survival guide:

If none of these help, consider reporting a bug, or search the mailing-lists for help.

2.4.2 Check installation

Here's a check-list to ensure that your installation is correct:

2.4.3 Problems running the game

Now, game looks correctly installed, but you have problems running it.


Next: , Previous: Troubleshooting, Up: User's manual

2.5 How to play


Next: , Previous: How to play, Up: User's manual

2.6 Strategy tips


Next: , Previous: Strategy tips, Up: User's manual

2.7 User interface


Next: , Previous: User interface, Up: User's manual

2.8 Network games


Next: , Previous: Network games, Up: User's manual

2.9 Graphics


Next: , Previous: Graphics, Up: User's manual

2.10 Sound & music


Next: , Previous: Sound & music, Up: User's manual

2.11 Config file


Next: , Previous: Config file, Up: User's manual

2.12 Logs


Previous: Logs, Up: User's manual

2.13 Report bugs


Next: , Previous: User's manual, Up: Top

3 Hacker's guide

This hacker's guide is for anyone who is curious about the game, and wants to know how it works. It covers many aspects from simple map creation to technical program internals. A great effort has been done in Liquid War 6 so that it should be much more hackable than previous versions. Any feedback is welcome.


Next: , Up: Hacker's guide

3.1 Designing levels


Next: , Previous: Designing levels, Up: Hacker's guide

3.2 Architecture


Next: , Previous: Architecture, Up: Hacker's guide

3.3 About mod-gl


Next: , Previous: About mod-gl, Up: Hacker's guide

3.4 Compilation tips


Next: , Previous: Compilation tips, Up: Hacker's guide

3.5 Coding guidelines


Next: , Previous: Coding guidelines, Up: Hacker's guide

3.6 Using the console


Next: , Previous: Using the console, Up: Hacker's guide

3.7 Advanced tweaking


Next: , Previous: Advanced tweaking, Up: Hacker's guide

3.8 Writing modules


Next: , Previous: Writing modules, Up: Hacker's guide

3.9 Use as a library


Next: , Previous: Use as a library, Up: Hacker's guide

3.10 Network protocol


Previous: Network protocol, Up: Hacker's guide

3.11 Using GNU Arch


Previous: Hacker's guide, Up: Top

4 Reference

This chapter is a technical reference. Most of its content is self-generated by the program itself. That is to say, most if its content is already available to you if you have the game installed. Running liquidwar6 --list and liquidwar6 --about=<keyword> is very likely to give you the very same informations, the advantage being that you'll be sure the information is up-to-date and corresponds to the exact version of the program you have. However, publishing this in a reader-friendly way is convenient, plus it enables web search engines to harvest the content.


Next: , Up: Reference

4.1 Basic options

— Command-line option: –about=<keyword>

Will allow you to get informations about a given keyword. Let's say that, for instance, you want informations about the keyword 'map-path'. Simply run 'liquidwar6 –about=map-path'. Note that this internal self-documentation system can describe command line switches as well as XML config file parameters or environment variables, and even some Guile script functions. The '–list' command line switch will give you the list of all available keywords.

— Command-line option: –copyright

Returns the copyright notice for the program.

— Command-line option: –defaults

Clears the config file and run the game with default settings. The difference with '–reset' is that '–defaults' runs the game, while '–reset' does not.

— Command-line option: –help

Returns a short help for the program.

— Command-line option: –list

Returns the list of all keywords which can be queried for information. This includes command-line options, environment variables, and so on. This is the companion option of '–about'. Results obtained with '–list' can be passed to '–about'.

— Command-line option: –pedigree

Display all build values, these are general constants which can help debugging, tracing what binary you are running, and so on. It's a good idea to take a look at the output of 'pedigree' if you have problems running the game.

— Command-line option: –reset

Clears the config file so that the game will run with defaults next time. The idea is to get rid of traces of previous executions.

— Command-line option: –test

Runs a (hopefully) complete test suite which will call most internal Liquid War 6 functions and check out wether they work, in a simple context, without any game interference. Usefull for troubleshooting.

— Command-line option: –version

Returns the version of the program, as defined by the GNU Coding Standards.


Next: , Previous: Basic options, Up: Reference

4.2 Doc options

— Command-line option: –example-options-xml

Dumps on stdout an example options.xml file. Such a file is normally shipped with the game. It is indeed generated using this command.

— Command-line option: –example-style-xml

Dumps on stdout an example style.xml file. Such a file is normally shipped with the game. It is indeed generated using this command.

— Command-line option: –list-aliases

List the keyword aliases. These are here for convenience.

— Command-line option: –list-doc

List documentation-related command line options. These commands allow you to list all the keywords related to a given domain.

— Command-line option: –list-funcs

List the C-functions which are exported to Guile, thus usable in scripts.

— Command-line option: –list-graphics

List graphics options (resolution, fullscreen...).

— Command-line option: –list-hooks

List user-modifiable hooks.

— Command-line option: –list-input

List input (AKA controls) related options. Use these to change keyboard, joystick and mouse settingds.

— Command-line option: –list-map

List map-related entries, excluding options.xml and style.xml entries.

— Command-line option: –list-map-options

List 'options.xml' entries. These parameters enable you to modify the gameplay.

— Command-line option: –list-map-style

List 'style.xml' entries. These parameters enable you to modify the aspect of the game.

— Command-line option: –list-network

List network options.

— Command-line option: –list-path

List parameters which allow you to override the defaults of the game, and force the game your own file paths and directories.

— Command-line option: –list-players

List player-related entries, that is to say 'who plays'.

— Command-line option: –list-quick

List quick help entries, this includes the GNU standard options and a few troubleshooting tools.

— Command-line option: –list-show

List command-line options which will display on the console many internal parameters. Usefull when debugging.

— Command-line option: –list-sound

List sound options (volume...).

— Command-line option: –list-tuning

List advanced options which can be used for fine-tuning the game.


Next: , Previous: Doc options, Up: Reference

4.3 Show options

— Command-line option: –show-build-cflags

Shows what value you should put in 'CFLAGS' (environment variable) if you want to compile programs that use Liquid War 6 as a library, and include 'liquidwar6.h'.

— Command-line option: –show-build-codename

Shows the codename associated with this version, generally the name of someone famous who is war-related (a general, an emperor...).

— Command-line option: –show-build-configure-args

Shows the arguments that have been passed to the GNU Autoconf './configure' script when building the program. This can be very usefull if you want to know how the program has been built.

— Command-line option: –show-build-copyright

Shows a very short copyright notice.

— Command-line option: –show-build-datadir

Shows the 'datadir' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local/share'. This is the generic, non Liquid War 6 specific data directory. Liquid War 6 related data is stored elsewhere (usually in a sub-directory), see the 'data-dir' switch for more information. 'datadir' is not 'data-dir'. That's the point.

— Command-line option: –show-build-date

Shows the date when the binary was compiled.

— Command-line option: –show-build-docdir

Shows the 'docdir' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local/share/doc/liquidwar6'.

— Command-line option: –show-build-hostname

Shows the name of the host where the binary was compiled.

— Command-line option: –show-build-includedir

Shows the 'includedir' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local/include'.

— Command-line option: –show-build-ldflags

Shows what value you should put in 'LDFLAGS' (environment variable) if you want to link programs against libliquidwar6.

— Command-line option: –show-build-libdir

Shows the 'libdir' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local/lib'. This is the generic, non Liquid War 6 specific library directory. Dedicated Liquid War 6 modules are stored elsewhere (usually in a sub-directory), see the 'mod-dir' switch for more information.

— Command-line option: –show-build-license

Shows the license of the program (GNU GPL v3 or later).

— Command-line option: –show-build-localedir

Shows the 'localedir' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local/share/locale'.

— Command-line option: –show-build-md5sum

Shows the MD5 checksum, which has been calculated from the C source files. Complementary with 'show-build-stamp'.

— Command-line option: –show-build-package-name

Shows the package name, that is, 'Liquid War 6'.

— Command-line option: –show-build-package-string

Shows the package string, that is, 'Liquid War 6 <version>

— Command-line option: –show-build-package-tarname

Shows the package tarname, that is, liquidwar6.

— Command-line option: –show-build-prefix

Shows the 'prefix' value as passed to the GNU Autoconf './configure' script when compiling the program. Default is '/usr/local'.

— Command-line option: –show-build-stamp

Shows the build stamp. A very usefull value, more precise than the version to track down binaries. It is incremented each time the core C code is updated. It won't reflect all the programs for it does not take scripts in account, but if you are running a work-in-progress version, it might be very convenient to use this to know what your are running exactly.

— Command-line option: –show-build-target-cpu

Shows the target CPU, as defined by 'target_cpu' in GNU Autoconf.

— Command-line option: –show-build-target-os

Shows the target OS, as defined by 'target_os' in GNU Autoconf.

— Command-line option: –show-build-time

Shows the time when the binary was compiled.

— Command-line option: –show-build-top-srcdir

Shows the top source directory on the machine where the binary was compiled.

— Command-line option: –show-build-version

Shows the version. Note that this is different from the standard GNU 'version' command line option which shows a complete message with a short copyright notice. This one will just return the version, without the package tarname or anything else.

— Command-line option: –show-config-file

Shows the config file path. Default is '$HOME/.liquidwar6/config.xml'.

— Command-line option: –show-data-dir

Shows the data directory path. This is where the games searches for most of its data,the most important exception being maps, which are stored elsewhere. Default is '/usr/local/share/liquidwar6-<version>/data'.

— Command-line option: –show-default-config-file

Shows the default config file path. Default is '$HOME/.liquidwar6/config.xml'.

— Command-line option: –show-default-data-dir

Shows the default data directory path. This is where the games searches for most of its data,the most important exception being maps, which are stored elsewhere. Default is '/usr/local/share/liquidwar6-<version>/data'.

— Command-line option: –show-default-log-file

Shows the default log file path. Default is '$HOME/.liquidwar6/log.csv'.

— Command-line option: –show-default-map-dir

Shows the default map directory. This is where builtin maps are stored. Default is '/usr/local/share/liquidwar6-<version>/map'.

— Command-line option: –show-default-map-path

Shows the default map search path. This is where the game searches for maps. It's the combination of command-line arguments and builtin paths. Might return more directories than the one specified in a single 'map-path=dir1:dir2' argument.

— Command-line option: –show-default-mod-dir

Shows the default module directory path. This is where all dynamically loaded modules are stored. Default is '/usr/local/lib/liquidwar6-<version>'.

— Command-line option: –show-default-prefix

Shows the default prefix used. This should logically be the value passed to the GNU Autoconf ./configure script when building the game. Most other path are deduced from this one. Default is '/usr/local'.

— Command-line option: –show-default-script-file

Shows the default main script file path. This file is very important, since the program is more or less a hudge scheme interpreter, and this file is the file loaded by Guile. In short, it is the main program. Default is '/usr/local/share/liquidwar6-<version>/script/liquidwar6.scm'.

— Command-line option: –show-default-user-dir

Shows the default user directory path. This is where run-time data, config files, log files, are stored. Default is '$HOME/.liquidwar6/'.

— Command-line option: –show-log-file

Shows the log file path. Default is '$HOME/.liquidwar6/log.csv'.

— Command-line option: –show-map-dir

Shows the map directory. This is where builtin maps are stored. Default is '/usr/local/share/liquidwar6-<version>/map'.

— Command-line option: –show-map-path

Shows the map search path. This is where the game searches for maps. It's the combination of command-line arguments and builtin paths. Might return more directories than the one specified in a single 'map-path=dir1:dir2' argument.

— Command-line option: –show-mod-dir

Shows the module directory path. This is where all dynamically loaded modules are stored. Default is '/usr/local/lib/liquidwar6-<version>'.

— Command-line option: –show-prefix

Shows the prefix used. This should logically be the value passed to the GNU Autoconf ./configure script when building the game. Most other path are deduced from this one. Default is '/usr/local'.

— Command-line option: –show-script-file

Shows the main script file path. This file is very important, since the program is more or less a hudge scheme interpreter, and this file is the file loaded by Guile. In short, it is the main program. Default is '/usr/local/share/liquidwar6-<version>/script/liquidwar6.scm'.

— Command-line option: –show-user-dir

Shows the user directory path. This is where run-time data, config files, log files, are stored. Default is '$HOME/.liquidwar6/'.


Next: , Previous: Show options, Up: Reference

4.4 Path options

— Command-line option: –config-file=<value>
— Environment variable: LW6_CONFIG_FILE

Set the config file path. This enables you to use whatever config file you like, keeping all other informations in the same place. Default is '$HOME/.liquidwar6/config.xml'.

— Command-line option: –data-dir=<value>
— Environment variable: LW6_DATA_DIR

Set the data directory. By changing ths value you'll be able to use an alternative data directory. Default is '/usr/local/share/liquidwar6-<version>/data'.

— Command-line option: –log-file=<value>
— Environment variable: LW6_LOG_FILE
— XML key: log-file

Set the log file path. This enables you to use whatever log file you like, keeping all other informations in the same place. Default is '$HOME/.liquidwar6/log.csv'.

— Command-line option: –map-dir=<value>
— Environment variable: LW6_MAP_DIR

Set the map directory path. By changing this value you'll be able to play with your own maps in your own directory. Note that there are other ways to achieve that, but using this option will work. However, a side effect is that you might not see builtin maps anymore. Default is '/usr/local/share/liquidwar6-<version>/map'.

— Command-line option: –map-path=<value>
— Environment variable: LW6_MAP_PATH
— XML key: map-path

Set the map search path. By changing this value you'll be able to play with your own maps in your own directory. This is different from 'map-dir', since it includes 'map-dir', plus it adds a number of other search paths. Unlike most other parameters, the values given from the command-line, from the environment variables, or from the config file, are not overwritten, but appended. That is to say if you specify a 'map-path' with the command-line argument 'map-path=path', but also define the 'LW6_MAP_PATH' value and finally edit 'config.xml' to change the 'map-path' entry in it, you'll end up with the game searching for maps in all these directories. Additionnally, 'map-dir' and '<user-dir>/map' will always be in the list. Any given value can itself include several pathes, separated by the path separator. This separator is ':' on GNU/Linux, and ';' on Microsoft Windows. For instance, on a GNU/Linux box, you could use the command-line argument 'map-path=/foo/bar/map:/home/user/map/:/map'.

— Command-line option: –mod-dir=<value>
— Environment variable: LW6_MOD_DIR

Set the module directory path. By changing this you will load dynamic shared libraries (game specific modules such as the graphical backend) from an alternative place. Use this at your own risks, for there can always be a binary incompatibility. You've been warned. Default is '/usr/local/lib/liquidwar6-<version>'.

— Command-line option: –prefix=<value>
— Environment variable: LW6_PREFIX

Override the prefix value given to the GNU Autoconf ./configure script when building the game. Not all path will be changed, some of them might remain the same, for instance message translations (localedir). But most game-specific data including maps, graphics, sounds, will be searched according to the new given parameter. Default is '/usr/local'.

— Command-line option: –script-file=<value>
— Environment variable: LW6_SCRIPT_FILE

Set the main script file path. This file is very important, since the program is more or less a hudge scheme interpreter, and this file is the file loaded by Guile. In short, it is the main program. Default is '/usr/local/share/liquidwar6-<version>/script/liquidwar6.scm'.

— Command-line option: –user-dir=<value>
— Environment variable: LW6_USER_DIR
— XML key: user-dir

Set the user directory path. This is where run-time data, config files, log files, are stored. If you override this value, other parameters such as where the config and log files reside, will change. Default is '$HOME/.liquidwar6'.


Next: , Previous: Path options, Up: Reference

4.5 Graphics options

— Command-line option: –display-fps=<value>
— Environment variable: LW6_DISPLAY_FPS
— XML key: display-fps

Set this to 'true' to display the number of frames per second. When this gets too low... play a smaller map, buy a new computer or contribute and hack Liquid War 6 so that it runs faster!

— Command-line option: –fullscreen=<value>
— Environment variable: LW6_FULLSCREEN
— XML key: fullscreen

Force the game to fun fullscreen. Note that the graphics backend might ignore this hint.

— Command-line option: –height=<value>
— Environment variable: LW6_HEIGHT
— XML key: height

Run the game with the given screen height.Note that the graphics backend might ignore this hint.Use with its companion option 'width'.

— Command-line option: –width=<value>
— Environment variable: LW6_WIDTH
— XML key: width

Run the game with the given screen width. Note that the graphics backend might ignore this hint.Use with its companion option 'height'.


Next: , Previous: Graphics options, Up: Reference

4.6 Sound options

— Command-line option: –music-volume=<value>
— Environment variable: LW6_MUSIC_VOLUME
— XML key: music-volume

Set the music volume.This is a floating point value.0 is mute.Maximum value is 1.

— Command-line option: –sound-volume=<value>
— Environment variable: LW6_SOUND_VOLUME
— XML key: sound-volume

Set the sound volume.This is a floating point value.0 is mute.Maximum value is 1.


Next: , Previous: Sound options, Up: Reference

4.7 Network options


Next: , Previous: Network options, Up: Reference

4.8 Map parameters

4.8.1 Choosing the map

— Command-line option: –chosen-map=<value>
— Environment variable: LW6_CHOSEN_MAP
— XML key: chosen-map

The last map chosen by the player, locally. This is the map which will be used for a quick-start game, a local game, or a game started as a server.

4.8.2 Map options (options.xml)

— Command-line option: –bot-nb-move-steps=<value>
— Environment variable: LW6_BOT_NB_MOVE_STEPS
— XML key: bot-nb-move-steps

How many steps a bot move will take. This means, once the bot has chosen a direction, in how many rounds it will go there. Probably a temporary parameter until clever bot behavior is implemented.

— Command-line option: –bot-wait-between-moves=<value>
— Environment variable: LW6_BOT_WAIT_BETWEEN_MOVES
— XML key: bot-wait-between-moves

How many rounds a bot will wait before chosing a different destination. Probably a temporary parameter until clever bot behavior is implemented.

— Command-line option: –cursor-pot-init=<value>
— Environment variable: LW6_CURSOR_POT_INIT
— XML key: cursor-pot-init

Defines the cursor potential at startup. Not really any reason to change it. Theorically, there could be maps where the default value doesn't fit, but none has been seen yet.

— Command-line option: –fighter-attack=<value>
— Environment variable: LW6_FIGHTER_ATTACK
— XML key: fighter-attack

Defines how hard fighters will attack others, that is, in one attack, how many life-points the attacked fighter will loose. Increasing this will cause your opponents to melt faster when you attack them. With a low value, it will take ages to take on your opponents. Different styles of game. Can radically change the gameplay.

— Command-line option: –fighter-defense=<value>
— Environment variable: LW6_FIGHTER_DEFENSE
— XML key: fighter-defense

Defines how fast fighters will regenerate after an attack. When this parameter is set low, an attacked fighter, which is very dark and almost dead will take a very long time to regain energy. If the parameter is set high, it can almost instantaneously regain energy.

— Command-line option: –fighter-new-health=<value>
— Environment variable: LW6_FIGHTER_NEW_HEALTH
— XML key: fighter-new-health

Defines how healthy fighters will be when they appear on the map. This can be either at the beginning of the game of when a fighter changes team. Setting this low will allow battefields to switch from one side to another very fast, for freshly gained fighters will be feeble and very likely to return to their original camp.

— Command-line option: –max-cursor-pot=<value>
— Environment variable: LW6_MAX_CURSOR_POT
— XML key: max-cursor-pot

Defines the maximum cursor potential. Not really any reason to change it. Any high value should produce the same results. Low values might reveal algorithm bugs and inconsistencies.

— Command-line option: –max-cursor-pot-offset=<value>
— Environment variable: LW6_MAX_CURSOR_POT_OFFSET
— XML key: max-cursor-pot-offset

Defines the maximum cursor potential offset. The idea is that in some cases, the potential of a cursor can increase in burst mode, for instance to make this cursor more important than others, so that fighters rally to it, neglecting other cursors (talking about a multi-cursor controlled team). This parameter is here to limit this burst effect and avoid bugs.

— Command-line option: –max-map-height=<value>
— Environment variable: LW6_MAX_MAP_HEIGHT
— XML key: max-map-height

Allows you to give a maximum map height. When designing a map you might wonder: this is dumb I'm conceiving this map I know its height, why should I limit it? Now think of the play who plays on a old slowish computer with a tiny screen. He might redefine this himself, and does not necessarly wishes to fire Gimp to rescale the map.

— Command-line option: –max-map-surface=<value>
— Environment variable: LW6_MAX_MAP_SURFACE
— XML key: max-map-surface

Allows you to give a maximum map surface. Map surface is simply (width * height). This parameter is just here to save you the hassle of defining both 'max-map-width' and 'max-map-height' in a consistent manner.

— Command-line option: –max-map-width=<value>
— Environment variable: LW6_MAX_MAP_WIDTH
— XML key: max-map-width

Allows you to give a maximum map width. When designing a map you might wonder: this is dumb I'm conceiving this map I know its width, why should I limit it? Now think of the play who plays on a old slowish computer with a tiny screen. He might redefine this himself, and does not necessarly wishes to fire Gimp to rescale the map.

— Command-line option: –max-nb-teams=<value>
— Environment variable: LW6_MAX_NB_TEAMS
— XML key: max-nb-teams

Defines the maximum number of teams who can enter the game. Really makes sense in network games. Default value should fit for most cases.

— Command-line option: –max-round-delta=<value>
— Environment variable: LW6_MAX_ROUND_DELTA
— XML key: max-round-delta

This is the companion value of 'round-delta'. Will put an absolute limit to the delta, which (what did you think?) is of course incremented in some cases by the core algorithm. If in doubt, don't touch.

— Command-line option: –max-zone-size=<value>
— Environment variable: LW6_MAX_ZONE_SIZE
— XML key: max-zone-size

Defines the maximum zone size, which is an internal and rather technical parameter. The idea is that to optimize things, Liquid War 6 divides the battlefield in squares, where it can, and tries to make these squares as big as possible, the idea being that everywhere in this square, fighters follow the same intructions. Just a technical optimization. The problem is that setting it too high will reveal the optimization and its tradeoffs to the player, who will see the fighter behave strangely, following invisible paths. Plus, it's ugly. Depending on your tastes (speed, look'n'feel) you'll prefer something nice or something fast. Note that anyways passed a certain value, this does not optimize anything anymore. In doubt, don't touch it.

— Command-line option: –min-map-height=<value>
— Environment variable: LW6_MIN_MAP_HEIGHT
— XML key: min-map-height

Allows you to give a minimum map height. When designing a map you might wonder: this is dumb I'm conceiving this map I know its height, why should I limit it? Now think of the player who decided to play with highly-defined maps because he has a super calculator and a hudge screen. He might redefine this himself, and does not necessarly wishes to fire Gimp to rescale the map.

— Command-line option: –min-map-surface=<value>
— Environment variable: LW6_MIN_MAP_SURFACE
— XML key: min-map-surface

Allows you to give a minimum map surface. Map surface is simply (width * height). This parameter is just here to save you the hassle of defining both 'min-map-width' and 'min-map-height' in a consistent manner.

— Command-line option: –min-map-width=<value>
— Environment variable: LW6_MIN_MAP_WIDTH
— XML key: min-map-width

Allows you to give a minimum map width. When designing a map you might wonder: this is dumb I'm conceiving this map I know its width, why should I limit it? Now think of the player who decided to play with highly-defined maps because he has a super calculator and a hudge screen. He might redefine this himself, and does not necessarly wishes to fire Gimp to rescale the map.

— Command-line option: –moves-per-round=<value>
— Environment variable: LW6_MOVES_PER_ROUND
— XML key: moves-per-round

Defines how many times fighters move per round. Increasing this will just make fighters move faster, but won't change anything for the rest, that is keyboard and mouse responsivity, and network traffic will stay the same. Multiplying the number of moves per round by the number of rounds per second will give the number of moves per second, which is, in fact, how fast fighters move on the screen.

— Command-line option: –nb-attack-tries=<value>
— Environment variable: LW6_NB_ATTACK_TRIES
— XML key: nb-attack-tries

Defines how many tries a fighter will do before giving-up attacking and choosing another behvior (defense). By tries we mean: how many directions it will try. Going North? Going North-West? Setting this to a low value will make fighters somewhat less aggressive. This idea is that they'll prefer to switch to the next option, that is, defense/regeneration, if there's no opponent right in front of them.

— Command-line option: –nb-defense-tries=<value>
— Environment variable: LW6_NB_DEFENSE_TRIES
— XML key: nb-defense-tries

Defines how many tries a fighter will do before giving-up attacking and choosing another behavior (do nothing). By tries we mean: how many directions it will try. Going North? Going North-West? Setting this to a low value, you'll need a very compact pack of fighters for regeneration to operate, else fighters will hang arround unhealthy.

— Command-line option: –nb-move-tries=<value>
— Environment variable: LW6_NB_MOVE_TRIES
— XML key: nb-move-tries

Defines how many tries a fighter will do before giving-up moving and choosing another behvior (attack or defense). By tries we mean: how many directions it will try. Going North? Going North-West? Setting this to a low value, your fighters will look very stubborn and always try to move in one direction, neglecting the fact that they could dodge. This can lead to queues of fighters and other strange behaviors. On the other hand, setting it too high will cause fighter to always avoid the enemy, and groups of fighters will just pass each other without any fight. Matter of taste.

— Command-line option: –respawn-team=<value>
— Environment variable: LW6_RESPAWN_TEAM
— XML key: respawn-team

Defines what to do when a team dies. If set to 0, team disappears forever, if set to 1, team reappears automatically with fresh fighters. It's a deathmatch mode, where the winner is not the one who stays alive the longest time, since it makes no real sens in this case, but the one who has died less often than others.

— Command-line option: –round-delta=<value>
— Environment variable: LW6_ROUND_DELTA
— XML key: round-delta

Conditions by how much the cursor potential will be incremented each time gradient is spreaded. Sounds cryptic? It is. The idea is that at each time you move your cursor of 1 pixel, theorically, you'll need in the worst case to move of 1 more pixel to reach any point on the map. Of course this is not true but this is the default asumption, and gradient spread will fix that. Only in Liquid War 6 this is not even the worst case, for you can control your cursor with the mouse and cross walls. Whenever you cross a wall, you might have done a great distance from the fighters' point of view, if the map is a maze. Thus this parameter, which corrects things, experience shows it does give acceptable results to increase the cursor potential by more than one at each turn. Toy arround with this if you find fighters take wrong paths on some given map. If in doubt, don't touch.

— Command-line option: –rounds-per-sec=<value>
— Environment variable: LW6_ROUNDS_PER_SEC
— XML key: rounds-per-sec

Defines the overall speed of the game. All other settings being equal, raising this value will cause the game to behave faster. Everything will be faster, except probably the display since your computer will calculate more game positions in a given time and spend more CPU time. It will also increase network traffic. Values between 10 and 50 really make sense.

— Command-line option: –side-attack-factor=<value>
— Environment variable: LW6_SIDE_ATTACK_FACTOR
— XML key: side-attack-factor

Defines how hard fighters will attack sideways. It's an algorithm trick, fighters attack by default the opponent right in front, but if there's no fighter there, they will still try to attack someone else, maybe sideways. But doing this their attack is not as strong. This parameter enables you to tune this. This is a percentage.

— Command-line option: –side-defense-factor=<value>
— Environment variable: LW6_SIDE_DEFENSE_FACTOR
— XML key: side-defense-factor

Defines how fast fighters will regenerate, when being side by side instead of being right in front of the other. This is a percentage.

— Command-line option: –single-army-surface=<value>
— Environment variable: LW6_SINGLE_ARMY_SURFACE
— XML key: single-army-surface

Defines the proportion of the whole available space, which will be occupied by an army at the beginning of the game. You can either imagine playing with almost empty maps, or play very crowded with almost no space left. This is not a percentage, it's in a per-thousand unit. 1000 means full packed, but since it makes no sense, it's forbidden.

— Command-line option: –spreads-per-round=<value>
— Environment variable: LW6_SPREADS_PER_ROUND
— XML key: spreads-per-round

Defines how many times the gradient is spread per round. Gradient spread is a very Liquid War 6 specific feature, just remember that the more often you do it, the more accurately fighters will move. That is, you will be sure they really take the shortest path. Usually this does not have much effect, the default value should fit in most cases, but you might want to decrease it on very simple maps where the gradient is obvious, or increase it on complex maps where you want fighters to be real smart.

— Command-line option: –total-armies-surface=<value>
— Environment variable: LW6_TOTAL_ARMIES_SURFACE
— XML key: total-armies-surface

Defines the proportion of the whole available space, which can be occupied by all the armies present together. Setting this low, whenever a new team arrives on the map, fighters might be stolen to other teams, otherwise the ame would get too crowded. This allows you to play with reasonnably enough fighters with 2 players, while still allowing interesting gameplay with many players. This is not a percentage, it's in a per-thousand unit. 1000 means full packed, but since it makes no sense, it's forbidden.

— Command-line option: –total-time=<value>
— Environment variable: LW6_TOTAL_TIME
— XML key: total-time

Defines the maximum time of the game, in seconds. Note that in some cases, the game can end much earlier if some player has managed to win before the bell rings. Also, technically, this value will be translated into rounds and moves, and the game engine will wait until enough rounds and moves have been played. So if the computer is too slow and the desired speed is not reached, then the game will last for a longer time.

— Command-line option: –x-polarity=<value>
— Environment variable: LW6_X_POLARITY
— XML key: x-polarity

Defines how the map will be wrapped on the X (horizontal) axis. If set to 0, nothing is wrapped. If set to 1, the right and left borders are connected, any fighter can disappear on the right border and reappear on the left border, for instance. If set to -1, it will be wrapped but also inversed, that is on a 320x240 map, a fighter disappearing on the left border at position (0,60) will reapper on the right border at position (319,180). You can combine it with 'y-polarity'.

— Command-line option: –y-polarity=<value>
— Environment variable: LW6_Y_POLARITY
— XML key: y-polarity

Defines how the map will be wrapped on the Y (vertical) axis. If set to 0, nothing is wrapped. If set to 1, the top and bottom borders are connected, any fighter can disappear on the top border and reappear on the bottom border, for instance. If set to -1, it will be wrapped but also inversed, that is on a 320x240 map, a fighter disappearing on the bottom border at position (40,239) will reapper on the top border at position (280,0). You can combine it with 'x-polarity'.

4.8.3 Map style (style.xml)

— Command-line option: –background-color-alternate-bg=<value>
— Environment variable: LW6_BACKGROUND_COLOR_ALTERNATE_BG
— XML key: background-color-alternate-bg

Defines a color which will be used together with background-color-alternate-fg to draw things (animations, sprites, text, whatever) in the background. It should be different enough from background-color-alternate-fg so that one can really distinguish these colors. Will be automatically guessed from the map texture if background-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –background-color-alternate-fg=<value>
— Environment variable: LW6_BACKGROUND_COLOR_ALTERNATE_FG
— XML key: background-color-alternate-fg

Defines a color which will be used to draw things (animations, sprites, text, whatever) in the background. It should be different enough from background-color-alternate-bg so that one can really distinguish these colors. Think of this as the sprite, the text, the whatever-needs-to-be-seen-uses-this color. Will be automatically guessed from the map texture if background-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –background-color-auto=<value>
— Environment variable: LW6_BACKGROUND_COLOR_AUTO
— XML key: background-color-auto

Defines wether background colors should be set automatically from texture colors. If set to true, then the program will try to pick up colors automatically from the texture, and will override the values of the background-color-base-bg, background-color-base-fg, background-color-alternate-bg and background-color-alternate-fg parameters. How these colors are picked up can't be garanteed, so if the map does not have strong contrast or if there can be any form of ambiguity, it's safe to set this to false and define one's own colors.

— Command-line option: –background-color-base-bg=<value>
— Environment variable: LW6_BACKGROUND_COLOR_BASE_BG
— XML key: background-color-base-bg

Defines the main background color. This is, for instance, the color which will be used to clear the screen before drawing thing. Will be automatically guessed from the map texture if background-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –background-color-base-fg=<value>
— Environment variable: LW6_BACKGROUND_COLOR_BASE_FG
— XML key: background-color-base-fg

Defines a color which will be used together with background-color-base-bg to compose the background. It can be wise to have a minimum contrast between this color and background-color-base-bg, but it is not mandatory, especially if other colors are manually redefined. Will be automatically guessed from the map texture if background-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –background-density=<value>
— Environment variable: LW6_BACKGROUND_DENSITY
— XML key: background-density

Density of the background animation, that is, for instance, if the background animation is about displaying bubbles, using a high value will display many bubbles. A value of 1.0 corresponds to the default setting.

— Command-line option: –background-speed=<value>
— Environment variable: LW6_BACKGROUND_SPEED
— XML key: background-speed

Speed of the background animation, that is, for instance, if the background animation is about displaying bubbles, using a high value will cause bubbles to move very fast. A value of 1.0 corresponds to the default setting.

— Command-line option: –background-style=<value>
— Environment variable: LW6_BACKGROUND_STYLE
— XML key: background-style

The background defines, of course, what is displayed at the background, but it also conditions the colors used for other items, such as the menus for instance. Possible values include 'bubbles', 'air', 'fire', 'earth' and 'void'.

— Command-line option: –fighter-scale=<value>
— Environment variable: LW6_FIGHTER_SCALE
— XML key: fighter-scale

Defines how wide (in pixels) fighters must be. This parameter is very important and will largely condition the number of fighters on the map. It is used when loading the map. If it is, for instance, set to 1, there will be exactly a fighter per pixel on the screen. That is, if you play 640x480 on an empty map, the maximum fighters you could have is about 300000. The idea is that by changing the resolution, you also define the density of the map. In pratice, this is done in the hope that someone with a slow computer will pick up a low resolution and therefore play small levels. Conversely, someone with a brand new computer with powerfull CPU & GPU will use great resolutions and be happy with many fighters on the map. Still, changing the resolution after loading the map will not affet the number of fighters. Same for network games, the first player, who loads the map, defines its properties according to its own settings.

— Command-line option: –hud-color-auto=<value>
— Environment variable: LW6_HUD_COLOR_AUTO
— XML key: hud-color-auto

Defines wether hud colors will be set automatically from background colors. This is a time saver to keep map designers from requiring to redefined every single color in the game. You only need to set background-color-base-bg, background-color-base-fg, background-color-alternate-bg and background-color-alternate-fg. Then hud_color_frame_bg, hud_color_frame_fg, hud_color_text_bg and hud_color_text_fg will be automatically set.

— Command-line option: –hud-color-frame-bg=<value>
— Environment variable: LW6_HUD_COLOR_FRAME_BG
— XML key: hud-color-frame-bg

Defines the background color for the hud frame. Ignored if hud-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –hud-color-frame-fg=<value>
— Environment variable: LW6_HUD_COLOR_FRAME_FG
— XML key: hud-color-frame-fg

Defines the foreground color for the hud frame. Ignored if hud-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –hud-color-text-bg=<value>
— Environment variable: LW6_HUD_COLOR_TEXT_BG
— XML key: hud-color-text-bg

Defines the background color for hud text. Ignored if hud-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –hud-color-text-fg=<value>
— Environment variable: LW6_HUD_COLOR_TEXT_FG
— XML key: hud-color-text-fg

Defines the foreground color for hud text. Ignored if hud-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –hud-style=<value>
— Environment variable: LW6_HUD_STYLE
— XML key: hud-style

The hud is where informations about the game are displayed. This means, who is winning, are other status-like informations. Possible values include 'floating' and 'tactical'.

— Command-line option: –keep-ratio=<value>
— Environment variable: LW6_KEEP_RATIO
— XML key: keep-ratio

Defines wether the map should keep its ratio, or if it should be stretched to fill the shape of your screen.

— Command-line option: –menu-color-auto=<value>
— Environment variable: LW6_MENU_COLOR_AUTO
— XML key: menu-color-auto

Defines wether menu colors will be set automatically from background colors. This is a time saver to keep map designers from requiring to redefined every single color in the game. You only need to set background-color-base-bg, background-color-base-fg, background-color-alternate-bg and background-color-alternate-fg. Then menu_color_default_bg, menu_color_default_fg, menu_color_selected_bg, menu_color_selected_fg, menu_color_disabled_bg and menu_color_disabled_fg will be automatically set.

— Command-line option: –menu-color-default-bg=<value>
— Environment variable: LW6_MENU_COLOR_DEFAULT_BG
— XML key: menu-color-default-bg

Defines the default background color for menus. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-color-default-fg=<value>
— Environment variable: LW6_MENU_COLOR_DEFAULT_FG
— XML key: menu-color-default-fg

Defines the default foreground color for menus. In fact, this is the main color for menu text, the color used to draw letters in menus. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-color-disabled-bg=<value>
— Environment variable: LW6_MENU_COLOR_DISABLED_BG
— XML key: menu-color-disabled-bg

Defines the background color for a disabled menu item. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-color-disabled-fg=<value>
— Environment variable: LW6_MENU_COLOR_DISABLED_FG
— XML key: menu-color-disabled-fg

Defines the foreground color for a disabled menu item. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-color-selected-bg=<value>
— Environment variable: LW6_MENU_COLOR_SELECTED_BG
— XML key: menu-color-selected-bg

Defines the background color for a selected menu item. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-color-selected-fg=<value>
— Environment variable: LW6_MENU_COLOR_SELECTED_FG
— XML key: menu-color-selected-fg

Defines the foreground color for a selected menu item. Ignored if menu-color-auto is set. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –menu-style=<value>
— Environment variable: LW6_MENU_STYLE
— XML key: menu-style

The menu style is simply the name of the engine used to power the menu system. The only possible value, for now, is 'cylinder'.

— Command-line option: –system-color-auto=<value>
— Environment variable: LW6_SYSTEM_COLOR_AUTO
— XML key: system-color-auto

Defines wether system colors will be set automatically from background colors. This is a time saver to keep map designers from requiring to redefined every single color in the game. You only need to set background-color-base-bg, background-color-base-fg, background-color-alternate-bg and background-color-alternate-fg. Then system_color_bg and system_color_fg will be automatically set.

— Command-line option: –system-color-bg=<value>
— Environment variable: LW6_SYSTEM_COLOR_BG
— XML key: system-color-bg

Defines the system background color, used when displaying system info, such as the number of frames per second. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –system-color-fg=<value>
— Environment variable: LW6_SYSTEM_COLOR_FG
— XML key: system-color-fg

Defines the system foreground color, used when displaying system info, such as the number of frames per second. This will typically be text color. Can be #RGB, #RGBA, #RRGGBB or #RRGGBBAA.

— Command-line option: –team-color-blue=<value>
— Environment variable: LW6_TEAM_COLOR_BLUE
— XML key: team-color-blue

Defines the color for the blue team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-cyan=<value>
— Environment variable: LW6_TEAM_COLOR_CYAN
— XML key: team-color-cyan

Defines the color for the cyan team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-green=<value>
— Environment variable: LW6_TEAM_COLOR_GREEN
— XML key: team-color-green

Defines the color for the green team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-lightblue=<value>
— Environment variable: LW6_TEAM_COLOR_LIGHTBLUE
— XML key: team-color-lightblue

Defines the color for the light blue team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-magenta=<value>
— Environment variable: LW6_TEAM_COLOR_MAGENTA
— XML key: team-color-magenta

Defines the color for the magenta team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-orange=<value>
— Environment variable: LW6_TEAM_COLOR_ORANGE
— XML key: team-color-orange

Defines the color for the orange team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-pink=<value>
— Environment variable: LW6_TEAM_COLOR_PINK
— XML key: team-color-pink

Defines the color for the pink team. Syntax is HTML-like, #RGB or #RRGGBB.

— Command-line option: –team-color-purple=<value><