Map Creation
Maps are 7z archives which, at their most basic, consist of three image files packaged in a particular way. They can be found in Zero-K/Maps
and be zipped or unzipped with 7zip. Maps can contain more than their three image files, including:
- Metal spot layout.
- Start area configuration.
- Tree, rock or any other models to be placed as map features.
- Arbitrary code and units changes that can arbitrarily modify the game. See Mod Creation.
Contents
Creating maps
<Removed some links to the old Spring wiki since you would probably get malware if you go there.>
Ask for help in #zkmap in on the Zero-K Discord server.
Startboxes
- Further information: Startbox API
Startboxes are loaded from /mapconfig/map_startboxes.lua and can be generated ingame with the Startbox Editor widget included with the game. Alt + F11 to toggle.
Metal Configuration and Spot Graphics
Metal spots on maps are done via Lua configs. They can be generated ingame with the dbg_mouse_to_mex_portable.lua widget, available at TheMooseIsLoose's github.
Download that repo as a zip and extract into your map folder. Load the map in ZK, enable cheats, and then enable Mouse to Mexes in your Alt + F11 widget menu. Click to create new metal spots, the values and positions will be automatically saved to your game data directory. Copy and paste the content from MexSpots_YourMap to your /mapconfig/map_metal_layout.lua
.
Running maps
Local testing
To run a map locally put it in Zero-K/Maps
then start the game. Untick 'Only featured maps' in Settings → Lobby
and start a singleplayer skirmish game. Select 'Advanced', click 'Change Map' and select your map from the list.
Multiplayer
Upload your map to https://springfiles.springrts.com/upload/ to make it downloadable and playable by others. Some admin action to feature/support the map may also be required.
See also
- ZK Map Making Guide
- Advanced guide using WorldMachine, by Beherith
- Some subjective comments on design of sea maps, by Aquanim
![]() | The images and links on this page may be broken at the moment. The cache on this page points to the test wiki.
Please purge the cache to try to restore images and fix those links. This will work only if the page is not on the test server (where this box should appear for now even when cache purging is not needed), which may lack the actual images. This page thinks that it resides on test.zero-k.info right now. |
Debug data:
[SQLBagOStuff] MainObjectStash using store ReplicatedBagOStuff
[objectcache] MainWANObjectCache using store EmptyBagOStuff
IP: 3.139.94.189
Start request GET /mediawiki/index.php?oldid=9201&title=Map_Creation
HTTP HEADERS:
CONTENT-TYPE:
CONTENT-LENGTH: 0
USER-AGENT: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HOST: zero-k.info
ACCEPT-ENCODING: gzip, br, zstd, deflate
ACCEPT: */*
CONNECTION: close[localisation] LocalisationCache: using store LCStoreDB
[session] SessionManager using store SqlBagOStuff
[DBReplication] Cannot use ChronologyProtector with EmptyBagOStuff
[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: request info {
"IPAddress": "3.139.94.189",
"UserAgent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
"ChronologyProtection": false,
"ChronologyPositionIndex": 0,
"ChronologyClientId": false
}[DBConnection] Wikimedia\Rdbms\LoadBalancer::lazyLoadReplicationPositions: executed chronology callback.
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[session] SessionBackend "ndq2grerlh4ocntgn9sb40p6jf4cuk5a" is unsaved, marking dirty in constructor
[session] SessionBackend "ndq2grerlh4ocntgn9sb40p6jf4cuk5a" save: dataDirty=1 metaDirty=1 forcePersist=0
[cookie] already deleted setcookie: "wikidb229_mw__session", "", "1711650894", "/", "", "", "1"
[cookie] already deleted setcookie: "wikidb229_mw_UserID", "", "1711650894", "/", "", "", "1"
[cookie] already deleted setcookie: "wikidb229_mw_Token", "", "1711650894", "/", "", "", "1"
[cookie] already deleted setcookie: "forceHTTPS", "", "1711650894", "/", "", "", "1"
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
Title::getRestrictionTypes: applicable restrictions to [[Map Creation]] are {edit,move}
[ContentHandler] Created handler for wikitext: WikitextContentHandler
[MessageCache] MessageCache using store SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] SqlBagOStuff::lock failed due to timeout for wikidb229-mw_:messages:en.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[MessageCache] MessageCache::load: Loading en... local cache is empty, global cache is expired/volatile, loading from database
ParserFactory: using preprocessor: Preprocessor_Hash
Unstubbing $wgLang on call of $wgLang::_unstub from ParserOptions->__construct
[caches] parser: SqlBagOStuff
Article::view using parser cache: yes
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
Parser cache options found.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
ParserOutput cache found.
Article::view: showing parser cache contents for current rev permalink
MediaWiki::preOutputCommit: primary transaction round committed
MediaWiki::preOutputCommit: pre-send deferred updates completed
MediaWiki::preOutputCommit: session changes committed
MediaWiki::preOutputCommit: LBFactory shutdown completed
Title::getRestrictionTypes: applicable restrictions to [[Map Creation]] are {edit,move}