Map structure
Map structure describes the division of the game world area into standard units: tiles, chunks and regions. Tiles are the building blocks of the game, upon which all distance and area measurements are based. Chunks are blocks of 32x32 tiles used for various area-based calculations. Regions are much less commonly used, and may be seen only in certain debug text.
Tile
A tile is a square which defines the smallest possible piece of the game world; the map is built on a grid of tiles. The tile is the basis for all area and distance measurement. Entity sizes are defined in terms of tiles; for example the rocket silo - the largest entity in the game - is 9 tiles wide and 9 tiles high, usually referred to as 9x9. The smallest possible entity size is therefore one tile, 1x1. Examples of 1x1 entities include transport belts and chests.
The maximum size of the map is a square 2 million tiles on each side, a total of 4 trillion tiles. In practice the map in an average game is likely to be in the range of hundreds of thousands of tiles up to a few million at most.
Tile grid alignment
Almost all placeable entities are aligned to the tile grid when placed in the game. Exceptions include the landmine and vehicles such as the car, tank, locomotive and wagons. Non-placeable entities that do not align to the grid include enemies, trees and decoratives.
Example distances
- Area covered by Radar: about 100 tiles diameter (100 tiles in each direction, bounded to the matching chunk).
- It takes about 1 minutes and 52 seconds to run 1000 tiles without speed up. [1] (As a side note, this would mean that the character is a very healthy person.)
Real world size analogy
One tile is generally assumed to be one square meter in size (the same as used by Minecraft), as this forum discussion confirms.
Chunk
A chunk is a unit defined as either an area of the map 32×32 tiles in size (containing 1024 tiles in total) or a distance of 32 tiles.
Chunks are used for:
- Map generation. When the player moves, has a radar explore the map via sectors, or has artillery shells fired across long distances, the map is revealed in chunks.
- Chunks are "switched off" to save CPU cycles. If nothing important happens in a chunk (e.g. nothing has moved except fish) the chunk is not computed in the next tick.
- The pollution model is based on chunks, and pollution spreads to neighboring chunks.
- Enemy expansion is evaluated on a per-chunk basis. The game scans the map chunk by chunk to decide whether each chunk is a valid expansion target. Valid chunks are called 'candidate chunks' and assigned a score from 0 to 1.0 indicating their relative suitability. A chunk is then picked at random using a weighted dice roll such that chunks with higher scores are chosen more frequently.
Visualizing tiles and chunks in-game
A tile grid overlay is available which shows the grid upon which the map is built:
- The grid can be shown whenever the player pauses the game (by default with Shift-Space).
- This is configured under Settings->Interface->Show grid when game is paused.
- To see the grid while the game is still running, debug settings can be used:
- Pressing F4 will show the Debug settings window.
- Ticking show-tile-grid under always will show the grid at all times; ticking it under debug while show it when debug mode is activated.
- If debug is chosen, the grid will become visible whenever F5 is used to enable debug display. Configuring debug mode in this way allows F5 to be used as a convenient toggle for turning the grid on and off, which can be useful when attempting to place entities according to a neat and/or symmetrical design.
Region
A Region is an area of 16 by 16 chunks; 268,435,456 tiles.
No game mechanic depends on regions and there are no modding APIs that access the game by region. Currently they are only used internally for organizing allocations, and there is a chance that they will be removed from the game in the future.