Энтузиаст запустил cамый маленький в мире сервер Minecraft на микроконтроллере за 1$

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

Энтузиаст запустил Minecraft-совместимый сервер на микроконтроллере стоимостью всего один доллар. Проект под названием «bareiron» позволяет нескольким игрокам выживать в бесконечном процедурно генерируемом мире, несмотря на то, что работает на чипе, в десятки тысяч раз уступающем по мощности современному смартфону.


Minecraft-серверы известны своими высокими требованиями к ресурсам — для их стабильной работы необходимы гигагерцы процессорной частоты и гигабайты оперативной памяти. Однако программист-энтузиаст смог обойти эти ограничения, запустив игру на микроконтроллере ESP32-C3 с тактовой частотой 160 МГц и менее чем 300 килобайтами доступной памяти.

Автор: LeVK, post-apocalyptic (CC BY-SA 2.0) Источник: www.flickr.com

Секрет успеха кроется в том, что это не официальный сервер от Mojang. Автор проекта, известный энтузиаст в сфере экзотического моддинга видеоигр PortalRunner, написал собственную версию с нуля на языке программирования C, поставив во главу угла максимальную производительность и оптимизацию. Для достижения цели ему пришлось пойти на множество компромиссов и «срезать углы» практически во всех аспектах игры.

Ключевым компромиссом стала система генерации мира. Вместо сложного и ресурсоёмкого алгоритма «шум Перлина», используемого в оригинальной игре, «bareiron» применяет билинейную интерполяцию, псевдослучайный шум инесколько других ресурсно-эффективных техник. Этот подход позволяет генерировать ландшафт «на лету» в момент, когда игрок входит в новую область, и не хранить данные о мире в памяти.

Цена такой оптимизации — упрощение ландшафта: биомы представляют собой острова одинаковой формы, расположенные в виде сетки, а пещеры — это просто зеркальное отражение поверхности.

Серьёзные упрощения коснулись и игрового процесса. Предметы не выпадают из блоков, а сразу попадают в инвентарь; печи работают мгновенно, как верстаки; искусственный интеллект мобов примитивен — они просто идут в сторону ближайшего игрока без обхода препятствий. Жидкости растекаются мгновенно, а саженцы не растут сами — для этого нужен костный порошок.


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

Кроме того, все изменения, внесённые игроками (построенные или разрушенные блоки), хранятся в специальном массиве. Его объём ограничен — на микроконтроллере можно сохранить около 25 тысяч изменений, что эквивалентно выкопанным полутора чанкам.

Тем не менее, даже при этих упрощениях, созданный PortalRunner сервер остался полностью совместимым с неизменённым клиентом Minecraft версии 1.21.8, поддерживает условно-бесконечную генерацию мира, множество «классических» биомов и допускает полноценный игровой процесс на базовом уровне.

По словам автора, загрузка одного чанка (фрагмента мира) занимает около 200 миллисекунд. Проблемы с производительностью начинаются при подключении более трёх игроков. Кроме того, у проекта есть и другие ограничения: сервер полностью доверяет данным от клиента, что открывает простор для читерства, а отсутствие сжатия сетевого трафика требует от всех участников стабильного и быстрого интернет-соединения.

Сам создатель признаётся, что его мотивацией был не коммерческий интерес, а инженерный вызов и желание доказать, что даже крошечный чип за один доллар, потребляющий всего полватта энергии, способен запустить нечто столь комплексное, как Minecraft. Проект является открытым, и любой желающий может ознакомиться с его кодом на GitHub и попробовать запустить сервер самостоятельно.

Читайте также

Новости

Публикации