basically, an extensible tagged format. note: db means a byte dw means a word (2 bytes here) dd means a dword (4 bytes here) for starters, there's a header, just in case some clutz decides to use this in AoS db "IceMap", 0x1A, 0x01 then a bunch of chunks follow in the format db "7 Chars", length or, if the length is >= 255: db "7 Chars", 255 dd length the terminator is: db " ", 0 yes, that's 7 spaces. for AoS compatibility, the "header" CAN be at the end, BUT: - MapData is NOT to be defined. - all non-air blocks are assumed to be type 1. - the map MUST be 512x64x512. now, here are the defined chunks as per version 1 of the format. MapData: db "MapData", 255 dd map_length dw len_x, len_y, len_z ; map data goes here this contains the map itself. must appear exactly ONCE, or not at all if using AoS compat. MetaInf: db "MetaInf", length db field_name, 0 db field_data, 0 this contains meta info pertaining to the map. yes, there can be more than one MetaInf with the same name. defined names are: "*Name": name of this map "*Author": who made this map "*Tool": program responsible for making this map any custom names MUST NOT be prefixed with a *; this is reserved for OFFICIALLY DEFINED NAMES ONLY. all tools MUST leave "*Tool" fields intact. this field can appear many times. NOTE: THIS IS CURRENTLY NOT SUPPORTED AND SIMPLY IGNORED BY THE ENGINE. But please include these if you can. MapEnts: db "MapEnts", length ; entity data goes here this contains information regarding entities on the map. entity data is a JSON blob. entities include things like spawn points, pickup locations, etc. see format_icemap_mapents.txt for JSON format and known entity types must appear no more than once.