documentation update (mapformat.txt mainly)
parent
bf22dba687
commit
6bd4cb2562
|
@ -0,0 +1,75 @@
|
||||||
|
I'll try to quickly document the newest block format in here (might contain
|
||||||
|
errors). Refer to the mapgen or minetestmapper script for the directory
|
||||||
|
structure and file naming. There are two sector namings possible,
|
||||||
|
sector/XXXXZZZZ and sector/XXX/ZZZ.
|
||||||
|
|
||||||
|
There also exists files map_meta.txt and chunk_meta, that are used by the
|
||||||
|
generator. If they are not found or invalid, the generator will currently
|
||||||
|
behave quite strangely.
|
||||||
|
|
||||||
|
The MapBlock file format (sectors2/XXX/ZZZ/YYYY):
|
||||||
|
|
||||||
|
NOTE: Byte order is MSB first.
|
||||||
|
|
||||||
|
u8 version
|
||||||
|
- map format version number, this one is version 17
|
||||||
|
|
||||||
|
u8 flags
|
||||||
|
- Flag bitmasks:
|
||||||
|
- 0x01: is_underground: Should be set to 0 if there will be no light
|
||||||
|
obstructions above the block. If/when sunlight of a block is updated and
|
||||||
|
there is no block above it, this value is checked for determining whether
|
||||||
|
sunlight comes from the top.
|
||||||
|
- 0x02: day_night_differs: Whether the lighting of the block is different on
|
||||||
|
day and night. Only blocks that have this bit set are updated when day
|
||||||
|
transforms to night.
|
||||||
|
- 0x04: lighting_expired: If true, lighting is invalid and should be updated.
|
||||||
|
If you can't calculate lighting in your generator properly, you could try
|
||||||
|
setting this 1 to everything and setting the uppermost block in every
|
||||||
|
sector as is_underground=0. I am quite sure it doesn't work properly,
|
||||||
|
though.
|
||||||
|
|
||||||
|
zlib-compressed map data:
|
||||||
|
- content:
|
||||||
|
u8[4096]: content types
|
||||||
|
u8[4096]: param1 values
|
||||||
|
u8[4096]: param2 values
|
||||||
|
|
||||||
|
zlib-compressed node metadata
|
||||||
|
- content:
|
||||||
|
u16 version (=1)
|
||||||
|
u16 count of metadata
|
||||||
|
foreach count:
|
||||||
|
u16 position (= p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
|
||||||
|
u16 type_id
|
||||||
|
u16 content_size
|
||||||
|
u8[content_size] misc. stuff contained in the metadata
|
||||||
|
|
||||||
|
u16 mapblockobject_count
|
||||||
|
- always write as 0.
|
||||||
|
- if read != 0, just fail.
|
||||||
|
|
||||||
|
foreach mapblockobject_count:
|
||||||
|
- deprecated, should not be used. Length of this data can only be known by
|
||||||
|
properly parsing it. Just hope not to run into any of this.
|
||||||
|
|
||||||
|
u8 static object version:
|
||||||
|
- currently 0
|
||||||
|
|
||||||
|
u16 static_object_count
|
||||||
|
|
||||||
|
foreach static_object_count:
|
||||||
|
u8 type (object type-id)
|
||||||
|
s32 pos_x * 1000
|
||||||
|
s32 pos_y * 1000
|
||||||
|
s32 pos_z * 1000
|
||||||
|
u16 data_size
|
||||||
|
u8[data_size] data
|
||||||
|
|
||||||
|
u32 timestamp
|
||||||
|
- Timestamp when last saved, as seconds from starting the game.
|
||||||
|
- 0xffffffff = invalid/unknown timestamp, nothing will be done with the time
|
||||||
|
difference when loaded (recommended)
|
||||||
|
|
||||||
|
// END
|
||||||
|
|
|
@ -174,6 +174,12 @@ TODO: Better control of draw_control.wanted_max_blocks
|
||||||
|
|
||||||
TODO: Block mesh generator to tile properly on smooth lighting
|
TODO: Block mesh generator to tile properly on smooth lighting
|
||||||
|
|
||||||
|
TODO: Further investigate the use of GPU lighting in addition to the
|
||||||
|
current one
|
||||||
|
|
||||||
|
TODO: Quick drawing of huge distances according to heightmap has to be
|
||||||
|
tested once again.
|
||||||
|
|
||||||
Configuration:
|
Configuration:
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue