Alpha (формат карты) — Minecraft

Майнкрафт альфа — Alpha (формат карты)

Alpha (формат карты) — Minecraft
Alpha (формат карты) — Minecraft

Minecraft Indev представила новую систему хранения, пока она находилась в разработке. Ландшафт, созданный в Infdev, потенциально может занимать почти 235 петабайт, что составило бы 240 640 терабайт при хранении в памяти из-за размера карты (которая в несколько раз больше поверхности Земли). Чтобы уменьшить размер этого файла и использование памяти, Нотч решает разделить ландшафт на 16 х 128 х 16 сегментов и сохранить их, когда они не видны.

Кроме того, местность появляется только тогда, когда она находится в пределах прямой видимости игрока, что значительно сокращает пространство для сохранения, поскольку большинству игроков удается исследовать лишь очень небольшую часть карты за разумное время. Minecraft Alpha использует эту технику, Minecraft Beta и Minecraft 1.0 используют эту общую концепцию из-за ее успеха.

Структура мира в папке.

Альфа-уровень — это отдельная папка, которая содержит по крайней мере один файл с именем «level.dat» и один файл с именем «session.lock», который гарантирует, что только один Minecraft открывает этот уровень одновременно.

Папка уровня может иметь до 64 папок, и этот уровень может содержать 64 подпапки. Эти папки содержат сегменты или «фрагменты», которые содержат ландшафт и объекты. Каждый сегмент или «фрагмент» файла идентифицируется по его положению в xPos и ​​zPos. Части вариантов имени файла каждого фрагмента получаются путем использования base36 xPos и ​​zPos. Имена папок, в которых находится файл фрагмента, находятся путем взятия xPos и ​​zPos по модулю 64 и преобразования в основание 36. Отрицательные координаты должны интерпретироваться как положительные числа, побитовые с дополнением до 2. Таким образом -13 интерпретируется как 243 (если его размер был в байтах)

Например, чтобы найти фрагмент в позиции (-13, 44):

Имя папки — base36 (-13 % 64). Это base36(243 % 64 = 51) , что равно 1f. Имя второй папки — base36 (44% 64). Это base36 (44), что равно «18». Имя файла чанка — «c». + base36(-13) + «.» + base36(44) + «.dat». Это оценивается как «c.-d.18.dat». Таким образом, фрагмент в позиции (-13, 44) сохраняется в файле «1f/18/c.-d.18.dat».

Каждый фрагмент запоминает независимые от позиции имена файлов и папок.

Minecraft Beta 1.3 представила MCRegion, где чанки хранятся в группах 32×32 в файлах региона.

Габаритные размеры.

Измерения сохраняются так же, как и миры, но вместо того, чтобы перемешивать файлы мира в папке сохранения, они сохраняются в подпапках со своей собственной информацией о регионе и фрагменте. Имена начинаются с «DIM», за которым следует идентификатор измерения.

Это были идентификаторы, используемые в Minecraft Alpha.

ID папки Dimension 0 saves/[World]/ Normal world (Overworld), всегда сохраняется в папке DIM -1 saves/[World]/DIM-1/ The Nether, добавленной в хэллоуинском обновлении.

Формат сеанса .lock.

Session.lock содержит отметку времени последнего вмешательства в мир. Файл имеет длину 8 байт и содержит один знаковый 64-битный интеграл в формате с порядком байтов. Значение этого интеграла соответствует метке времени, которая представляет количество миллисекунд, прошедших с 1970 года в формате UTC.

В отличие от обычных файлов блокировки, session.lock гарантирует, что им владеет последняя программа, открывшая этот мир. Процесс происходит следующим образом:

Программа открывает session.lock.

Программа создает запись времени в session.lock.

Программа отслеживает изменения в session.lock.

Если содержимое session.lock изменится, программа прекратит работу и оставит блокировку мира.

level.dat Формат.

Файл level.dat сжат в GZip в формате NBT, который хранит информацию об уровне глобально (время, здоровье игрока, инвентарь, скорость, положение на карте и т.д.) тот самый мир.