stalcraft-jvm-optimization

module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: MIT

README

Stalcraft JVM Wrapper

eng ru

[!WARNING] Данный проект является неофициальной утилитой, разработанной SilentBless. Утилита не аффилирована с EXBO, однако была проверена GloomyFolken и классифицирована как безопасное ПО.

[!CAUTION] Если вы столкнулись с проблемами после установки этой программы — перейдите в документ по устранению неполадок и найдите там свою ситуацию. Все типичные проблемы и способы их решения описаны пошагово.

Пожалуйста, не беспокойте этой утилитой модераторов EXBO, техническую поддержку игры, а также рупоров. Они такие же обычные люди, как и вы, и понятия не имеют, что именно происходит на вашем компьютере. Все инструкции уже есть в документе по ссылке выше — откройте его до того, как писать куда-либо.

Утилита для модификации параметров запуска JVM и оптимизации её работы.

JVM (Java Virtual Machine) — это среда выполнения, через которую работает STALZONE.

Код игры исполняется не напрямую на системе, а внутри виртуальной машины Java. Во время работы она компилирует его в машинный код под конкретный ПК (JIT-компиляция). Фактически это дополнительный слой между игрой и железом, который отвечает за выполнение кода и его адаптацию под систему.

Данная программа позволяет изменить параметры запуска JVM для повышения производительности игры, используя как предустановленные, так и пользовательские JSON-файлы конфигурации.

[!IMPORTANT] Утилита подбирает параметры JVM под любой объём ОЗУ, начиная с 8 ГБ. На системах с меньшим объёмом автосгенерированный профиль использует минимально безопасный heap, но стабильной работы игры это не гарантирует — лучше увеличить оперативную память или использовать стандартные настройки лаунчера EXBO.

Downloads Latest Release


Вносимые изменения

Утилита состоит из двух бинарников, лежащих в одной директории:

  • cli.exe — интерактивное меню для установки, удаления и управления конфигурациями. Запускается пользователем только когда нужно что-то настроить.
  • service.exe — тихий перехватчик, который Windows автоматически запускает при старте игры. Не имеет интерфейса, трогать вручную не нужно.

service.exe перехватывает запуск игрового процесса stalzone.exe (лаунчер/EGS/VK Play) или stalzonew.exe (Steam) для:

  • Подбора оптимальной конфигурации JVM: объём выделенных ресурсов, режим работы GC (Garbage Collector) и JIT-компиляции.
  • Запуска игры с выбранным JVM-профилем: без изменения файлов игры и без внедрения в игровой процесс.

Утилита устанавливается один раз и автоматически запускается при каждом старте игры.

[!IMPORTANT] Файлы игры при этом не затрагиваются и не модифицируются. Утилита также не вмешивается в работу процесса игры и не встраивается в него.

Требования

  • Операционная система: Windows 10/11
  • Версия игры: Steam/Лаунчер/EGS/VK Play
  • Права ОС: права администратора в Windows (нужны только для установки перехвата)
  • ЦП: 4 и более ядер
  • ОЗУ: 8+ ГБ, рекомендуется 12+ ГБ (иначе часть оптимизаций, например PreTouch, останется отключённой)

Работа с утилитой

Установка

[!TIP] Самая частая ошибка при установке — положить jvm_wrapper куда-то глубоко внутрь runtime/stalcraft/.... Папка должна лежать в корне директории EXBO, рядом с ExboLink.exe и каталогом runtime/. Вот как это должно выглядеть:

Пример расположения папки jvm_wrapper в корне директории лаунчера EXBO

  1. Добавьте папку с игрой в исключения Защитника Windows или другого Антивирусного ПО:
    • Пример для Steam: C:\Program Files\Steam\steamapps\common\STALCRAFT
    • Пример для Лаунчера: C:\Users\User\AppData\Roaming\EXBO
    • Пример для EGS: C:\Games\EGS Stalcraft\STALCRAFT
  2. Создайте каталог jvm_wrapper в корне директории лаунчера (см. подсказку выше).
  3. Скачайте последнюю версию и распакуйте wrapper.zip в папку jvm_wrapper — внутри должны оказаться cli.exe, service.exe и каталоги examples/, langs/.
  4. Запустите cli.exe, в открывшемся меню выберите пункт Install при помощи стрелок и нажмите Enter.
  5. Появится UAC-запрос на права администратора — подтвердите его. Это нормально: установка перехвата IFEO пишется в HKLM, для чего требуются права администратора.

Теперь можно запускать игру!

[!IMPORTANT] Несколько особенностей работы утилиты:

  • Аппаратный G-Sync может привести к артефактам изображения. Рекомендуется его выключить.
  • Утилита не распространяется на другие приложения, использующие JVM.
  • Для систем с объёмом ОЗУ не более 8-16 ГБ рекомендуется включить файл подкачки.
Удаление
  1. Запустите cli.exe, в открывшемся меню выберите пункт Uninstall при помощи стрелок и нажмите Enter.
  2. Перейдите в папку с игрой.
  3. Удалите папку jvm_wrapper.
  4. Перезапустите игру, если она запущена.
Конфигурация

После установки утилита автоматически создаст профиль конфигурации v1.1.2/default.json, который будет располагаться в папке jvm_wrapper/configs/v1.1.2/default.json. Именно с этим профилем игра будет запускаться по умолчанию. Данный профиль будет адаптирован под параметры вашего компьютера, но его наличие не исключает возможность кастомной настройки.

Конфигурация сохраняется в реестре Windows: HKCU\\Software\\StalcraftWrapper.

Конфигурацию запуска можно менять самостоятельно. Для этого:

  1. Запустите cli.exe, в открывшемся меню выберите пункт Select Config при помощи стрелок и нажмите Enter.
  2. Выберите необходимый файл конфигурации и нажмите Enter. В папки версий можно заходить, пункт < Back возвращает на уровень выше.
  3. Перезапустите игру, если она запущена.

[!NOTE] По умолчанию активна конфигурация v1.1.2/default.json, однако она не является единственной опцией. В разделах Примеры конфигурации и Кастомная конфигурация представлены необходимые инструкции.

Те же операции доступны через команды:

  • cli.exe status
  • cli.exe install
  • cli.exe uninstall
  • cli.exe config list
  • cli.exe config releases
  • cli.exe config regenerate v1.1.2
  • cli.exe config select v1.1.2/default
Переопределение туннеля (экспериментально)

Пункт Переопределение туннеля позволяет независимо выбрать конкретный Roxy-узел для RU, EU, NA, SEA и NEA одновременно. Выбор игры находится внутри каждого региона и сбрасывает только его override. Список запрашивается только после открытия региона. При открытии группы утилита параллельно измеряет все ее узлы и отдельно показывает RTT от компьютера до туннеля, RTT от туннеля до backend и их сумму. Фоновых повторных раундов нет: новое измерение запускается только при повторном входе или через Измерить снова.

Найти лучший сервер проверяет все узлы вне постоянного списка исключений и выводит пять лучших. Результаты можно оценивать по полному пингу, RTT клиента, RTT сервера, стабильности или весу, который сообщает игровой backend. Узел с достигнутым лимитом подключений остается видимым, но выбрать его нельзя до свежего успешного измерения.

Выборы и настройки поиска хранятся в jvm_wrapper/overrides.json, история последних 20 измерений на узел — в jvm_wrapper/cache/tunnel_stats.json. Кэш хранится до 24 часов. Regenerate Config эти файлы не меняет. При старте игры service.exe только проверяет формат сохраненных адресов и добавляет отдельный JVM-флаг для каждого настроенного региона; сетевых измерений в пути запуска игры нет.

Примеры конфигурации

В репозитории лежит один пример — examples/aikar.json. Он вдохновлён популярными Minecraft/Paper/Aikar-подходами к G1GC, но адаптирован под STALZONE и OpenJDK 9. Это не точная копия серверных Aikar flags и не универсальная рекомендация.

Для aikar.json использовались как ориентиры PaperMC Aikar flags и предупреждение Prism Launcher о том, что больше выделенной RAM не всегда означает выше производительность.

Чтобы использовать пример, перейдите в каталог репозитория /examples, скачайте aikar.json и положите его в jvm_wrapper/configs/.

Запустите утилиту, выберите Select Config в меню. Теперь в списке должен появиться ещё один профиль конфигурации. Выберите его, после чего перезапустите игру.

Кастомная конфигурация

Для создания своего собственного профиля конфигурации достаточно скопировать файл configs/v1.1.2/default.json, переименовать его, например, в my_setup.json, после чего отредактировать через любой доступный текстовый редактор.

[!CAUTION] Кастомная конфигурация рекомендуется только тем, кто на 100% понимает, что он делает. В противном случае вы рискуете нарушить не только стабильность JVM и, как следствие, игры, но и всей операционной системы.

Создание своей собственной конфигурации должно сопровождаться изучением документации к параметрам конфигурации.

[!TIP] Если вы описали кастомную конфигурацию и хотите вернуться к рекомендованным настройкам — выберите в меню пункт Regenerate Config и нужную версию. Данное действие перезапишет configs/<version>/default.json и сделает его активным.


Дополнительно

Логирование

Утилита пишет один структурированный лог-файл jvm_wrapper/logs/wrapper.log рядом с cli.exe и service.exe. В него попадают: запуск, детект железа, загрузка конфига, старт игрового процесса, код выхода. Путь пользователя редактируется до <user>, сырые аргументы лаунчера и JVM-флаги не пишутся. Файл усекается при превышении 2 МБ.

Если вы столкнулись с проблемой и хотите сообщить о ней — приложите этот файл к issue на GitHub. Он не содержит личной информации и безопасен для публикации.

Large Pages

Large Pages — это режим работы виртуальной памяти, при котором используются страницы большего размера, чем стандартные 4 KB.

Включение Large Pages уменьшает накладные расходы на работу с памятью, как следствие делает GC и доступ к heap стабильнее и быстрее. Это происходит из-за того, что ЦП обращается к оперативной памяти не напрямую, а через TLB (Translation Lookaside Buffer) — чем меньше в нём промахов, тем выше пропускная способность.

[!CAUTION] Large Pages закрепляют память за приложением и не позволяют системе перераспределять её. Неправильная настройка может привести к нестабильной работе ОС. Отдавайте отчёт своим действиям! Убедитесь, что выделенная память в профиле конфигурации не превышает 40%-50% от общего объёма ОЗУ, а общий запас ОЗУ 16+ ГБ.

Для того, чтобы включить Large Pages, следуйте следующим шагам:

  1. Нажмите сочетание клавиш Win + R.
  2. Введите secpol.msc и нажмите Enter.
  3. Перейдите Локальные политики → Назначение прав пользователя.
  4. Найдите политику "Блокировка страниц в памяти".
  5. Откройте политику двойным нажатием, добавьте своего пользователя или группу "Администраторы".
  6. Примените изменения и перезагрузите ПК.
Техническая информация

Подробную техническую информацию с описанием принципов работы утилиты, а также инструкциями по сборке можно найти здесь.

Directories

Path Synopsis
cmd
cli command
Command cli is the user-facing entry point of the STALZONE JVM optimization wrapper.
Command cli is the user-facing entry point of the STALZONE JVM optimization wrapper.
service command
Command service is the IFEO Debugger binary.
Command service is the IFEO Debugger binary.
internal
buildinfo
Package buildinfo exposes version metadata injected by release builds.
Package buildinfo exposes version metadata injected by release builds.
config
Package config models JVM tuning profiles and stores them as JSON files under configs/.
Package config models JVM tuning profiles and stores them as JSON files under configs/.
elevate
Package elevate re-launches the current executable under a UAC prompt so install actions can run with administrator rights.
Package elevate re-launches the current executable under a UAC prompt so install actions can run with administrator rights.
i18n
Package i18n stores the UI language preference and loads TUI translations.
Package i18n stores the UI language preference and loads TUI translations.
installer
Package installer wires the wrapper into the game executables via the Image File Execution Options "Debugger" key, so Windows launches the wrapper whenever the game is started.
Package installer wires the wrapper into the game executables via the Image File Execution Options "Debugger" key, so Windows launches the wrapper whenever the game is started.
jvm
Package jvm turns a config.Config into the JVM command-line flags STALZONE expects, and filters out any conflicting flags the game launcher already supplied.
Package jvm turns a config.Config into the JVM command-line flags STALZONE expects, and filters out any conflicting flags the game launcher already supplied.
logging
Package logging configures a structured file logger for the wrapper.
Package logging configures a structured file logger for the wrapper.
phantom
Package phantom creates an invisible top-level window that keeps the wrapper process alive in the explorer window list during launch.
Package phantom creates an invisible top-level window that keeps the wrapper process alive in the explorer window list during launch.
process
Package process launches the game executable via NtCreateUserProcess so we can set PS_ATTRIBUTE_IFEO_SKIP_DEBUGGER, escape our own IFEO hook, and wait until the first visible window appears (or until the process exits).
Package process launches the game executable via NtCreateUserProcess so we can set PS_ATTRIBUTE_IFEO_SKIP_DEBUGGER, escape our own IFEO hook, and wait until the first visible window appears (or until the process exits).
profile
Package profile contains frozen config generators for released tuning profiles.
Package profile contains frozen config generators for released tuning profiles.
sysinfo
Package sysinfo detects the physical memory and core topology used to size JVM heap, GC threads and large-page flags.
Package sysinfo detects the physical memory and core topology used to size JVM heap, GC threads and large-page flags.
tunnel
Package tunnel discovers STALZONE Roxy endpoints, measures their latency, and stores the user's optional tunnel override.
Package tunnel discovers STALZONE Roxy endpoints, measures their latency, and stores the user's optional tunnel override.
ui
Package ui renders the interactive menu shown when the wrapper is launched without CLI arguments.
Package ui renders the interactive menu shown when the wrapper is launched without CLI arguments.
winapi
Package winapi holds shared lazy-loaded Windows DLLs used by sibling packages.
Package winapi holds shared lazy-loaded Windows DLLs used by sibling packages.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL