Campaign missions are created in one of two ways, with the missions editor or with a mission definition file. The mission editor is used for the first mission and Kodachi Rally as they involve triggers and cutscenes. The skirmish-style missions are created with a definition file.
The Mission Editor allows players to create interactive missions similar to single-player scenarios of commercial games and to easily publish them to all players. These missions are mutators so can be designed for multiplayer and played cooperatively or competitively.
Most of the campaign missions are defined solely by the contents of Chobby/campaign/sample/planets. For example, planet1.lua contains a list of sides, commanders, units, objectives, and rewards. The file is processed into a startscript by chobby when ythe mission is launched. Some gadgets and widgets in ZK read particular values in the startscript to to make unmodified base ZK run as the mission.
There are a few development widgets in ZK that can help create mission files. The most useful is the one that saves all the units (and optionally orders) in the format required for the script mission files. Documentation of the script mission files can be found in planetDocumentation.lua
Running the Mission Editor
The mission editor loads its files using an older version of Spring. To get the required version:
- Open a Custom host and set a password.
!engine 104.0.1-287-gf7b0fcc. You should see the response
Nightwatch Engine changed to 104.0.1-287-gf7b0fcc.
- Start the battle. The engine should start downloading silently in the background.
- Wait a few minutes and check whether
steamapps/common/Zero-K/win64/104.0.1-287-gf7b0fccexists. If it doesn't then try
win32. If you're on Linux then check the appropriate directory.
- Copy the entirety of
104.0.1-287-gf7b0fccfolder to a new folder somewhere isolated called
missionDevsuch that you have the paths
missionDev/games. Optionally, you may just make empty
mapsfolders and copy whatever you need in as you need it.
- Run the mission editor and point it to
missionDev/spring.exewhen it asks you to supply an engine path.
You now have a mission editor setup capable of making and editing missions that use the maps and games you have copied into the relevant folders. To edit existing missions you may require two additional steps:
- Some missions run off the development version of Zero-K as this makes them easier to test and debug. When the mission is exported for use the version is changed to zk:stable. To get the development version of Zero-K follow the instructions here with paths modified to end up with
- To take a look at or edit the current missions, clone this repository similarly to how you would clone the main game in the above dot point.
- Some old missions may be made with a version of Zero-K that no longer loads on the mission editor. When in doubt, use the development version of Zero-K (
Zero-K $VERSIONas it is the most likely to be up to date. The version of a mission can be changed directly by editing its xml.
Publishing a mission
The mission editor exports mutators, so missions can be uploaded the same way you would upload any other mod, see Mod Creation. If the mission must be run on a particular map, then you can bundle the map and mutator together with a Custom Mode.
Publishing a mission OUTDATED (but the infrastructure may still be there)
You can make your mission available online by publishing it. It will be available for others to play once enabled by an administrator.
To do this, open the Mission menu and click Publish. Fill in the form displayed.
A mission must have a description and image to be published.
Uploading the mission will take a few seconds. If you want to update or delete it, select the Manage Missions item in the Mission menu.
If you have the error message "Value cannot be null. Parameter name: paths"
- Make sure your engine folder exists in the correct format in your Spring data directory:
- For instance: