Обсудим Horizon: Java Edition на Rust, смотрим что получилось

n1ktxs

Пользователь
Сообщения
78
Решения
3
Веб-сайт
n1ktxs.ru
Horizon — Minecraft на Rust
Смотрите, что получилось: Java тоже можно обогнать​

Недавно в TikTok разлетелась тема: Minecraft Java Edition переписали на языке Rust. Проект называется Horizon. Собрал всё в одном месте, давайте обсудим.

Что это
Horizon — неофициальная нативная реализация клиента и игровой логики Minecraft: Java Edition 26.3, написанная на Rust. Она читает те же миры, следует тем же правилам и генерирует тот же ландшафт. Соответствие оригиналу проверяют автоматические тесты: одни и те же входные данные прогоняются через Horizon и через ванильную игру, а результаты сравниваются (на сайте проекта таких проверок 281). Исходный код открыт, лицензия MIT.

Кто это сделал
Автор проекта — Людовик Мари (Ludovic Marie). Он использовал ИИ-агента Claude, и этого никто не скрывает: в документации прямо написано, что большая часть кода создана ИИ-агентами, а надёжность обеспечивают автоматические сверки с оригинальной игрой.

Почему это интересно
Microsoft с её многомиллиардными бюджетами выбрала C++ для Bedrock Edition, и оптимизация была одной из причин. Но, на мой взгляд, принципиальной разницы игроки так и не увидели. Официальной нативной версии Java Edition тоже нет.

А теперь независимый автор из сообщества берёт Java-версию, переписывает её на Rust и получает заметный прирост по ключевым показателям. До этой идеи дошла не студия с огромным штатом, а один энтузиаст.

Что с оптимизацией
Цифры из собственных замеров проекта: одна и та же машина, один и тот же мир, один и тот же маршрут камеры. Horizon против Java 26.3.

Mac mini (Apple M4 Pro), дальность прорисовки 32
  • 1% low FPS: 109 против 8 (в 14 раз выше)
  • время кадра, 95-й перцентиль: 7,7 мс против 88 мс (в 11 раз быстрее)
  • запуск до входа в мир: 16 с против 66 с (в 4 раза быстрее)
  • память: 1,8 ГБ против 2,9 ГБ

ПК (RTX 4080, i7-13700KF)
  • загрузка чанков после телепорта: 1,8 с против 11 с при дальности 12 (в 6 раз) и 4,7 с против 32 с при дальности 32 (в 6,8 раза)
  • запуск до входа в мир при дальности 32: 9 с против 59 с (в 6,5 раза)
  • память: 1,2 ГБ против 2,8 ГБ (в 2,4 раза меньше)

Ноутбук 2016 года (i7-7500U, Intel HD 620)
  • средний FPS: 209 против 126 (в 1,7 раза выше)
  • память: 797 МБ против 2,0 ГБ (в 2,6 раза меньше)

Полные таблицы и методика — на . Авторы сами отмечают там режимы, где Java пока впереди, так что картину стоит смотреть целиком.

Видео
  • ,
  • ,

Как попробовать
Для запуска лаунчера нужна лицензионная копия Minecraft: Java Edition 26.3. Horizon не содержит файлов игры и не скачивает их: ресурсы он собирает из вашей установленной копии.
  1. Установите лицензионный Minecraft: Java Edition 26.3 и запустите его хотя бы один раз.
  2. Установите Java 25 (нужна для первоначальной подготовки файлов).
  3. Скачайте для Windows x64, Linux x86-64 или macOS на Apple Silicon.
  4. Запустите лаунчер: он подготовит ресурсы и установит нужную сборку.

Ссылки

Horizon — независимый проект. Он не является официальным продуктом Minecraft и не связан с Mojang и Microsoft.

А что думаете вы? Может ли такой подход действительно изменить будущее Java-версии, или это пока красивый эксперимент?
 
Интересно потыкать.. Есть ли возможность запустить на пиратке?
 
Мне кажется, не такой уж и фантастический результат, ведь это сравнение между ваниллой и Horizon, но кто играет в ваниллу? Комьюнити годами писало моды на оптимизацию и типичных игрок установит себе хотя бы модпак Fabulously Optimized, что увеличивает FPS в 2-5 раз без ухудшения чего-либо, сохраняя поддержку со всеми шейдерами и модами. А с учётом постепенного перехода на Vulkan ситуация в Java майнкрафте должна стать ещё лучше
 
В виде эксперимента топово. Я вообще всегда за что то новое, может оно и не приживется, но все же эвеолюция. Да и потыкать\разобрать эти тестовые вещи прикольно.
 
Мне кажется, не такой уж и фантастический результат, ведь это сравнение между ваниллой и Horizon, но кто играет в ваниллу? Комьюнити годами писало моды на оптимизацию и типичных игрок установит себе хотя бы модпак Fabulously Optimized, что увеличивает FPS в 2-5 раз без ухудшения чего-либо, сохраняя поддержку со всеми шейдерами и модами. А с учётом постепенного перехода на Vulkan ситуация в Java майнкрафте должна стать ещё лучше

Справедливо, согласен. Их замеры именно против чистой ванили, а у большинства давно стоит Sodium или Fabulously Optimized, так что с модами разрыв будет заметно меньше. Сравнения Horizon именно с оптимизированной Java я пока не видел, и оно было бы очень интересным.

По-моему, суть в другом. Моддеры годами вытягивали производительность поверх существующего движка, а тут попытка переписать игру нативно, без JVM. По их замерам, меньше памяти, быстрее старт и загрузка чанков. И по совместимости с модами и шейдерами у Java сейчас большое преимущество: у Horizon своя система модов, а шейдерпаки они недавно вообще убрали и переписывают. Проект ещё очень молодой.

Про Vulkan согласен, это хорошая новость для Java.

Дополнение: проверил сам
Не удержался и включил старый ноутбук: Intel Core i3-10110U и дискретная GeForce MX130, то есть железо далеко не топовое.

Создание нового мира:
Horizon: около 2 секунд
Java 26.3 + Fabric (Sodium): около 29 секунд
Это примерно в 14 раз быстрее. Понятно, что это один ноутбук и мои личные замеры. Но на слабом железе разница ощущается сразу.

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

Думаю, через день-два, когда тему разберут в TikTok и люди выложат свои замеры, будет понятнее реальная картина, и тогда сюда ещё вернусь. Если кто-то уже что-то мерил, пишите, сравним цифры.
 
Дополнение 2: моды
Полазил по лаунчеру и заметил, что мододельную часть авторы продумали сразу, не оставили на потом. В самом лаунчере есть раздел Mods. Он читает с Modrinth и переносит те моды, которые Horizon умеет запускать. Моды у Horizon на Rust/WebAssembly, перед включением лаунчер показывает, что именно моду разрешено. Для проекта, которому от силы пара недель, это выглядит неожиданно серьёзно
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Последнее редактирование:
Ещё зацепил подход разработчика, он выкатывает по нескольку версий в день, и среди правок хватает исправлений по лагам и производительности.
Так что тут удивительного? Это же нейросеть разрабатывает всё.
 
Horizon — Minecraft на Rust
Смотрите, что получилось: Java тоже можно обогнать​
Как же всех пытаются прогреть на этот Rust. И самое интересное, люди, которые не понимают в чём проблема джавы, реально едят эти нейрослопы.

Вот в чём смысл Rust на клиенте? Быстрее пакет обработает? Быстрее кнопку нажмёт? Про одиночный мир говорить не буду, это отдельная тема про Rust для сервера в майнкрафте.

Самый главный плюс Java это её сообщество и модификация чего угодно. Оно существует с момента создания игры. Никто из разработчиков на Java не пойдёт переписывать свои моды на Rust, только нейронки будут это делать. Опыт bedrock показывает, что люди не будут переходить на "что-то новое" из-за микрооптимизаций.

Главная проблема в Minecraft это даже не джава, а сам подход который был создан Нотчем. Перепиши хоть на голый C, производительность не улучшится. Максимум будет меньшее потребление памяти, но я считаю это временным кризисом в Java и в компьютерах, который в будущем решиться, как обновлением Java, так и системами.

Моё мнение - эти проекты просто умрут из-за постоянных обновлений Minecraft и разработчики не смогут воссоздать 1 в 1 java client
 
…А что думаете вы?…
Объединить с PumpkinMc и можно вообще отказатся от Java…
Но совместимость с тем что уже есть - то что тормозит развитие таких проектов, хотя у PumpkinMc есть какая-то совместимость с Bukkit плагинами написаными под Java.
 
Как же всех пытаются прогреть на этот Rust. И самое интересное, люди, которые не понимают в чём проблема джавы, реально едят эти нейрослопы.

Вот в чём смысл Rust на клиенте? Быстрее пакет обработает? Быстрее кнопку нажмёт? Про одиночный мир говорить не буду, это отдельная тема про Rust для сервера в майнкрафте.

Самый главный плюс Java это её сообщество и модификация чего угодно. Оно существует с момента создания игры. Никто из разработчиков на Java не пойдёт переписывать свои моды на Rust, только нейронки будут это делать. Опыт bedrock показывает, что люди не будут переходить на "что-то новое" из-за микрооптимизаций.

Главная проблема в Minecraft это даже не джава, а сам подход который был создан Нотчем. Перепиши хоть на голый C, производительность не улучшится. Максимум будет меньшее потребление памяти, но я считаю это временным кризисом в Java и в компьютерах, который в будущем решиться, как обновлением Java, так и системами.

Моё мнение - эти проекты просто умрут из-за постоянных обновлений Minecraft и разработчики не смогут воссоздать 1 в 1 java client
Как - будто никто и не говорит что этот раст заменит джаву, все люди бегом сваливайте к нам. Просто создали показать на что способен раст. Даже сами пишут что это фан проект
Объединено

You must be logged in to see this link. Не совсем. Я смог запустить в локал режиме. Но во первых нужно переписать скрипт под новую версию хоризона. А так кайф, спокойно запустил без лицензии.

Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Последнее редактирование:
Как же всех пытаются прогреть на этот Rust. И самое интересное, люди, которые не понимают в чём проблема джавы, реально едят эти нейрослопы.

Вот в чём смысл Rust на клиенте? Быстрее пакет обработает? Быстрее кнопку нажмёт? Про одиночный мир говорить не буду, это отдельная тема про Rust для сервера в майнкрафте.

Самый главный плюс Java это её сообщество и модификация чего угодно. Оно существует с момента создания игры. Никто из разработчиков на Java не пойдёт переписывать свои моды на Rust, только нейронки будут это делать. Опыт bedrock показывает, что люди не будут переходить на "что-то новое" из-за микрооптимизаций.

Главная проблема в Minecraft это даже не джава, а сам подход который был создан Нотчем. Перепиши хоть на голый C, производительность не улучшится. Максимум будет меньшее потребление памяти, но я считаю это временным кризисом в Java и в компьютерах, который в будущем решиться, как обновлением Java, так и системами.

Моё мнение - эти проекты просто умрут из-за постоянных обновлений Minecraft и разработчики не смогут воссоздать 1 в 1 java client

Смысл Rust на клиенте не в том, чтобы быстрее обработать пакет или нажатие кнопки. Смотрят на запуск, загрузку чанков, память и просадки по кадрам. У них 1% low 109 против 8, и это не про память. Я проверил на слабом ноуте: новый мир создаётся за 2 секунды, а на Java с Fabric и Sodium за 29. Понятно, что это один ноут и мои замеры, но на «перепиши на C, и лучше не станет» это не похоже. Памяти тоже стало меньше, 1,2 ГБ против 2,8, и ждать, пока это «решится системами», можно долго.

С Bedrock сравнение не совсем честное. Это другая игра с другим поведением, а Horizon читает те же миры и целится в то же поведение, что и Java. Про моды согласен, переписывать их никто не будет, но никто и не говорит, что Horizon заменит Java. Это эксперимент, и авторы сами так его называют.

Что проект умрёт из-за обновлений, возможно, но это пока предположение. Как раз для этого у них автосверка с ванилой. Проекту пара недель, давай посмотрим через месяц, а не будем хоронить сейчас
 
Объединить с PumpkinMc и можно вообще отказатся от Java…
Но совместимость с тем что уже есть - то что тормозит развитие таких проектов, хотя у PumpkinMc есть какая-то совместимость с Bukkit плагинами написаными под Java.
Pumpkin это серверная часть, Horizon это клиент.

Pumpkin умеет запускать Bukkit-плагины через отдельный проект PatchBukkit, но плагины, завязанные на внутренние классы NMS и CraftBukkit, могут не работать, а на них как раз держится большая часть экосистемы,

по этому я вижу это как два параллельных эксперимента, а не как замену Java
 
Создание нового мира:
Horizon: около 2 секунд
Java 26.3 + Fabric (Sodium): около 29 секунд
Sodium не имеет практически никакого отношения к созданию мира. Он никак не влияет на генерацию, это мод на систему отрисовки
 
Sodium не имеет практически никакого отношения к созданию мира. Он никак не влияет на генерацию, это мод на систему отрисовки
Воспринимай тест как ориентир, а не как строгий бенчмарк, замер все равно один, на моем ноуте
 
Воспринимай тест как ориентир, а не как строгий бенчмарк, замер все равно один, на моем ноуте
Вот сборка модов, на которой запускался 26.3
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Назад
Сверху Снизу