author | nemo |
Wed, 18 Apr 2018 09:13:08 -0400 | |
changeset 1320 | c3dfc9a0d9fb |
parent 566 | dc9a1250fe28 |
child 1684 | a15513ab7e2b |
permissions | -rw-r--r-- |
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 |
}}} |