Java выкинули из Minecraft. Новый клиент на Rust грузит мир в 6,5 раза быстрее
Независимые разработчики заново реализовали Minecraft: Java Edition 26.3 на языке Rust и добились заметного сокращения времени загрузки и потребления памяти на части компьютеров. Проект Horizon представляет собой отдельный клиент, написанный с нуля, а не новую версию Minecraft от Mojang или Microsoft. Для запуска требуется легально приобретённая копия Minecraft: Java Edition 26.3.
Horizon использует игровые файлы из установленной пользователем Java Edition, читает те же сохранения, воспроизводит игровую логику и генерирует такой же мир. Код, ресурсы и другие данные Minecraft в проект не входят. Миры версий от 1.8 до 26.2 можно открыть после преобразования данных по правилам оригинальной игры.
Разработчики проверяют совместимость Horizon с оригиналом при помощи автоматических дифференциальных тестов, которые передают одинаковые входные данные Rust-реализации и обычному Minecraft, а затем сравнивают результаты. Основная страница проекта пока указывает 281 такой тест, а более свежая документация от 25 октября уже насчитывает 326. Авторы отдельно предупреждают, что успешное прохождение проверок подтверждает совпадение охваченных тестами компонентов, но не гарантирует полного отсутствия различий во всей игре.
Одной из главных целей Horizon стала производительность. Клиент компилируется в нативный код и не использует виртуальную машину Java, а генерация, освещение и подготовка чанков выполняются в отдельных рабочих потоках. Разработчики также сократили число операций отрисовки и переносят запись выгружаемых чанков на диск в фоновый режим.
Опубликованные тесты показывают заметный выигрыш в некоторых задачах, однако универсального ускорения Minecraft в несколько раз нет. На компьютере с Core i7-13700KF и GeForce RTX 4080 при дальности прорисовки 32 чанка Horizon загружал мир за девять секунд против 59 секунд у Java Edition, то есть примерно в 6,5 раза быстрее. Загрузка чанков после телепортации заняла в среднем 4,7 секунды вместо 32 секунд, а потребление памяти во время игры составило 1,6 ГБ против 3,3 ГБ.
При меньшей дальности прорисовки на той же системе Horizon показал 2993 кадра в секунду против 2600 у Java Edition. При 32 чанках ситуация изменилась: обычный Minecraft достиг 849 кадров в секунду против 672 у Horizon. Минимальная частота кадров и время отрисовки отдельных кадров при такой настройке тоже оказались лучше у Java Edition.
На старом ThinkPad с Core i7-7500U и Intel HD Graphics 620 Horizon при дальности 12 чанков использовал 797 МБ памяти против 2 ГБ у Java Edition и показывал в среднем 209 кадров в секунду вместо 126. Загрузка чанков после телепортации, напротив, заняла 60 секунд против 47 секунд у оригинальной игры. Все приведённые сравнения проводила сама команда Horizon на собственном оборудовании.
Разработчики объясняют часть разницы отсутствием виртуальной машины Java и связанных с ней пауз сборщика мусора, но сам выбор Rust не означает автоматического ускорения программы в несколько раз. Производительность зависит от реализации конкретных подсистем, распределения работы между потоками, рендеринга, драйверов и оборудования.
Horizon получил и собственную систему модов, однако привычные Forge, NeoForge, Fabric и Quilt с ней несовместимы. Модификации пишутся на Rust, компилируются в WebAssembly и запускаются в песочнице. Перед включением пользователь видит запрашиваемые возможности, а игра ограничивает доступ мода к файлам, сети и другим программам.
Штатный API пока находится на ранней стадии. Клиентские моды могут получать сведения о персонаже и игровом времени, выводить элементы интерфейса и сообщения, добавлять команды и хранить собственные небольшие файлы. Контентные модификации способны добавлять блоки, предметы, рецепты, модели и текстуры, тогда как серверные моды с собственными игровыми правилами и событиями разработчики ещё создают. Поэтому утверждение о полном снятии ограничений для моддинга пока не соответствует возможностям Horizon.
Границы нынешнего API хорошо показывает экспериментальная модификация Orbital Laser. Версия 0.5.2 предлагает семь вариантов орбитального удара: Plasma, Godly, Black Hole, Meteor Storm, Mothership, Downfall и Planet Killer. Последний вариант оставляет кратер примерно 480 блоков в диаметре, пробивает шахту до нижней границы мира и изменяет территорию на сотни блоков вокруг цели.
Обычная версия Horizon пока не предоставляет Orbital Laser всех необходимых возможностей. Модификации требуется перехватывать использование предметов, создавать собственный интерфейс, выводить графические эффекты и напрямую изменять мир, поэтому автор использует отдельную ветку Horizon с расширенным API. Готовая сборка такой версии рассчитана на Linux x86-64, а Windows и macOS разработчик Orbital Laser пока не тестировал.
Сам Horizon уже работает на Linux x86-64, Windows x64 и компьютерах Mac с процессорами Apple Silicon. Для Windows поддерживаются Vulkan и DirectX 12, для Linux требуется Vulkan. Версий для Intel Mac, 32-разрядных систем и ARM-компьютеров под Windows и Linux пока нет.
Сетевая совместимость также остаётся неполной. Horizon может подключаться к серверам Minecraft 26.3 без проверки учётной записи, работать по локальной сети и запускать собственный сервер, к которому подключаются обычные клиенты Java Edition. Большинство публичных серверов и Realms пока недоступны, поскольку Horizon ещё не поддерживает вход через учётную запись Microsoft, необходимый для серверов с проверкой владельца игры.
Необычна и организация разработки проекта. Автор Horizon Людовик Мари прямо указывает, что значительную часть кода создают ИИ-агенты, прежде всего запущенные разработчиком сессии Claude, а также инструменты участников проекта. Изменения проходят автоматические проверки, сравнение с поведением Minecraft и тестирование перед выпуском релизов.