Arqade Asked by user143228 on August 22, 2021
Minecraft stores world data per region (512×512 blocks) in compressed .mca
files. That means that 1 region is equal to 1024 chunks. What, roughly, is the approximate memory size of a chunk as a part of a .mca file?
This answer is updated for 1.13 block format change, see the answer history for older versions of the world storage format
The actual terrain is stored in the region, DIM1 and DIM-1 sub-folders of the world save folder.
Each file there contains up to 1024 (32x32) chunks (you can check out What is a chunk). All chunk in a single file are from what is called a "region" of 512x512 potential blocks. The region file may contain less than 1024 chunks if the region is not fully explored and some chunks are not yet generated.
Since each region is generally explored to a different extent, the sizes of region files can vary wildly and an average number is not very useful. We can however make some estimations for the average size of a fully explored region.
Each chunk is split vertically in 16 sections each 16 blocks high (stacked on top of each other). The game stores information only about the bottom sections where there are blocks. For example if the terrain goes up to y=82, the game will store the bottom 6 sections (6*16=96 height, just enough for height 82) and all blocks above y=96 are implicitly considered to be air and are not stored in the file.
Now we are going to make some assumptions. Let's say:
This means that the the region file contains 1024 chunks * 5 sections = ~5000 sections.
Each section contains 16 x * 16 z * 16 y blocks = 4096 blocks. To store each block in a section the game gets collects all unique blocks+states in a 'block palette' e.g.
index | block state |
---|---|
0 | name: "minecraft:stone" |
1 | name: "minecraft:water" |
2 | name: "minecraft:water", level: 1 |
3 | name: "minecraft:light_blue_stained_glass_pane", east: "true", south: "true", waterlogged: "true" |
4 | name: "minecraft:air" |
and then stores an array of indices in the palette, e.g. 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 1, 1, 2, 1, 1, 1, 3, 0, 0, 0, ....
The palette itself can vary wildly in size depending on how many different kinds of blocks there are and how complex are they. A section with only solid stone will have one palette entry while a section with a redstone contraption or a market square by your favourite builder can have hundreds of entries.
This means it is time for some more assumptions:
So in a single section we'll have:
One section turns out to be ~6500 bytes. 5000 sections are 32.5 MB
Before being stored in the file, each chunk is compressed with generic gzip compression, which I'll assume reduces the size to about 10% of the original (Typically, chunks are mostly smooth stone and light level 0, but the compression rate can vary a lot depending on what is actually in the chunk).
So our final estimate would be that a fully explored region file is about 32.5*0.1 = about 35MB.
Knowing this we can estimate the size of the whole Overworld by simply calculating (number of explored chunks) * 5 sections per chunk * 6500 bytes * 0.1 compression = (number of explored chunks) * 3500 bytes.
In the Nether, the average sections in each chunk would be 8 (height = 128).
In The End, the average sections in each chunk around the center would be more like 1, because there is a lot of void around the main island.
Correct answer by Kcats on August 22, 2021
1.13 brings changes. I believe they're now saving the block ID (or maybe it's the block state, or both) in a palette for each chunk since they've used up all the block IDs with about 256 different block types now. So the palette only contains the block types used in that chunk. Usually 1 byte (8 bits) is enough since 99% of the time you won't have more than 256 block types in a chunk. A chunk can have 16x256x16=65536 possible block types.
The metadata is also now moved to a block state so it is not limited to 4 bits (only 2^4=16 possible states).
Answered by error on August 22, 2021
Minecraft worlds are using the mcanvil(.mca) format. This format stores each block with 12 bits. That would make 49152 bits or 6144 bytes on an 16x16x16 block area. That would make 96MB as a maximum size on an 32x16x32 chunk area per mcanvil-file. This format is used since as I know release 1.0.
Let me know if I'm wrong.
Answered by MCLP2005 on August 22, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP