Missions.wiki
author Wuzzy
Thu, 08 Feb 2018 18:23:14 +0000
changeset 1156 e739aecb013a
parent 566 dc9a1250fe28
child 1684 a15513ab7e2b
permissions -rw-r--r--
LuaAPI: fix syntax
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
566
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     1
#summary How to create singleplayer missions
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     2
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     3
= Missions =
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     4
== Introduction ==
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     5
Missions can be played in singleplayer mode and are selected from the single player menu in the mission menu (the hedgehog at the blackboard).
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     6
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     7
== Mission files ==
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     8
Only the Lua script is needed, the other files/data are optional. But it is still recommended to create them.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
     9
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    10
=== The mission's Lua script ===
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    11
This is the heart of your mission. Here you will set up the mission and define the entire game logic of the mission.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    12
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    13
See [LuaGuide], [LuaAPI] and [LuaLibraries] for more information about scripting.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    14
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    15
This file needs to be saved in `Data/Missions/Training`. The file name must end with “`.lua`”. Remember the file name, you will need it for the other files.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    16
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    17
==== Hints ====
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    18
In mission scripting, some patterns appear often, so here are some hints for your convenience (Refer to [LuaAPI] for a full documentation):
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    19
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    20
 * Start with `onGameInit` to set up the most basic environment parameters, teams, hedgehogs, etc.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    21
 * Important set up functions: `AddTeam`, `AddHog`, `AddGear`, `SetGearPosition`.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    22
 * You probably almost always want to call `ShowMission` at the beginning of the game (`onGameStart`) to show the objectives of your mission.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    23
 * Enable the game flag `gfOneClanMode` if you need only one clan for your mission.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    24
 * Normally, the game ends when all hedgehogs are dead or one clan is remaining (unless `gfOneClanMode` is set). You can call `EndGame` to end the game manually.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    25
 * Call `SendStat` to customize the statistics screen.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    26
 * Use the [LuaLibraries#Locale Locale] library to make your mission translatable. Enclose the human-readable texts in `loc`.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    27
 * When making your mission translatable, use Lua's `string.format` to insert numbers and other strings instead of just concatenating everything together.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    28
 * If you want to create complex animations and/or cinematics, include and use the [LuaLibraries#Animate Animate] library.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    29
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    30
=== Preview image ===
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    31
The preview image is displayed in the mission menu when you have selected the mission.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    32
It must be a PNG image of size 314px×260px.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    33
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    34
The file must be saved in `Data/Graphics/Missions/Training`. The file name must follow this pattern:
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    35
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    36
`<mission name>@2x.png`
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    37
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    38
Where `<mission name>` is name of the mission script without the file name suffix.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    39
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    40
For example, the preview image for the mission script `User_Mission_-_Teamwork.lua` must have the name `User_Mission_-_Teamwork@2x.png`.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    41
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    42
=== Mission title and description ===
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    43
The mission title and its description as shown in the mission menu must be edited in the missions files in `Data/Locale`. The file name is `missions_<language code>.txt`. There is one file per language. I.e. `missions_en.txt` for English, `missions_de.txt` for German, etc. Note that these files are supposed to contain the titles and descriptions of *all* missions on your computer. This makes these files unsuitable for sharing or inclusion into [HWPFormat HWP files], for example.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    44
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    45
To add the title an description for your mission, just add these 2 lines into the file according to this syntax:
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    46
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    47
{{{
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    48
<mission name>.name=<mission title>
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    49
<mission name>.desc=<mission description>
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    50
}}}
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    51
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    52
 * `<mission name>` is the file name of the mission script without the file suffix.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    53
 * `<mission title>` is the mission title as shown in the mission menu.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    54
 * `<mission description>` is a short description of the mission, also only shown in the mission menu.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    55
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    56
You can optionally enclose `<mission title>` and `<mission description>` in quotation marks (they will be removed by the game).
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    57
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    58
If the mission title and description are missing, the mission menu will derive the title from the file name of the Lua script instead and shows no description.
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    59
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    60
For more information about translating Hedgewars, see [Translations].
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    61
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    62
==== Example ====
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    63
Here are the English title and description of the mission “Bamboo Thicket” (file name of script: “`User_Mission_-_Bamboo_Thicket.lua`”):
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    64
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    65
{{{
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    66
User_Mission_-_Bamboo_Thicket.name=Mission: Bamboo Thicket
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    67
User_Mission_-_Bamboo_Thicket.desc="Death comes from above."
dc9a1250fe28 Created how-to guide about singleplayer missions.
almikes@aol.com
parents:
diff changeset
    68
}}}