Томмазо Кекки, ведущий разработчик Minecraft Bedrock, недавно рассказал, что работает над техническим совершенствованием игры. Речь идёт о нескольких важных элементах:
- Доработка режима повышенной производительности «Plutonium Mode»;
- Использование палитры в формате карты.
Давайте разберёмся, что он имел в виду.
«Plutonium Mode» будет называться «Server Instance Thread»
Речь, естественно, идёт не о простом переименовании (новое название можно перевести как «Отдельный поток сервера»), а о технических доработках нового режима. Вообще, в самом режиме ничего уникального нет. Речь идёт о том, что клиентская и серверная часть игры будут работать параллельно, не мешая друг другу. Упрощая, можно сказать, что игра логически разделена на два программных комплекса: серверная часть, обеспечивающая логику, и клиентскую часть игры, которая обеспечивает отображение, управление и т.п.. Выполнение их в разных потоках позволит не только повысить производительность, но и избавиться от ряда ошибок. Уверен, что моя самая ненавистная ошибка, исправленная в Minecraft Bedrock 1.2.6, проявлялась именно из-за путаницы с тем, что нужно делать на серверной, а что на клиентской части игры.
Plutonium Mode became "Server Instance Thread". Plutonium mode put like, 60% of the work on another thread, but was still synchronized. Server Instance Thread puts 100% and lets the server run at its own speed, so it should be much better :) https://t.co/gbEUsOQ2Kr
— Tommaso Checchi (@_tomcc) 27 января 2018 г.
Как изменится формат карт в будущих версиях Minecraft
В Minecraft 1.13 будет снято ограничение на числа возможных блоков (фактически, это уже реализовано в снапшотах). На словах это звучит очень хорошо, однако для этого разработчикам потребовалось изменить ещё и формат карт. Причем, речь идёт не о простом масштабировании (иначе размер сохраняемых миров вырос бы во много раз), а об изменении ряда принципов.
Дело в том, что карта составляется из отдельных кусочков, называемых чанками — это такие кубы размером 16х16×16 блоков. Сейчас, каждый блок в чанке представлен числом от 0 до 255. Блока с номером 256 записать (нормальным способом) нельзя. Собственно, из этого и складывалось ограничение на число блоков. Для того чтобы добавить 256 блок, нужно было что-то придумывать с форматом хранения миров.
Разработчики решили эту проблему кардинально. Они решили добавить в каждый чанк палитру блоков, а в перечне блоков, кодировать не его название или идентификатор, а номер блока в этой палитре.
Это очень наглядно видно, если открыть карту, которая была сохранена в одном из последних снапшотов, в NBT-редакторе.
Здесь мы видим, что палитра блоков рассматриваемого чанка довольно бедна: есть блоки воздуха, бедрока, камня, каменного угля, редстоуновой, железной и золотой руды, гравия и гранита.
Данные же о блоках закодированы в виде списка состояний блоков — BlockStates. В нём будут кодироваться данные о том, какой блок из палитры установлен в определённой точке чанка.
Это всё очень упрощенно. Если вам нужны подробности, то рекомендую ознакомиться со статьей на wiki.vg.
Интересно, что схожие изменения произойдут и в Minecraft Bedrock — Томмазо Кекки рассказал об этом в твиттере. Формат сохранения миров в Bedrock отличается, но общий принцип будет таким же. Томмазо, также отмечает, что это приведёт к уменьшению потребления памяти устройства.
I've been working on adding Palettization (like the Java one) to Bedrock, and it's working :)
Blocks take ~66% less space, so the game should use quite a bit less memory when it's out!— Tommaso Checchi (@_tomcc) 27 января 2018 г.
Это значит, что одно из главных изменений, которое планировалось в техническом обновлении 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, и музыкальный видеоклип, показанный на Майнконе.
Палитра блоков, это-же по сути значит что теперь кодируется сначала чанк, потом что в нем есть, и потом где это все находится. Получается теперь чанк с просто кучей блоков камня будет весить меньше чанка базой, даже если 1 будет сверху до низа куском камня, а 2 будет на равнине и на 64 высоте
Ничего не понял.
Есть чанк, технический — 16х16х16. При записи на диск записывается палитра — это список nbt-тегов, а расположение блоков из этой палитры — уже в BlockStates (по сути это байтовый массив, хотя он там представлен как массив long int).
Причём элемент записи в BlockStates может быть разным. Т.е. если в палитре всего лишь 2 блока, то размерность записи может быть — 1 бит.
В этом случае кодирования 4096 блоков потребуется столько же бит, т.е. 512 байт (не считая заголовка blockstates и самой палитры).
Т.е. в отдельных случаях чанки будут занимать места меньше.
Но если в чанке огромное число блоков и все разные — то потребуется больше места.
Но это будет гораздо меньше, чем если бы была общая палитра блоков на всю игру.
Я это и имел ввиду, то есть эту палитру разделили на чанки, а раньше по сути она была 1 на всю карту
Ну, спасибо за такие подробности!
Бред какой-то
Что именно смущает?