stalcraft-jvm-optimization

module
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 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 ГБ. На системах с меньшим объёмом default.json генерируется с минимально безопасным heap, но стабильной работы игры это не гарантирует — лучше увеличить оперативную память или использовать стандартные настройки лаунчера EXBO.

Downloads Latest Release


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

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

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

service.exe перехватывает запуск игрового процесса stalzone.exe (лаунчер) или stalzonew.exe (Steam) — а также прежние stalcraft.exe / stalcraftw.exe, пока игра не переименовала процесс — для:

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

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

[!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/.
  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. Перезапустите игру, если она запущена.
Конфигурация

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

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

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

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

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

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

На данный момент в репозитории лежит один пример — examples/8khz.json, ориентированный на high-end системы (8+ ядер, 32 ГБ ОЗУ) с мышью 8 kHz. Он делает упор на минимальные STW-паузы и предсказуемый фреймтайм в ущерб небольшому throughput'у.

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

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

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

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

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

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

[!TIP] Если вы описали кастомную конфигурацию в default.json и хотите вернуться к рекомендованным настройкам — выберите в меню пункт Regenerate Config. Данное действие запишет оптимальные настройки для вашего ПК в 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
config
Package config models the JVM tuning profile: persistence on disk (configs/*.json), the "active" pointer in HKCU, and auto-generation from detected hardware.
Package config models the JVM tuning profile: persistence on disk (configs/*.json), the "active" pointer in HKCU, and auto-generation from detected hardware.
elevate
Package elevate re-launches the current executable under a UAC prompt so install/uninstall actions can run with administrator rights.
Package elevate re-launches the current executable under a UAC prompt so install/uninstall actions can run with administrator rights.
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 (stalzone.exe, or the still-current stalcraft.exe) via NtCreateUserProcess so we can set PS_ATTRIBUTE_IFEO_SKIP_DEBUGGER and escape our own IFEO hook, then boosts the child's priorities and waits until the first visible window appears (or until it exits).
Package process launches the game executable (stalzone.exe, or the still-current stalcraft.exe) via NtCreateUserProcess so we can set PS_ATTRIBUTE_IFEO_SKIP_DEBUGGER and escape our own IFEO hook, then boosts the child's priorities and waits until the first visible window appears (or until it exits).
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.
ui
Package ui renders the interactive arrow-key menu shown when the wrapper is launched without CLI arguments.
Package ui renders the interactive arrow-key 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