GameStyles.wiki
changeset 2025 9fd0936eddfb
child 2026 d345ec330d2a
equal deleted inserted replaced
2024:730df19c8901 2025:9fd0936eddfb
       
     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`.