• Register
Post tutorial Report RSS NetTD maps manual editing

Guide to create and edit NetTD maps with just a text editor.

Posted by on - Intermediate Mapping/Technical

NetTD supports two map file formats, JSON text files that are human readable (.map) and a compressed format (.cmap). If you want to edit a compressed map, you can use the map utilities.exe program which comes with the client.

To edit NetTD maps you need to know the JSON format. On json.org is a quick guide on the right side, this guide will explain the NetTD specific data structures, not JSON itself.

The origin of the coordinate system of the map is the bottomleft corner (0,0).
The main structure of the file is an object, or in python terms a dict. {}
It has the following keys:
paths
labels
header
objects
terrains
rounds

As only DM is working at this point, only what is needed for such a map is outlined in the following.

paths
for a DM map should always be "paths" : []

labels
Allows text to be placed on the map. It works but will likely change a lot, so just set it to "labels" : []

header
Another object/dict, it's keys are:

spawn Array, containing spawn points. A spawn point is an array of [x,y]

version Map format version, currently 1 ("version" : 1)

gamemodes set it to "gamemodes" : ["Arena"] for deathmatch

size
2 element array, of "size" : [width, height]
Both values have to be dividable by 256 without remainder.

rounds set it to "rounds" : 0

name Assuming we want to name the map Tutorial, we'd write "name" : "Tutorial"

objects
array of map objects, it's entries are arrays with 2 members of a certain format:

Wormhole example
[0,
{"entry" : [256,256],
"exit" : [1024,1024],
"radius" : 256,
"horizon" : 30,
"pull force" : 3000,
"push force" : 1000
}
]
The first element, here 0, determines the object type, in this case wormhole.the second element is an object/dict. Entry and exit are the teleporter endpoints, radius is effect radius of both the graphics and pull effect. horizon is the radius to the center in which the teleportation triggers. Pull force is the strength with which the teleporter sucks entities in and push force is the strength with which the entity is flinged out after teleportation.

Maelstrom example
[1,
{"pos" : [512,512],
"radius" : 256,
"direction" : 1,
"pull force" : 3000,
"push force" : 1000
}
]
Maelstrom's object ID is 1.
In the data area, pos is the position of the maelstrom, radius is again the effect radius.
Direction is the rotation direction, clockwise and counterclockwise (1 or -1).
Pull force is here a transversal velocity that is induced, while push force is the direct force to push out players. It does not suck in like a teleporter to prevent players from beeing stuck.

Terrains
array of terrains. Each terrain is represented by an object/dict.

Red damage terrain example
{
"type" : 1,
"rect" : [512,1024,128,256]
}

The red damage area ID is 1, speed is 2 and slow down is 3.
The rect argument is in the form of [x,y,width,height].

Rounds
set to "rounds" : []

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Tutorial
Related Games
NetTD
NetTD Arcade