Мод «ItemOptimizer» на Barotrauma
ItemOptimizer — мод для оптимизации производительности в Barotrauma. Устраняет лишние вычисления каждый кадр на больших подлодках при высокой нагрузке модами.
Только оптимизация — игровые механики не изменены. Каждую функцию можно включить или отключить отдельно в панели настроек внутри игры (ESC → ItemOptimizer).
Бенчмарк: тот же сейв, загружено ~17 контентных модов (Deep Diving Armory, Barotraumatic, T.S.M MISSIONS, 九州武库 Rebalance, Enhanced EuropaWar и др.). Сравнение колебаний showperf:
- FPS: 76 → 146
- Update total: 13.16 мс → 8.02 мс (экономия ~5 мс/кадр)
- MapEntity: 8.08 мс → 4.11 мс (снижение на ~49%)
- Update peak: 33.45 мс → 20.04 мс (сглаживание пиков)
Результаты варьируются в зависимости от подлодки, комбинации модов и стадии карты. В ванильной сборке или с легкими модами экономия обычно составляет 1–2 мс/кадр.
Работает как на клиенте, так и на сервере. Серверы с включенным LuaCs также получают выгоду. Систематический серверный бенчмаркинг еще предстоит провести — данные тестов приветствуются.
Требования:
Функции:
Планирование зон (Zone Scheduling)
- Подлодки, затонувшие корабли, руины и аванпосты на карте разделены на независимые зоны, распределенные по 5 уровням в зависимости от расстояния до игрока: Full → Near → Throttled → Dormant → Unloaded
- Близкие зоны работают со стандартной частотой обновлений; дальние постепенно снижают активность до полной заморозки, затем реактивируются при приближении игрока
- Наиболее заметно в долгих кампаниях с большим количеством открытых локаций
Умное ограничение предметов (Smart Item Throttling)
- Перехватывает стандартный цикл обновления предметов, классифицирует каждый предмет один раз за тик и пропускает предметы, не требующие полного обновления
- Предметы внутри неоткрытых контейнеров заморожены, пока контейнер не будет открыт
- Предметы, лежащие на земле, обновляются реже (проводные предметы и предметы с критически важными компонентами исключены)
- Пропущенные предметы все равно получают минимальные физические обновления (позиция, плавучесть, сетевая синхронизация) — они не исчезают из мира
Переписанные компоненты (Component Rewrites)
- Датчик движения (Motion Sensor) — заменен на пространственные запросы на основе отсеков (hull), пропускает стандартные проверки коллизий для каждой сущности
- Датчик воды (Water Detector) — считывает уровень воды в отсеке напрямую, пропуская стандартный многоступенчатый процесс обнаружения
- Реле (Relay) — сведено к чистой передаче сигнала, удалены избыточные проверки состояния
- Передача энергии (Power Transfer, распределительные щиты и т.д.) и Накопители энергии (Power Container, батареи/суперконденсаторы) — топология сети кэшируется, что устраняет повторные вычисления каждый кадр
- Все переписанные компоненты сохраняют ванильное поведение, могут быть включены/отключены по отдельности и имеют настраиваемые интервалы обновления
Ускоритель графа сигналов (Signal Graph Accelerator)
- Компилирует компоненты схем (логические элементы, датчики и т.д.) в топологически отсортированный граф оценки с использованием массивов регистров вместо стандартных вызовов SendSignal для каждого провода
- Скомпилированные схемы оцениваются за один упорядоченный проход, минуя накладные расходы на промежуточную передачу сигналов
- Режим Accelerate: компилирует 12 базовых логических компонентов (элементы И/ИЛИ/НЕ, компараторы, арифметика, память и т.д.)
- Режим Aggressive: дополнительно компилирует сквозную переда Relay и компоненты Delay; компоненты со StatusEffects, привязанными к соединениям, исключены из соображений безопасности
- Циклы автоматически обнаруживаются и преобразуются в задержки в один кадр, сохраняя нормальное поведение схемы
Управление предметами модов (Mod Item Management)
- Автоматически определяет установленные моды и классифицирует их предметы по уровню активности (High / Active / Normal / Static)
- Ползунок интенсивности для каждого мода — контроль агрессивности ограничения предметов конкретного мода
- Глобальный ползунок интенсивности — настройка всех модов сразу
- Белый список — отметка предметов, которые никогда не должны ограничиваться. Добавьте их через панель настроек или, удерживая предмет, нажмите кнопку белого списка на HUD
- Правила для отдельных предметов — точная настройка для конкретных типов предметов
Языки: Встроено 12 языков: English, 简体中文, 繁體中文, Deutsch, Español, Français, 日本語, 한국어, Polski, Português (Brasil), Русский, Türkçe.
Настройки: Внутри игры: нажмите ESC → кликните "ItemOptimizer". Все сгруппировано в сворачиваемые секции. Конфигурация сохраняется автоматически.
Совместимость: Мод использует Harmony для патча ванильных методов. Большинство модов сосуществуют без проблем. Наиболее вероятная точка конфликта — другие моды, также изменяющие MapEntity.UpdateAll. Если возникнет проблема совместимости, сообщите о ней — поддержка будет добавлена.
FAQ
В: Почему некоторые системы на моей подлодке работают неправильно?
Для снижения ванильных затрат каждый кадр этот мод заменяет или ограничивает несколько систем:
- Сигнальные цепи компилируются в граф пакетной оценки. Режим Aggressive также перехватывает сквозную передачу Relay и компоненты Delay — небольшое количество цепей со StatusEffects, привязанными к соединениям, могут вести себя иначе.
- Датчики движения/воды, Relay, передача энергии и накопители энергии заменены на более легкие реализации; краевые случаи могут немного отличаться от ванильных.
- Неактивные предметы и зоны вдали от игрока заморожены или ограничены, реактивируясь при приближении.
В: Как вернуть все назад, если что-то сломалось?
Каждую оптимизацию можно включить или отключить отдельно. Внутри игры: нажмите ESC → кликните "ItemOptimizer":
- Проблемы со схемами: переключите "Signal Graph Accel" в Off или понизьте режим с Aggressive до Accelerate
- Проблемы с компонентами: отключите конкретную перезапись (например, отключите перезапись Relay, чтобы вернуться к ванильному поведению)
- Предметы или зоны заморожены слишком агрессивно: отключите Zone Scheduling или уменьшите ползунок интенсивности
Изменения вступают в силу без перезагрузки — конфигурация сохраняется автоматически.
Ссылки автора мода:
Source Code (GitHub)
Discord
Le Dodique
→
Cybercult 2: New York Apostasy









