diff -r 55d662a30467 -r dc9a1250fe28 Missions.wiki --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Missions.wiki Tue Jul 28 14:45:30 2015 +0000 @@ -0,0 +1,68 @@ +#summary How to create singleplayer missions + += Missions = +== Introduction == +Missions can be played in singleplayer mode and are selected from the single player menu in the mission menu (the hedgehog at the blackboard). + +== Mission files == +Only the Lua script is needed, the other files/data are optional. But it is still recommended to create them. + +=== The mission's Lua script === +This is the heart of your mission. Here you will set up the mission and define the entire game logic of the mission. + +See [LuaGuide], [LuaAPI] and [LuaLibraries] for more information about scripting. + +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. + +==== Hints ==== +In mission scripting, some patterns appear often, so here are some hints for your convenience (Refer to [LuaAPI] for a full documentation): + + * Start with `onGameInit` to set up the most basic environment parameters, teams, hedgehogs, etc. + * Important set up functions: `AddTeam`, `AddHog`, `AddGear`, `SetGearPosition`. + * You probably almost always want to call `ShowMission` at the beginning of the game (`onGameStart`) to show the objectives of your mission. + * Enable the game flag `gfOneClanMode` if you need only one clan for your mission. + * 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. + * Call `SendStat` to customize the statistics screen. + * Use the [LuaLibraries#Locale Locale] library to make your mission translatable. Enclose the human-readable texts in `loc`. + * When making your mission translatable, use Lua's `string.format` to insert numbers and other strings instead of just concatenating everything together. + * If you want to create complex animations and/or cinematics, include and use the [LuaLibraries#Animate Animate] library. + +=== Preview image === +The preview image is displayed in the mission menu when you have selected the mission. +It must be a PNG image of size 314px×260px. + +The file must be saved in `Data/Graphics/Missions/Training`. The file name must follow this pattern: + +`@2x.png` + +Where `` is name of the mission script without the file name suffix. + +For example, the preview image for the mission script `User_Mission_-_Teamwork.lua` must have the name `User_Mission_-_Teamwork@2x.png`. + +=== Mission title and description === +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_.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. + +To add the title an description for your mission, just add these 2 lines into the file according to this syntax: + +{{{ +.name= +.desc= +}}} + + * `` is the file name of the mission script without the file suffix. + * `` is the mission title as shown in the mission menu. + * `` is a short description of the mission, also only shown in the mission menu. + +You can optionally enclose `` and `` in quotation marks (they will be removed by the game). + +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. + +For more information about translating Hedgewars, see [Translations]. + +==== Example ==== +Here are the English title and description of the mission “Bamboo Thicket” (file name of script: “`User_Mission_-_Bamboo_Thicket.lua`”): + +{{{ +User_Mission_-_Bamboo_Thicket.name=Mission: Bamboo Thicket +User_Mission_-_Bamboo_Thicket.desc="Death comes from above." +}}} \ No newline at end of file