Mapdev%3ASMF_format(1) - beyond-all-reason/springrts_engine_wiki_mirror GitHub Wiki
SMF(Spring Map File) Reference
SMF is a binary format
File location
maparchive.sd7/maps/mymapname.smf
Data Map
- smu = spring map unit, the size you see when in the lobby. roughly between 2 and 64.
Bytes | Type | Description |
---|---|---|
16 | char[] |
Magic number; "spring map file\0" |
4 | int |
Version number; "1" |
4 | unsigned int |
ID, should be as unique as possible. |
4 | int |
Width; smu * 64 |
4 | int |
Length; smu * 64 |
4 | int |
Square size; 8 |
4 | int |
Texels per square size; 8 |
4 | int |
Tile size; 32 |
4 | float |
Depth/min height; 512 = 1*smu |
4 | float |
Height/max height; 512 = 1*smu |
4 | int |
Byte offset to start of height map |
4 | int |
Byte offset to start of type map |
4 | int |
Byte offset to start of tile index |
4 | int |
Byte offset to start of mini map |
4 | int |
Byte offset to start of metal map |
4 | int |
Byte offset to start of features map |
4 | int |
No of extra headers |
align="left" | Header
Bytes | Type | Description |
---|---|---|
4 | int |
Size of the header |
4 | int |
Type of header |
* | * | Data of header |
align="left" | + Extra Headers
Bytes | Type | Description |
---|---|---|
(width+1)*(length+1) | unsigned short[] |
Data for height map. |
align="left" | + Height Map
Bytes | Type | Description |
---|---|---|
(width/2)*(length/2) | char[] |
Data for type map. |
align="left" | + Type Map
Bytes | Type | Description |
---|---|---|
699048 | char[] |
raw DXT1 compressed 1024x1024 image. |
align="left" | + Mini Map
Bytes | Type | Description |
---|---|---|
4 | int |
Number of tile files |
4 | int |
Total number of tiles in all files. |
align="left" | + Tile Index Header
Bytes | Type | Description |
---|---|---|
4 | int |
Number of tiles in this file |
size of filename | char[] |
The filename of the smt. |
align="left" | + SMT File Infos
Bytes | Type | Description |
---|---|---|
(width / 4) * (length / 4) | int[] |
Index numbers of tiles in SMT's |
align="left" | + Tile Index
Bytes | Type | Description |
---|---|---|
(width / 2) * (length / 2) | char[] |
Metal Density |
align="left" | + Metal Map
Bytes | Type | Description |
---|---|---|
4 | int |
Number of features |
4 | int |
Number of feature types |
* | char[] |
List of feature names delimited by null |
align="left" | + Features Header
Bytes | Type | Description |
---|---|---|
4 | int |
Type of feature, corresponds with feature name list. |
4 | float |
X Position (along the width of the map) |
4 | float |
Y Position (Up into the sky) |
4 | float |
Z Position (along the length of the map) |
4 | float |
rotation, not sure of scale |
4 | float |
relative size (not implemented); 1 |
align="left" | + Features
Optional Extra Headers & data
Bytes | Type | Description |
---|---|---|
4 | int |
Size of the header; 12 |
4 | int |
Type of header; 1 |
4 | int |
Byte offset to beginning of grass map |
align="left" | + Grass Extra header
(width / 4) * (length / 4) | unsigned char |
Map defining the grass on the map. not sure what 256 available values mean. |
align="left" | + Grass Data