Об обновлении формата карт в Minecraft (Java Edition 1.13 / Bedrock 1.3)

Томмазо Кекки, ведущий разработчик Minecraft Bedrock, недавно рассказал, что работает над техническим совершенствованием игры.  Речь идёт о нескольких важных элементах:

  • Доработка режима повышенной производительности «Plutonium Mode»;
  • Использование палитры в формате карты.

Давайте разберёмся, что он имел в виду.

 

«Plutonium Mode» будет называться «Server Instance Thread»

Речь, естественно, идёт не о простом переименовании (новое название можно перевести как «Отдельный поток сервера»), а о технических доработках нового режима. Вообще, в самом режиме ничего уникального нет. Речь идёт о том, что клиентская и серверная часть игры будут работать параллельно, не мешая друг другу. Упрощая, можно сказать, что игра логически разделена на два программных комплекса: серверная часть, обеспечивающая логику, и клиентскую часть игры, которая обеспечивает отображение, управление и т.п.. Выполнение их в разных потоках позволит не только повысить производительность, но и избавиться от ряда ошибок. Уверен, что моя самая ненавистная ошибка, исправленная в Minecraft Bedrock 1.2.6, проявлялась именно из-за путаницы с тем, что нужно делать на серверной, а что на клиентской части игры.

 

Как изменится формат карт в будущих версиях Minecraft

В Minecraft 1.13 будет снято ограничение на числа возможных блоков (фактически, это уже реализовано в снапшотах). На словах это звучит очень хорошо, однако для этого разработчикам потребовалось изменить ещё и формат карт. Причем, речь идёт не о простом масштабировании (иначе размер сохраняемых миров вырос бы во много раз), а об изменении ряда принципов.

Дело в том, что карта составляется из отдельных кусочков, называемых чанками — это такие кубы размером 16х16×16 блоков. Сейчас, каждый блок в чанке представлен числом от 0 до 255. Блока с номером 256 записать (нормальным способом) нельзя. Собственно, из этого и складывалось ограничение на число блоков. Для того чтобы добавить 256 блок, нужно было что-то придумывать с форматом хранения миров.

Разработчики решили эту проблему кардинально. Они решили добавить в каждый чанк палитру блоков, а в перечне блоков, кодировать не его название или идентификатор, а номер блока в этой палитре.

Это очень наглядно видно, если открыть карту, которая была сохранена в одном из последних снапшотов, в NBT-редакторе.

Здесь мы видим, что палитра блоков рассматриваемого чанка довольно бедна: есть блоки воздуха, бедрока, камня, каменного угля, редстоуновой, железной и золотой руды, гравия и гранита.

Данные же о блоках закодированы в виде списка состояний блоков — BlockStates. В нём будут кодироваться данные о том, какой блок из палитры установлен в определённой точке чанка.

Это всё очень упрощенно. Если вам нужны подробности, то рекомендую ознакомиться со статьей на wiki.vg.

Интересно, что схожие изменения произойдут и в Minecraft Bedrock — Томмазо Кекки рассказал об этом в твиттере. Формат сохранения миров в Bedrock отличается, но общий принцип будет таким же. Томмазо, также отмечает, что это приведёт к уменьшению потребления памяти устройства.

Это значит, что одно из главных изменений, которое планировалось в техническом обновлении Minecraft Java Edition 1.13, будет также реализовано и в Minecraft Bedrock.  И получается, что Minecraft 1.3 будет таким же техническим обновлением, каким планировали сделать Minecraft 1.13 (пока его не решили объединить  с Морским обновлением).

 

Объединят ли Minecraft Bedrock 1.3 с Морским обновлением

Напомню, что главной фишкой Minecraft 1.3 должно было стать графическое дополнение, которое будет продаваться отдельно. По крайней мере на версию Minecraft для Xbox One, которая будет включать в себя этот и ряд других наборов, уже можно оформить предварительный заказ, а на сайте Amazon можно заказать и сам набор ресурсов.  Для игроков, которые решат отказаться от графического набора, версия 1.3 должна оказаться исключительно технической: повышение производительности и минимум визуальных изменений.

Конечно, в этом случае возникает вопрос: Если разработчики Minecraft Java Edition решили объединить Морское обновление и техническое, то не поступят ли также и разработчики Minecraft Bedrock?

Такое развитие событий мне представляется сомнительным. Всё-таки «Супер-пупер графический набор» (Super Duper Graphics Pack) должен стать отдельным продуктом. Чтобы им заинтересовались и новые игроки, и те, кто уже приобрел себе игру, его надо продавать отдельно. И продвигать отдельно. Мне кажется, что именно так и планировали разработчики. В раскрутку набора ресурсов уже вложено слишком много усилий: это и отдельные презентации на E3, и музыкальный видеоклип, показанный на Майнконе.

6 thoughts on “Об обновлении формата карт в Minecraft (Java Edition 1.13 / Bedrock 1.3)

  1. Палитра блоков, это-же по сути значит что теперь кодируется сначала чанк, потом что в нем есть, и потом где это все находится. Получается теперь чанк с просто кучей блоков камня будет весить меньше чанка базой, даже если 1 будет сверху до низа куском камня, а 2 будет на равнине и на 64 высоте

    1. Ничего не понял.
      Есть чанк, технический — 16х16х16. При записи на диск записывается палитра — это список nbt-тегов, а расположение блоков из этой палитры — уже в BlockStates (по сути это байтовый массив, хотя он там представлен как массив long int).
      Причём элемент записи в BlockStates может быть разным. Т.е. если в палитре всего лишь 2 блока, то размерность записи может быть — 1 бит.
      В этом случае кодирования 4096 блоков потребуется столько же бит, т.е. 512 байт (не считая заголовка blockstates и самой палитры).
      Т.е. в отдельных случаях чанки будут занимать места меньше.
      Но если в чанке огромное число блоков и все разные — то потребуется больше места.
      Но это будет гораздо меньше, чем если бы была общая палитра блоков на всю игру.

      1. Я это и имел ввиду, то есть эту палитру разделили на чанки, а раньше по сути она была 1 на всю карту

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *