Custom Game Modes
Overview
Custom Game Modes in shapez 2 are implemented by supplying custom scenario files and custom scenario parameter presets as JSON files placed into the game's folder structure. These JSON files define scenario behavior, objectives, rewards, and costs using the same data structures the game uses for built-in scenarios, allowing players to create, edit, and import bespoke challenges and parameter sets.
Scenario files are regular JSON files that the game reads from the custom-scenarios folder in the game folder. Scenario parameter presets (often used as difficulty/parameter presets for scenarios) are JSON files placed in the custom-scenario-parameter-presets folder in the game folder. The game’s built-in scenario files and parameter preset files are exported into the exported data folder when you export game data, and can be used as templates for custom content. To export the in-game data, open the in-game console (F1) and run debug.export-game-data. This creates a basedata-
The scenario-parameter-presets JSON files follow a main object format for presets. Each preset contains:
- Version string: the format version as a string (currently "1").
- UniqueId string: the ID used by the game to identify the difficulty preset.
- Title string: the difficulty preset's title.
- Parameters object: the actual data of the difficulty preset. Known parameter keys include ResearchShapeCostMultiplier (the Goal Multiplier as a percentage), ChunkLimitMultiplier (the Platform Limit multiplier as a percentage), and BlueprintCostMultiplier (the Copy/Paste Cost multiplier as a percentage).
Scenario JSONs use cost and reward object formats consistent with the game’s data model. Cost objects include a $type string (the type of cost, currently ResearchPointsCost) and an Amount number (default 0) specifying research points required. Reward objects include a $type string (possible types include BuildingReward, IslandGroupReward, MechanicReward, WikiEntryReward, BlueprintCurrencyReward, ChunkLimitReward, ResearchPointsReward, or ContentBundleReward) and additional fields depending on reward type, such as BuildingDefinitionGroupId, GroupId, MechanicId, EntryId, ContentBundleId, and Amount.
The game currently does not support loading custom difficulty presets as JSON files directly via the normal import mechanism. However, the in-game difficulty presets and other scenario files are available in the difficulty-presets, scenarios, and scenario-parameter-presets folders of the exported basedata-
- Put custom scenario JSON files in the custom-scenarios folder of the game folder.
- Put custom scenario parameter preset JSON files in the custom-scenario-parameter-presets folder of the game folder.
- Use debug.export-game-data from the in-game console (F1) to generate basedata-
folders containing the game’s current scenario and preset JSON files to use as templates. - Edit JSON files with a text editor or a JSON-capable editor; follow the main object, Costs, and Rewards formats used by the game to ensure compatibility.
- Remember that custom difficulty presets cannot be loaded as standalone JSON presets by the game’s normal import; refer to the exported difficulty-presets for how in-game presets are structured.