Мод «模组统一调度与优化(苏别黎SuSir)» для Project Zomboid

Оценить:
0
14:55
35

Скачать файл

Категория:
Автор:
Версия:
25.10.2026
Размер:
210.4 Kb
Расширение:
ZIP
Добавил:
Источник:

Единая диспетчеризация и оптимизация модов – ядро для оптимизации Lua-событий в Project Zomboid. Мод не добавляет предметы и игровые механики, а также не изменяет файлы других модов. Оптимизация выполняется во время работы игры.

Принцип работы

Высокочастотные события Lua, включая OnPlayerUpdate, OnTick, OnTickEvenPaused, OnZombieUpdate, OnPlayerMove, OnMouseMove, OnKeyKeepPressed и OnClimateTick, обрабатываются через единый диспетчер. При большом количестве модов их обработчики могут выполняться каждый кадр и вызывать падение частоты кадров и периодические задержки.

Архитектура

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

Возможности

  • Группировка обработчиков по числу срабатываний события. По умолчанию при каждом втором срабатывании выполняется только одна группа, а нагрузка распределяется между несколькими кадрами.
  • Удаление дубликатов: повторно зарегистрированный обработчик сохраняется только один раз. Это помогает избежать накопления повторных регистраций после загрузки сохранения.
  • Балансировка нагрузки на основе фактического времени выполнения каждого обработчика. Более тяжёлые обработчики распределяются по группам для выравнивания нагрузки между кадрами.
  • События, связанные с прицеливанием, камерой, ракурсом Viewpoint, отдачей и масштабированием, по умолчанию работают на полной частоте и автоматически распознаются по имени файла.
  • Каждая внедрённая логика имеет защиту от ошибок. При сбое мод возвращается к оригинальному поведению без создания условий для повреждения сохранений.

Настройка и диагностика

Индивидуальные интервалы событий и ключевые слова для исключений настраиваются в таблице SPC.policy файла media/lua/shared/SPC_Core.lua. Значение интервала 1 отключает диспетчеризацию для соответствующего события.

Команда SPC_Report() в консоли выводит количество обработчиков событий и исходные файлы, что позволяет определить наиболее ресурсоёмкие моды.

Ограничения

Оптимизация распространяется только на диспетчеризацию событий Lua. Текстуры, рендеринг, ИИ, физика, поиск пути и операции с сохранениями не оптимизируются. Снижение частоты представляет собой распределение общей нагрузки, а не точную фиксацию частоты. В сетевой игре OnPlayerUpdate обрабатывает половину общего количества вызовов, а не выполняется с частотой 30 Гц для каждого игрока. Эффект зависит от состава сборки и заметнее при большом количестве обработчиков событий. Сборки, состоящие преимущественно из модов на текстуры или карты, получают небольшой прирост.

Для работы требуется ZombieBuddy. В сетевой игре мод устанавливается отдельно на клиент и сервер. Сетевые пакеты не передаются, рассинхронизация не возникает. Мод работает с существующими сохранениями, начинать новую игру не требуется. Поддерживаются как 3D-режим, так и оригинальный режим камеры. После удаления мода другие моды возвращаются к исходному поведению.

  • Workshop ID: 3825832401
  • ID мода: SuPerfCore
Требуемые моды:
Версия Project Zomboid
  • Build 42
Нет комментариев. Ваш будет первым!