Майнкрафт альфа — Alpha (формат карты)
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, который хранит информацию об уровне глобально (время, здоровье игрока, инвентарь, скорость, положение на карте и т.д.) тот самый мир.