
Polymer: Альтернативный C++ Клиент для Minecraft
atxi/Polymer
Разрабатываемый клиент Minecraft на C++ и Vulkan.
Посмотреть на GitHub ↗Polymer - это клиент Minecraft на C++ с рендерингом через Vulkan, предназначенный для просмотра миров на офлайн серверах. Он также оснащен камерой для зрителей, оптимизированной загрузкой чанков и поддержкой Minecraft 1.21.4. Если вы хотите изучать огромные миры без застрекания стандартного клиента, или интересуетесь, как альтернативные клиенты обрабатывают рендеринг, этот проект стоит попробовать.
Что Делает Этот Проект
Основная идея: вместо запуска клиента Minecraft на Java, вы запускаете автономное приложение, подключающееся к вашему серверу и рендерящее мир через Vulkan, современный графический API. Проект полностью написан на C++ разработчиком, явно интересующимся оптимизацией графики. Однако он загружает оригинальные активы Minecraft, строит геометрию мира и показывает все с точки зрения зрителя - летая вокруг, наблюдая, как загружаются чанки.
На данный момент ограничен только офлайн серверами. Онлайн режим запланирован, но еще не реализован.
Что делает Polymer уникальным, это то, что это не просто ланчер или мод. Это заново переписанный способ работы рендеринга Minecraft. Последняя версия (v0.0.5) поддерживает Minecraft 1.21.4 и включает серьезные оптимизации: графы связности чанков для пропуска рендеринга скрытых блоков, построение мешей отложено до тех пор, пока чанк не войдет в поле зрения, и 4x многопроборная антиалиасинг. На бумаге эти настройки должны помочь с производительностью рендеринга в тяжелых мирах.
Почему Вам Это Нужно
Честный ответ: большинство игроков не нуждаются в Polymer. Это не замена стандартному клиенту для режимов выживания или творчества. Вы не можете разрушать блоки, размещать что-либо или взаимодействовать с миром традиционным способом. Вы смотрите, а не строите.
Но если вы когда-либо пытались открыть огромный, многолетний SMP мир - скажем, что-то с 10,000+ кастомными зданиями, разбросанными по десяткам чанков - вы знаете, что стандартный клиент может застрять. Загрузка чанков застревает. Рендер дрожит. Это не непроходимо, но и не гладко. Polymer обходит некоторые из этих проблем, используя другой рендерный конвейер. Он также интересен тем, кто любит графику: это доказательство того, что рендеринг Minecraft может быть полностью переимplemented.
Другой аспект: если вы управляете сервером и хотите делать кинематографические скриншоты или создавать тур по миру без проблем с производительностью в режиме выживания, дизайн Polymer для зрителей делает его легковесным вариантом. Вы загружаете мир, летаете вокруг, делаете скриншоты, готово. Никаких изменений файлов, никаких модов, мешающих визуально.
Запуск Polymer
Здесь начинается кривая обучения. Polymer не является модпаком или ланчером. Вам нужно собрать его из исходников.
На Windows процесс выглядит так:
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S . --preset msvcЗатем откройте сгенерированный `build/polymer.sln` в Visual Studio и соберите в режиме x64 Release. Вам нужны MSVC 2022 или Clang, плюс CMake 3.28 или новее. Финальный исполняемый файл находится в `build/Release`.
Сборка шейдеров требует Vulkan SDK (конкретно `glslc`). Загрузите его с LunarG, установите переменную окружения `VULKAN_SDK`, затем запустите `compile_shaders.bat`. Это раздражающая часть, если вы не привыкли к разработке графики - это дополнительный шаг сборки, который не существует в типичных настройках игр.
Linux немного проще, но требует системных зависимостей сначала:
sudo apt-get install libglfw3 libglfw3-dev glslang-tools
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S .
cd build && makeВаш исполняемый файл находится в `build/bin`. Запустите `compile_shaders.sh` для сборки шейдеров.
Перед запуском получите файл `blocks-1.21.4.json` - доступен на странице релизов GitHub или сгенерирован запуском Minecraft с генератором данных. Разместите его там, откуда будете запускать клиент. При первом запуске Polymer скачивает игровые активы (текстуры, звуки, модели) с официального сервера ресурсов Minecraft и кэширует их локально в `~/.polymer/` (Linux) или `%appdata%/Polymer/` (Windows).
По умолчанию, Polymer пытается подключиться к localhost с именем пользователя 'polymer'. Ваш сервер должен быть в офлайн режиме. Переопределите это с помощью флагов командной строки:
polymer.exe -u YourUsername -s 192.168.1.100:25565Один критический деталь: вам нужно быть в режиме зрителя на сервере, чтобы чанки загружались, пока вы летаете вокруг. Честно говоря, если сервер помещает вас в режим выживания, вы увидите только те чанки, которые уже были загружены, что не очень полезно. Войдите в консоль сервера или используйте `/gamemode spectator`, чтобы исправить это.
Ключевые Функции, Строщиеся
Граф связности чанков - это выдающаяся оптимизация здесь. Традиционные рендереры рисуют каждую грань блока, даже те, которые вы никогда не увидите (стороны блоков, погруженные внутрь чанков). Polymer рассчитывает, какие чанки действительно видны, и пропускает геометрию для внутренних граней. Это уменьшает то, что GPU должно обрабатывать.
Отложенное построение мешей также умно. Вместо построения мешей чанков сразу после загрузки, Polymer строит их только тогда, когда они входят в ваше поле зрения. Для серверов с тысячами чанков это экономит память и циклы CPU на чанках, которые вы, возможно, никогда не увидите.
4x многопроборная антиалиасинг лучше гладит заостренные края, чем стандартные настройки ванильного клиента, хотя это идет с производительными издержками в зависимости от вашей GPU. Интерполированные текстуры и тайминг анимации незаметны, но заметны, если вы ищете такие вещи, как анимация воды и смешивание текстур, чтобы чувствовать себя острее.
Производительность будет сильно варьироваться в зависимости от вашего оборудования. Разработчики тестили в основном на Windows; Linux работает, но не сильно оптимизирован. Если у вас средний GPU последних лет, вы должны быть в порядке. Старые интегрированные графики будут бороться с высокими расстояниями рисования.
Питфолы и Ограничения
Polymer - это программное обеспечение на ранней стадии. Ожидайте баги и отсутствующие функции.
Нет физики, нет обнаружения столкновений, нет взаимодействия игрока. Вы не можете разрушать блоки, размещать блоки, открывать сундук или делать что-либо, кроме как смотреть вокруг. Если вы хотите альтернативный клиент для реальной игры, это не то, что вам нужно. Предназначенное использование - это исследование и визуализация.
Онлайн серверы не работают пока. Это жесткое ограничение - код не обрабатывает аутентификацию. Если вы используете Polymer на чужом онлайн сервере, вас отключат. Работает только офлайн режим с `online-mode=false` в server.properties.
Windows - это основная платформа разработки. Linux сборки работают, но тестируются меньше. Поддержка Mac не документирована (система сборки направлена на GLFW, который поддерживает macOS, но никто не подтвердил, что это работает).
Сам процесс сборки капризен. Если вы не знакомы с CMake, файлами проекта Visual Studio или сборкой шейдеров, ожидайте, что потратите время на отладку переменных окружения и пропущенных зависимостей. Это не однократная установка.
О Третьих Клиентах и Анти-Читах
Удаление Polymer чистое. Исполняемый файл автономный, активы кэшируются локально. Удалите исполняемый файл и папку `~/.polymer/` или `%appdata%/Polymer/`, и вы готовы. Ничто не внедряется в вашу установку ванильного Minecraft.
Аналогичные Проекты, Которые Стоит Знать
Если Polymer вас интересует, есть несколько альтернатив в этом пространстве. Minetest - это движок игр в стиле Minecraft, но не сам Minecraft - это больше sandbox для построения игр. Chunky - это инструмент рендеринга, создающий высококачественные статические изображения миров Minecraft с помощью трассировки лучей, но это не реальное время и не клиент. VoxelMap - это мод, добавляющий миникарту и функцию путешествий в ванильный клиент, но это наложение, а не заново переписанный клиент.
Polymer единственный в своем роде как клиент с нуля на C++ с современными графическими API. Это одновременно его привлечение и ограничение - меньше функций, чем у модов, но потенциально лучше производительность и более экспериментальные методы рендеринга.
Если вы хотите настроить, как выглядит ваш персонаж при исследовании, посетите Создатель Скинов Minecraft - вы можете спроектировать уникальный вид перед подключением к серверу. А если вы планируете запускать любую серверную коммуникацию или метки для построек, Генератор Текста Minecraft делает создание отформатированного текста простым.
Мое Мнение
Polymer fascинирован с технической точки зрения. Смотреть, как мир Minecraft рендерится через совершенно другой конвейер, интересно, особенно если вам интересно, как работают игровые движки. Оптимизации реальны, код чист, и этоsolid доказательство того, чем мог бы быть Minecraft, если бы он отказался от Java в пользу Vulkan.
Для实际ного использования? Я бы сказал, что это стоит собрать и попробовать хотя бы раз, особенно если у вас есть большой мир на локальном сервере и вы любопытны относительно производительности рендеринга. Но не ожидайте, что он заменит ваш основной клиент. Это просмотрщик, а не игрок, и он все еще груб вокруг углов на v0.0.5. Разработчик явно работает над этим, и поддержка онлайн режима идет, но мы еще не там.
Если у вас есть несколько часов, чтобы потратить на сборку и компиляцию шейдеров, и вы интересуетесь тем, что могут современные графические API для Minecraft, вперед. Просто установите ожидания: вы тестируете экспериментальное программное обеспечение, а не используете законченный альтернативный клиент.
atxi/Polymer - MIT, ★135Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.


