QuantumHy
ActiveHytale • Version 0.2.3
QuantumHy делает ваш клиент плавнее в Hytale, урезая то, сколько сервер просит его отрисовывать, и подстраивает это под каждого игрока в зависимости от того, где вы находитесь. На открытом пространстве у вас полный обзор; в людном, тяжёлом месте он стягивает картинку, чтобы ваш FPS не проседал.
Клиент Hytale нативный, поэтому ни один мод не трогает рендерер. Что серверный мод может сделать, так это решить, сколько каждому клиенту приходится отрисовывать, и в этом весь приём: меньше чанков и сущностей в обзоре означает меньше объектов для отрисовки, а значит больше кадров.
Два честных ограничения. Он помогает только там, где установлен (ваш одиночный мир, ваш собственный сервер или сервер, который его использует), но не на сервере, к которому вы просто подключаетесь. И он никогда не раздвигает ваш обзор дальше того, что вы запросили: ваш собственный радиус обзора это потолок, QuantumHy только опускает его.
Производительность
Захват frametime в Hytale Client. Один и тот же тестовый ПК во всех прогонах.
Тестовый ПК
| Компонент | Spec |
|---|---|
| CPU | AMD Ryzen 5 3600 |
| GPU | NVIDIA GeForce GTX 1650 4GB |
| RAM | 16 ГБ (2×8 ГБ) |
Маршрут нагрузки
Одиночный мир, тот же маршрут нагрузки (птицы и мобы на экране). Mod off против QuantumHy по умолчанию (~205 с off, ~233 с on).
| Метрика | Off | On | Изменение |
|---|---|---|---|
| Средний FPS | 102 | 146 | +43% |
| P5 | 51,6 | 91,1 | +76% |
| P1 | 36,2 | 64,4 | +78% |
| Среднее 1% low | 14,0 | 19,8 | +41% |
| Время ниже 60 FPS | 25,3% | 6,9% | −73% этого времени |
Нажмите на график, чтобы открыть его в полном размере.
Маршрут нагрузки — mod off
Маршрут нагрузки — mod on
Маршрут нагрузки — mod off
Маршрут нагрузки — mod on
Обычная игра (0.2.1)
Одиночный мир, обычная сессия (~5 мин каждая). Без принудительного маршрута нагрузки, просто игра. Mod off против QuantumHy 0.2.1 по умолчанию.
| Метрика | Off | On | Изменение |
|---|---|---|---|
| Средний FPS | 159,6 | 226,9 | +42% |
| P5 | 111,1 | 178,1 | +60% |
| P1 | 77,2 | 139,1 | +80% |
| Среднее 1% low | 43,7 | 111,7 | +155% |
| Время ниже 60 FPS | 2,2% | 0,1% | −95% этого времени |
Как это работает
Каждые несколько секунд QuantumHy подсчитывает сущности в чанках вокруг каждого игрока как оценку стоимости отрисовки, сглаживает этот сигнал и превращает его в единый коэффициент урезания. Этот коэффициент двигает два рычага одновременно:
- Радиус обзора в чанках, чтобы перестать стримить дальний рельеф, когда оживлённо.
- Радиус стриминга сущностей в блоках, чтобы сервер перестал отправлять дальних мобов. Это не зависит от чанков и именно отсюда берётся большая часть прироста, когда вы смотрите на толпу.
Радиус не возвращается в момент, когда зона кажется пустой. Expand ждёт спокойной нагрузки, загрузки хотя бы половины диска плотности, что вы не летите и мир не hitchит. Пока идёт стриминг или вход, урезание удерживается, чтобы клиенту не велели сбросить чанки, которые он занят прогрузкой. При полном shrink радиус сущностей падает до пола за один проход.
Возможности
- Адаптивный радиус обзора в чанках по локальной плотности сущностей, ограничен вашим собственным радиусом
- Адаптивный радиус стриминга сущностей в блоках, главный рычаг в местах с обилием мобов
- Заморозка expand пока нагрузка, покрытие и MSPT спокойны (без пилы 6↔13)
- Глобальный LOD-куллинг сущностей, отбрасывающий мелкие и дальние сущности раньше
- Сглаживание плотности, чтобы обзор движущегося игрока не скакал
- Автоматический перехват у LeanCore, чтобы два мода никогда не спорили за радиус обзора
- Опциональный подробный серверный лог, объясняющий каждое решение по каждому игроку за проход (по умолчанию выкл.)
- Проверка обновлений при старте, только операторам или
durkz.quantumhy.admin(отключение:checkForUpdates)
Установка
- Скачайте QuantumHy-0.2.3.jar на вкладке Files в CurseForge
- Поместите JAR в папку mods/ сервера или в одиночной игре на Windows:
%AppData%\Hytale\data\release\Mods - Запустите сервер. Конфиг создаётся как QuantumHy.json в папке данных плагина
Команды
/q status
/q help
Алиасы: /quantumhy, /qhy.
Конфиг
Всё лежит в QuantumHy.json, создаётся при первом запуске. Значения по умолчанию работают сразу: жёсткого потолка обзора нет, адаптация только когда людно. Установите targetClientViewRadius выше 0, чтобы обменять дальность обзора на FPS везде. Установите checkForUpdates в false, чтобы пропустить проверку версии при старте. Полный справочник ключей: документация.
Права
durkz.quantumhy.admin: получать внутриигровые уведомления об обновлении. Операторы сервера наследуют это через*.
Запуск вместе с LeanCore
Если вы запускаете и LeanCore, QuantumHy сам разруливает пересечение. Оба могут задавать радиус обзора клиента, а должен только один, поэтому QuantumHy берёт его на себя: при запуске он обнаруживает LeanCore, отключает управление радиусом обзора у LeanCore и сам ведёт радиус. LeanCore продолжает делать всё остальное (радиус симуляции, пропускную способность чанков, память). Трогать конфиг LeanCore не нужно. Установите leanCoreTakeover в false, чтобы оставить LeanCore в покое, или yieldToLeanCoreViewRadius в true, чтобы радиус обзора остался за LeanCore.
Рекомендации
- Одиночный или ваш собственный сервер: оставьте значения по умолчанию. Дальность обзора теряется только когда реально людно.
- Хотите FPS везде: установите
targetClientViewRadiusна 12-16, чтобы ограничить дальность обзора даже на открытом пространстве. - Включайте
verboseLogтолько для диагностики; по умолчанию он выключен. - Оставляйте
checkForUpdatesвключённым. Выключите, если операторам не нужно уведомление о новом JAR.
Лицензия
Лицензия MIT
For server owners
Need permissions, commands & config?
The full administration guide covers every permission node, admin command, LuckPerms examples, and all config options.
Read server documentation