Fix silent SDK asset mounting failure in standalone Linux installs#2019
Draft
sunmachine wants to merge 3 commits into
Draft
Fix silent SDK asset mounting failure in standalone Linux installs#2019sunmachine wants to merge 3 commits into
sunmachine wants to merge 3 commits into
Conversation
Rename the launcher binary to neo_linux64: Linux cannot have both the executable and the game/neo mod directory under the same name at the install root, and GetExecutableModName strips the _linux64 suffix so the default -game dir is still neo. Add src/common to the include path and include tier1/strtools.h before steam_api.h, since our patched matchmakingtypes.h uses V_strcpy_safe. When NEO_COPY_LIBRARIES is on, also stage libsteam_api.so into game/bin/linux64/ where the launcher dlopens it.
Masterkatze
reviewed
Jul 14, 2026
| option(NEO_ENABLE_CPACK "Enable CPack" OFF) | ||
| option(NEO_USE_MEM_DEBUG "Enable USE_MEM_DEBUG defines" OFF) | ||
| option(NEO_GENERATE_GAMEDATA "Generate SourceMod gamedata" ${NEO_DEDICATED}) | ||
| option(NEO_BUILD_LAUNCHER "Build the Steam mod launcher" OFF) # NOTE Linux only |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ntre_linux_from_binary.mp4
Path Dump 💩
ingame-path-dump.txt
Fix
Standalone Linux installs of NT;RE (own appid + mod launcher, not
sourcemods/)silently fail to mount all Source SDK Base content: missing menus, materials,
and sounds with no error. Windows and
sourcemods/installs are unaffected,which is why dev setups never see it.
The engine resolves the relative SDK search paths in
gameinfo.txtagainstthe
SDK_EXEC_DIRenv var, falling back to anargv[0]/CWDguess. The launchersets that variable on Windows but never on Linux, and under a real Steam
launch the guess lands in a directory with no SDK content. Missing relative
search paths mount nothing, silently. The fix is one line in the launcher's
Linux startup code, mirroring what Windows already does:
Since the team ships Valve's prebuilt launcher (which has the same bug,
apparently lmao), this PR also adds an opt-in CMake target to build the fixed
launcher from source:
It's OFF by default, Linux-only, and produces
game/neo_linux64. The_linux64suffix keeps the default-game neobehavior while avoiding afilename collision with the
game/neo/directory.Verified on Linux under Steam Linux Runtime 3.0 (sniper), launched both from
a terminal and as a Steam library entry. With the fix,
pathshows SDKcontent rooted where it belongs:
and a full bot match ran with no missing assets.
sourcemods/and-gamelaunches still work as before.
CI
Nothing needs to change right now. I think the CI never sets
NEO_BUILD_LAUNCHERso this PR's change is still invisible to the workflows.If we want it compile-checked, adding
-DNEO_BUILD_LAUNCHER=ONto the Linuxconfigure step is enough (CI already uses the same sniper image). Getting it
into release artifacts takes a bit more wiring, and I am too tired at time of
writing to fully dig into the release steps here, so I'll save that for
tomorrow in a follow-up commit or another PR.
Screenshotties