openvibers/source.openvibe.games Commits

Fix Proton map-load crash with Source stability flags

CO Copilot committed 2 Jul 2026 · c9301c7f32 · 2 files, +25 −0

The intermittent hl2_win64.exe crash during map load was Source SDK
2013's multithreaded render/anim paths + joystick init under Proton/DXVK
(crashed with the client JS runtime disabled too, so unrelated to JS).
Add openvibe_proton_stability.cfg (mat_queue_mode 0, threaded bone/leaf/
shadow/ropes off, snd_mute_losefocus 0, mat_dxlevel 90) exec'd before
connect, plus -nojoy -insecure -nohltv launch flags. Client now survives
past the load window and reaches the menu/map reliably.

Changes

ddiff --git a/game/openvibe.games/cfg/openvibe_proton_stability.cfg b/game/openvibe.games/cfg/openvibe_proton_stability.cfg
nnew file mode 100644
iindex 0000000..93adbdc
---- /dev/null
++++ b/game/openvibe.games/cfg/openvibe_proton_stability.cfg
@@@ -0,0 +1,23 @@
++// OpenVibe Proton stability config — executed BEFORE connect so these take
++// effect for the first map load. Source SDK 2013's multithreaded render/anim
++// paths and joystick/audio init are the common causes of intermittent map-load
++// crashes under Proton/DXVK. Disable them for reliable in-game testing.
++echo "==== OpenVibe Proton stability cfg loaded ===="
++
++// Single-threaded material system (biggest map-load crash fix under DXVK).
++mat_queue_mode 0
++
++// Disable threaded animation / leaf-system paths that crash under Proton.
++cl_threaded_bone_setup 0
++cl_threaded_client_leaf_system 0
++r_threaded_client_shadow_manager 0
++r_queued_ropes 0
++r_queued_decals 0
++r_queued_post_processing 0
++
++// Audio: don't stall/crash when the window loses focus; safer async mix.
++snd_mute_losefocus 0
++
++// Reduce first-frame shader/pipeline churn that can trip DXVK during load.
++mat_dxlevel 90
++r_3dsky 0
ddiff --git a/tools/run-client-proton-x64.sh b/tools/run-client-proton-x64.sh
iindex 2bfa0c7..e029218 100755
---- a/tools/run-client-proton-x64.sh
++++ b/tools/run-client-proton-x64.sh
@@@ -62,7 +62,9 @@ exec "$GE_PROTON/proton" waitforexitandrun \
-game "$GAME_DIR" \
-console -dev -condebug -novid -sw -w 1280 -h 720 \
-port 27115 -clientport 27105 \
++ -nojoy -insecure -nohltv \
+developer 1 \
++ +exec openvibe_proton_stability.cfg \
+con_logfile openvibe_proton_console.log \
+exec openvibe_proton_client.cfg \
$CONNECT_ARGS