Перейти к содержанию

Chunk Load Sieve: установка и наблюдение за обработкой чанков

Как установить патч, проверить обработчики и сравнить режимы измерения при загрузке чанков.

Chunk Load Sieve — патч для обработки событий загрузки чанков в Project Zomboid Build 42. Он перехватывает поддерживаемые обработчики LoadGridsquare и вызывает их только на подходящих клетках, не изменяя файлы других модов. Цель — уменьшить нагрузку при движении; выигрыш в игре не гарантирован.

Установка и порядок

  1. Загрузите ZIP репозитория через Code → Download ZIP или клонируйте его и распакуйте. Внутри chunkload-sieve найдите папку ChunkLoadSieve, содержащую 42 и common; копировать саму папку репозитория не нужно.
  2. Скопируйте ChunkLoadSieve в %USERPROFILE%\Zomboid\mods\ в Windows или ~/Zomboid/mods/ в Linux/macOS. Проверьте путь вида Zomboid\mods\ChunkLoadSieve\42\mod.info.
  3. Включите Chunk Load Sieve в Mods. Для существующего мира включите его также в списке модов этого сохранения.
  4. Разместите патч выше LG Extended Electricity, RC Structure Framework и Vanilla Foods Expanded: обработчики в shared перехватываются только при более ранней загрузке патча. Если порядок неверен, console.txt называет пропущенный обработчик.

Общее руководство репозитория говорит, что порядок не важен, но инструкция самого Chunk Load Sieve 1.8 уточняет исключение для обработчиков shared. Проверяйте сообщение missed в журнале. При отсутствии целевого мода его обработчики не перехватываются.

Какие обработчики охватываются

Автор перечисляет Onan GenSet, Gas Pump Indicator, LG Extended Plumbing и Electricity, PZ The Mutants, Vanilla Foods Expanded, QoL Compendium, Take A Bath And Shower, damnlib, Fitted Barricades, Fitted Sheets и RC Structure Framework. Для них проверяются соответствующие объекты — генераторы, насосы, mod data, контейнеры, предметы на земле, двери, окна, машины, реестры ванн и точки появления транспорта. Обработчики других событий остаются прежними, кроме описанных ниже изменений LGEE и LGEP.

Исключение в логике Mutants: рвоте без сохранённого срока действия патч больше не назначает его при загрузке чанка. Автор выводил условия из кода модов; если обновление переименует файл, обработчик не будет пойман и продолжит работать обычным образом.

Электричество, водопровод и растительность

Для LG Extended Electricity версии патча 1.4–1.5 пропускают регистрацию неиспользуемых генераторов и часть запросов пересчёта далеко от известных генераторов и реле, а при загрузке очищают старый список. Важное отличие: к выключенному или неподключённому генератору, удалённому из списка, нельзя привязать реле издалека, пока он снова не появится в списке после загрузки области, подключения или запуска. Срочные запросы и периодические проходы остаются; при недоступном списке или выключенном LGEE фильтрация не применяется.

С версии 1.6 работа прежнего LGEP Chunk Load Patch включена в Sieve. Если отдельный патч включён, Sieve оставляет ему обработку: автор рекомендует отключить отдельный патч. Сканирование LG Extended Plumbing ставится в очередь с бюджетом до 2 мс на тик и ограничением восьми уровней чанков и пропускает области вдали от зеркал, подключённых бочек и труб. Пропущенная загруженная область перечитывается при подключении рядом. Старую бочку вне известных зон обнаружат при следующем отключении и повторном подключении.

С версии 1.8 некоторые обработчики удаления объектов LGEP, LGEE и Take A Bath And Shower пропускаются для деревьев и кустов там, где они по описанию автора не действуют. Это относится к полному режиму; записи removals показывают пойманные файлы и количество пропусков и вызовов.

Режимы и измерения

Для сравнения запишите одно слово в первую строку %USERPROFILE%\Zomboid\Lua\ChunkLoadSieve_mode.txt до запуска игры либо измените MODE в Lua-файле.

РежимПоведение
fullПо умолчанию: правила и описанные оптимизации включены.
machineryОбщий обработчик вызывает все обработчики LoadGridsquare на каждой клетке без правил и частей LGEE/LGEP; Hitch Fix повторно сканирует стойки.
measureНичего не перехватывает и не меняет, только перечисляет и измеряет; используется как сравнение без фильтра.

При запуске census перечисляет обработчики LoadGridsquare, LoadChunk, ReuseGridsquare и OnObjectAboutToBeRemoved со статусом caught, queued, held или passed; passed означает, что обработчик оставлен на событии без изменений. Позднее добавленный обработчик получает строку census (late). Каждые две минуты журнал выводит timing по клеткам и чанкам; в full при сравнении добавляйте значение LGEP queue. Автор рекомендует выключить Lua Event Profiler при сравнении: его обёртки добавляют разные накладные расходы.

Дополнительные файлы могут добавлять правила через ChunkLoadSieve.rule. Для разработки build-dev.sh создаёт ChunkLoadSieveDev; активна только одна копия, а журнал указывает, какая загрузилась первой. Автор рекомендует отключать Workshop-копию при тестировании версии разработки.

Проверка и отключение

В console.txt найдите [ChunkLoadSieve] active (1.8, mode full), N handlers captured: ...; каждые две минуты выводятся счётчики. Чтобы отключить патч, снимите его в Mods или установите ENABLED = false в !!!_ChunkLoadSieve.lua. Части LGEE и LGEP имеют отдельные переключатели в файле.

Информация
Автор сообщает, что механизм 1.8 проверен на имитации событий и 20 000 случайных клетках, но не в реальной игре. Общее руководство репозитория сообщает о тестах некоторых модов в одиночной игре 42.20+, однако это не подтверждает реальную проверку каждого изменения Sieve 1.8. Многопользовательская работа отдельно не проверена; используйте копию сохранения для испытаний.

Отдельный старый LGEP Chunk Load Patch имеет собственную инструкцию и журнал [LGEPChunkLoadPatch] active. Она не означает, что оба патча нужно включать одновременно: инструкция Sieve рекомендует отключить отдельный патч, когда его функции встроены.