Custom Modes
Jump to navigation
Jump to search
Custom modes are mods, maps, or just a set of Adv Options that can be selected when hosting the game or in the battle room via 'Select Custom Mode' in Adv Options. Each custom mode is defined by a file in Zero-K/CustomModes. The game deploys a few of these files, but players can also create their own and share them around to act as presets.
This system can be used to save and share disabled lists and Quick Stat Tweaks to create new game modes without going through the work of full modding.
Specification
Custom modes are JSON files that may have the following parameters.
Key | Usage |
---|---|
shortName | A unique name identifying the custom mode. Do not change it when making an update, or else duplicate files for old versions will be created. Must match the file name of the mode when uploaded. |
name | This is required to display the mode in the mode list. Bad things will happen if there is a clash. Add a version number to the end of this name and increment it upon each update. |
description | The tooltip for the mode in the 'Select Custom Mode' menu. |
roomType | Optional. Can be Custom, 1v1, Team, FFA, Chicken. |
map | Optional. Use this to set the map. The text must match exactly, as is written below the minimap in the battle room. |
game | Optional. Set a mutator or game. It should match game name exactly, as is shown left of the map when the game is selected. |
rapidTag | Optional. Set a rapid tag. Modes that use base Zero-K should set this to "zk:stable". |
hideFromHostMenu | Optional boolean. This is used to hide a mode from the Game Type menu while hosting. |
options | Optional table of Adv Option values. All the keys can be found in the file ModOptions.lua. |
Example
Here is an example that would run Zero Wars with a 2× health multiplier.
{ "shortName": "zw_hp_tweak", "name" : "Zero Wars with Tweaks v1.0", "description" : "Send waves of units across the map to destroy the enemy nexus", "roomType" : "Team", "map" : "ZeroWars v2.0.7", "rapidTag" : "zk:stable", "options" : { "hpmult" : 2 } }
Be careful with the commas in JSON, as they need to be placed after all but the last item in the set.