|
1 #summary Description of game styles in Hedgewars |
|
2 |
|
3 = Game styles = |
|
4 |
|
5 == Introduction == |
|
6 A *game style* (or “style” for short) is a type of script that can be selected in multiplayer games. A list of all official styles can be found [https://hedgewars.org/node/2946 here]. |
|
7 |
|
8 == Location and files == |
|
9 All game style files are saved in `Data/Scripts/Multiplayer`. |
|
10 |
|
11 To create a style with the name `<name>`, create the file `<name>.lua`. |
|
12 |
|
13 Here's the full list of supported files: |
|
14 |
|
15 * `<name>.lua`: Mandatory. The script code. See below. |
|
16 * `<name>.cfg`: Optional. Config file to specify the default schemes to use. See below. |
|
17 * `<name>.hwp`: Optional. A sidecar [HWPFormat HWP file] containing additional resources for the style. |
|
18 |
|
19 == How it works == |
|
20 In the multiplayer menu, the player will select a style in the drop-down menu. |
|
21 |
|
22 When the game is started, Hedgewas will initialize the script with all the player-chosen settings and also automatically places all hedgehogs and possibly some land objects (specified in the game scheme), just like in a normal game. Because the hogs are already placed, `AddHog` and `AddTeam` are pointless here. |
|
23 |
|
24 With an empty script, this game will behave exactly like a normal, unscripted game, with the same rules as a normal battle. Any code you write in the script will make Hedgewars deviate from the default gameplay. |
|
25 |
|
26 The documentation of [LuaAPI Lua API] applies. Some things we like to highlight: |
|
27 |
|
28 In `onGameInit`, you can read the scheme settings and also change them. You can overwrite pretty much all scheme settings here. |
|
29 |
|
30 In `onParameters`, you can parse the script parameter (which is also specified by the player in the game scheme). |
|
31 |
|
32 == Config file format == |
|
33 |
|
34 The config file is a text file with 2 lines: |
|
35 |
|
36 * Line 1: Name of the game scheme to select by default |
|
37 * Line 2: Name of the weapon scheme to select by default |
|
38 |
|
39 Both lines can use a special value: |
|
40 |
|
41 * `locked`: This scheme is locked and cannot be changed by the player |
|
42 * `*`: Don't select a default for this scheme |
|
43 |
|
44 By default, the schemes are locked. If you use a locked scheme, the style will be initialized with the settings of the “Default” scheme, but you can always overwrite that in your script code. |
|
45 |
|
46 == Versioning == |
|
47 For community-created styles, we strongly suggest to follow a naming convention: Append a version number to the name. The style name is the form `<name>_v<number>`, where `<version>` is the version number. |
|
48 |
|
49 The first version is `1`. Whenever you publish a changed version of the style, increase the number by 1. |
|
50 |
|
51 Example name for a versioned style: `ExampleStyle_v4`. |