Menus and hot keys

Introduction

This section describes how the GUI works. Since programming advanced GUIs with Allegro is not so easy - standard C programming definitely lacks flexibility -, and also since it's somewhat hard for me to figure out what is user-friendly and what's not, Liquid War's menus are not always self-explanatory. I'll just try and do something better next time!

Menus

Map menu

The map menu allows you to choose the map you are going to play on. A map is defined by 3 things:

A frame. The frame can be chosen with the slider which is below the preview. The frames are automatically sorted by alphabetical order.

A texture for walls.

A texture for the zone where fighters are allowed to move.

In the middle of the screen, there is a preview of the level. In this menu, the values of the parameters can be independently changed by:

Moving a slider.

Clicking on a "+" or a "-" button.

Typing a number.

On each side of the preview, sliders allow you to choose the two textures. There is also a preview of each texture. Below this preview there are 128 little buttons which allow you to choose single colored textures.

The name of the map and its resolution are displayed in the lower part of the screen.

You'll notice that on some maps the texture selection zones simply disappear. This is because these maps are associated with a texture, so choosing a different texture is often not recommended for it won't look as nice as with the right one. If you still want to override this behaviour you can click on the "on/off" button just right to the "Use default texture" label. This is a toggle button which will allow you to use your own textures even on maps that normally come with their own skin.

You'll also notice that a "Random map" button is available. This button generates a new random map using an external program, "lwmapgen", developped by David Redick, available on http://www.cs.clemson.edu/~dredick/lwmapgen/

This program supports many command line options, and if you want a very precise control on the generated maps, you'll need to run it separately. Looking at LW's log file you should be able to see the commands LW issues when calling this program, this can give you ideas on how to launch it manually. Alternatively using the "--help" option (for instance "liquidwar-mapgen --help" under UNIX) should describe how to use it.

Teams menu

This menu allows you to choose the teams which are going to play. There are 6 square zones in this menu. Each of them is associated to a team.

Each team can be either:

Disabled ("Off")

Controlled by a player ("Human")

Controlled by the computer ("Cpu")

The computer plays poorly, so remember that Liquid War is basically a multiplayer game, and that the cpu control is dedicated to beginners only.

You can also choose the color associated to each team by clicking on one of the 12 colored buttons.

Below the 12 colored buttons, there are four buttons which allow you to choose your keys. Click on one of these buttons and then press the key you want to define. Joystick movements and buttons are considered as keys. You can disable the joystick with the button which is at the bottom left of the menu. Mouse input is also possible, and mouse movements are considered as keys too. To define mouse control, click on the button associated to the direction you want to control, and then move the mouse. Then the button should display something like "M->". Mouse sensibility can be set with the little slider at the bottom right of the menu.

Graphics menu

Here you can choose the graphic options of the game.

The "Video mode" button allows you to switch between fullscreen and windowed mode. This button is not available under DOS.

The "Brightness" slider allows you to set the brightness of the game.

The "Menu res" slider allows you to set the resolution used by the menus. There are currently 5 possible values, which depend on which platform you're running the game on.

I personnaly think the menus look best with the 640x480 resolution, but some may prefer higher resolutions. Lower resolutions should only be used if you have problems using SVGA video modes.

The "Game res" slider allows you to set the resolution used during the game. The allowed values are the same than those for the menus. I recommend that you don't use resolution higher than 640x480, unless you have a Pentium VIII running a 10GHz.

Page flipping can be toggled. It is up to you to decide wether you keep this option or not. The main disavantage of turning page flipping off is that the info bar and the battlefield can look rahter ugly if they overlap. But if you turn page flipping on you will not easily reach the 166 frames per second I sometimes get on small levels with my K6-225. I personnaly always turn page flipping off.

The viewport size defines how much of your screen will be used by the battlefield.

If you set the slider on its left position, the batllefield will not be stectched at all. Or if is strechted, it will be by a x2 or a x4 factor. So this is the mode wich allows the fastest display.

If you set the slider ont its right position, the game will run in fullscreen mode.

With all the other positions of the slider, the battlefield will keep its general proportions but it will be stretched.

The "Waves" button allows you to toggle the wave effect. You can also do this while playing, by simply pressing F4.

Sound menu

This section allows you to set the sound volumes. There are 4 sliders, which are:

"Sfx": sets the volume of all the sfx sounds, thats to say'the sounds you hear when the game starts, when you loose etc...

"Click": sets the volume of the click, this nasty noise you hear each time your press on a button.

"Game water": sets the volume of the blop blop blop sounds which are played continuously while you are playing.

"Menu water": the same thing than "Game water" except that it concerns the sounds played while your are choosing options.

"Music": general music volume.

Rules menu

This menu is the one where you can change the rules of the game.

The "Time" slider controls the time limit. The game will stop after this time is elapsed. You can pause the game by pressing the "F3" key.

By the way, an info bar can display the time left while you are playing. This info bar can be toggled during the game by pressing the "F1" key, and you can change its location by pressing the "F2" key. It also displays how many fighters there are in each team.

The "Army size" slider controls the amount of fighters there will be on the battlefield. The position of the slider reflects the amount of fighters of all the teams together. If there are 4 teams, then each player will have half as many fighters than if there had only been 2 teams.

The "Cursor x" slider controls the speed of your cursor.

If it is set on the left, the cursor goes at the same speed than the fighters.

If it is centered, the cursor goes twice faster than the fighters.

If it is set on the right, the speed of the cursor is multiplicated by 3.

Below is a "Min 160x100" box with a slider on its right. This means that maps will automatically be magnified so that they have a size of at least 160x100. Indeed, some of the maps that come with Liquid War were designed in 1995 when 486 Intel computers were common. Therefore the maps were smalls. Today, these maps are not really fun to play on fast computers, so Thomas Harte suggested this automatic magnifying feature, and that was IMHO a smart idea. You can move the slider to the right to make maps use a higher resolution - ie magnify them.

The "Defaults" button of the "Rules" menu will reset rules to their defaults. This way you can tweak rules and then come back to the default rules whenever you want. Note that there's also a "Defaults" button in the main "Options" menu, but it will reset *all* options, including player names... The advantage of the "Defaults" button in the "Rules" menu is that it will only reset rules parameters, and keep the rest of your configuration options untouched.

Speeds menu

The "frames/s" slider allows you to limit the number of frames per second. If this slider is set on the left, there won't be any limit, so Liquid War will repaint your screen each time the fighters move. But this can be a weird behaviour if your machine is really fast, for no one cares about 100 fps per second, one can not even see them... So this paramters limits the refreshment rate, so that there can be several logical moves of the fichters for only one screen refreshing. If it is set on its right, the display is limite to 10 fps, so you'll have to find your setting. I personnally set it right in the middle, and get 40 fps. If you press "F5", you'll get the number of frames per second, and if you press "F6", you'll get the number of logical moves per second. You can also press "F7" or "F8", and you will get the percentage of time your computer spends on calculating or displaying the level.

The "rounds/s" slider allows you to limit the number of rounds per second. If this slider is set on the left, there won't be any limit, so Liquid War will run as fast as possible. This setting will be of no use if you use Liquid War on a slow computer or if you play with hudge maps, but sometimes, with a high-end Pentium class computer, it's simply impossible to play on small maps because things simply go too fast. So this parameter is here to help you and avoid the "10000 moves per sec" problem.

Waves menu

This is where the wave parameters are set. The waves are just a graphic effect, which is not really usefull. I don't often use waves, but I still think they can sometimes look nice. Change these parameters if you really mean to do it, but if you don't understand what they mean, it is really OK...

There are 4 different types of waves, each of them being defined by:

An "Ampli" parameter, to define how big the waves have to be.

A "Number" parameter, to define how many waves should be displayed at the same time.

A "Speed" parameter, to define how fast the waves should move.

If you want to undestand what the "WX", "HY", "WY", and "HX" codes mean, try to pay with only one type of wave, the "Ampli" parameter of the 3 other types of wave being set to 0 (that is to say the slider is on its left position), and sea how it looks like.

The wave effects can be toggled during the game by pressing the "F4" key.

Advanced menu

This menu allows the user to change the behaviour of the fighters.

The "Attack" slider sets the agressivity of the fighters. If it is set on the right, fighters eat each other very fast. If it is set on the left, it takes ages to fighters to change teams.

The "Defense" slider sets the capacity that the fighters have to regenerate themselves. The more it is on the right, the faster fighters regenerate.

The "New health" slider sets the health of the fighters which have just changed teams. The more it is on the left, the weaker these fighters will be.

The "Winner help" slider controls a parameter which causes fighters to attack with various strength depending on how many fighters belong to their team. Not very clear... Let's just say that:

If this slider is set on the right, the more fighters you have in your team, the more aggressive they will become.

If it is centered, all the fighters of every team will always attack with the same strength.

If it is set on the left, the less fighters you have, the stronger they will be. In this mode, games usually never end.

The "Cpu strength" parameter never makes the computer more intelligent than a monkey. But if you set it on the right, it advantages the machine outrageously and fighters controlled by the cpu will be really strong. So to get rid of them you'll definitely need to be clever. Again and again, don't forget that Liquid War was conceived as a multiplayer game and that playing against the computer is not really an interesting thing to do.

The "CPU vs human" parameter allows you to control how aggressive CPUs are towards humans.

If set to "Always", CPUs will always attack humans and will never try to attack another CPU, unless there are no humans left. This used to be the default behavior in previous Liquid War versions, but some players remarked that it was rather unfair, so now this is an option.

If set to "Random", CPUs won't care wether their opponents are CPUs or humans, they'll attack anybody. This is the default behavior.

It set to "Never", CPUs will attack each other before bothering human players.

The "Allow net bots" button can be used to allow bots to connect on network games. Indeed, bots are by default disabled in network games, since in this case LW assumes that bots are useless (there are already several human players). However, turning this option on will allow you to connect bots within the game. It's important to note that this is a per client option, this means that you can't use it to forbid access to bots to a given network game. This option was simply created to avoid confusion when connecting on network games, while still allowing bots to connects if you really want them to.

The "Algorithm" parameter allows you to force the algorithm to standard C mode. There's no real good reason you would like to do this, since the C algorithm is slower than the ASM one. Moreover, the ASM algorithm is automatically disabled if you play against a computer which does not have ASM enabled. Think of this as a testing/debugging option.

Hot keys

Here's a list of keys you might use while playing:

F1: toggles the "info" zone where the game time and the state of each team is displayed.

F4: toggles the "wave effect". Without this "wave effect", which is turned on ny default,the game will run faster.

F5: displays the number of frames per second (*).

F6: displays the number of rounds per second (*).

F7: displays the precentage of CPU spent on the game logic, calculating where fighters must go for instance (*).

F8: displays the precentage of CPU spent on graphics (*).

F9: turns on/off the "capture" mode. In this mode, screenshots of each frame are taken, and written to the hard drive as bitmaps.

F10: quits the game right away without any confirmation prompt, also known as the "my boss is coming here!" function.

(*) all these figures tend to be clearly false as computer go faster and faster. Basically, the time required for "logic" and "display" operations is getting shorter and shorter, and the tools I use to measure it are not precise enough. Therefore I get approximations which might by plainly wrong.