Skip to content

feat(csgoserver): support the standalone CS:GO client (App ID 4465480) with configurable runtimeappid and the NoLobbyReservation mod - #4963

Open
borzaka wants to merge 1 commit into
GameServerManagers:developfrom
borzaka:feat/support-standalone-csgo-client
Open

borzaka wants to merge 1 commit into
GameServerManagers:developfrom
borzaka:feat/support-standalone-csgo-client

Conversation

@borzaka

@borzaka borzaka commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Description

Valve re-released Counter-Strike: Global Offensive as a standalone Steam app (App ID 4465480) in March 2026. The dedicated server is still downloaded with App ID 740, but the standalone client only connects when the server runs with App ID 4465480 and the NoLobbyReservation SourceMod plugin is loaded. This PR adds that support to csgoserver using the existing LinuxGSM fix and mod mechanisms.

Runtime App ID

  • New runtimeappid="4465480" setting in csgoserver/_default.cfg (730 keeps CS2 csgo_legacy branch clients). appid="740" stays the SteamCMD download App ID.
  • fix_csgo.sh writes runtimeappid into steam_appid.txt and csgo/steam.inf (appID=) before every start, so values reverted by SteamCMD update/validate are restored. The fix is idempotent, keeps the CRLF line endings of steam.inf, reports write errors and ignores the trailing NUL byte the server writes into steam_appid.txt.
  • GSLT: the config comment and the install prompt (install_gslt.sh) state that the token must be created using the App ID set in runtimeappid.

Mods

  • New nolobbyreservation mod (eldoradoel fork, required for standalone clients to connect), listed right after SourceMod. It is installed into csgo like other mods (modsubdirs="NoLobbyReservation-master/csgo").
  • The repository only ships the .sp source. fn_mod_compile_sourcemod_plugin compiles it with the installed SourceMod spcomp into the staged mod files before the file list is built, so the .smx is installed, updated and removed with the mod. A compile failure aborts the install.
  • mods-install requires SourceMod first (fn_mod_exist "sourcemod", same as AMX Mod X requiring Metamod). mods-update recompiles the plugin.
  • modsubdirs now also accepts a path; single-level values behave as before.
  • mods-remove nolobbyreservation keeps SourceMod's shared directories, including gamedata.
  • SourceMod is pinned to 1.12 for CS:GO (1.13 does not work with CS:GO, see SourceMod Required Versions Wiki). Other games keep 1.13.

Mods are not installed automatically. Install order: metamodsource → sourcemod → nolobbyreservation.

Known limitation (pre-existing): with updateonstart enabled, if SteamCMD rewrites steam.inf during the update-on-start, the runtime App ID is restored on the next start. This applies to all pre-start fixes (e.g. the existing libgcc fix).

Fixes #4883

Type of change

  • Bug fix (a change which fixes an issue).
  • New feature (a change which adds functionality).
  • New Server (new server added).
  • Refactor (restructures existing code).
  • Comment update (typo, spelling, explanation, examples, etc).

Testing

Please list the exact validation you performed and the outcome.

  • Commands/tests run:
    • ./csgoserver install (SteamCMD download of App ID 740, GSLT prompt)
    • ./csgoserver mods-install: metamodsource, sourcemod, nolobbyreservation
    • ./csgoserver start
    • meta list, sm plugins list, client connection, update, validate
  • Result:
    • SourceMod 1.13 current dev build does not work with CS:GO, SourceMod 1.12 works, so CS:GO is pinned to SourceMod 1.12.
    • After start, steam_appid.txt contains 4465480. The server rewrites the file as 4465480\n\0; the trailing NUL byte caused a Bash warning (ignored null byte in input) in fix_csgo.sh, fixed by stripping NUL bytes before comparing.
    • The original csgo/steam.inf from the App ID 740 depot uses CRLF line endings and appID=730; the fix replaces only the value and keeps the line ending.
    • meta list
  Listing 3 plugins:
  [01] SourceMod (1.12.0.7253) by AlliedModders LLC
  [02] CS Tools (1.12.0.7253) by AlliedModders LLC
  [03] SDK Tools (1.12.0.7253) by AlliedModders LLC
  • sm plugins list
[SM] Listing 18 plugins:
  ...
  16 "No Lobby Reservation" (0.0.2) by vanz
  ...
  • successful client connection
  • after update/validate and restart, still successful client connection
  • Environment used (distro/version): Debian 12.15 (bookworm)

Risk and rollback

  • Risk level: medium
  • Rollback plan: set runtimeappid="730" in common.cfg to restore the previous runtime App ID (and keep using the existing App ID 730 GSLT). Remove the plugin with ./csgoserver mods-remove (nolobbyreservation).

Breaking changes

  • No breaking changes.

  • Breaking changes included (describe below).

  • Existing csgoserver instances switch to runtime App ID 4465480 on the next start after update-lgsm. GSLTs created for App ID 730 must be replaced with a GSLT created for App ID 4465480. CS2 csgo_legacy branch (App ID 730) clients can no longer connect unless runtimeappid="730" is set (in common.cfg, as all instances share serverfiles).

  • SourceMod for CS:GO is now 1.12. Instances that already have SourceMod 1.13 installed should run mods-remove (sourcemod), mods-install (sourcemod), then mods-update to recompile NoLobbyReservation.

Documentation impact

  • No documentation update required.
  • User documentation update required.
  • Developer documentation update required.

Checklist

PR will not be merged until all steps are complete.

  • This pull request links to an issue.
  • This pull request uses the develop branch as its base.
  • This pull request subject follows the Conventional Commits standard.
  • This code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have provided a detailed enough description of this PR.

Documentation

Thank you for your Pull Request!

…) with configurable runtimeappid and the NoLobbyReservation mod
@borzaka

borzaka commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

The new client's store page: https://store.steampowered.com/app/4465480/CounterStrikeGlobal_Offensive/

  • The main reason to move server support toward AppID 4465480 is that it is the new standalone CS:GO release, and the community is already adopting it for dedicated servers. Current community setup guides use the existing AppID 740 server files but configure the running server/GSLT around 4465480.
  • It also provides a much cleaner user experience: CS2 and CS:GO can be installed side-by-side as separate Steam applications, so players no longer need to switch CS2 back and forth to the csgo_legacy beta branch just to play CS:GO.
  • Supporting 4465480 therefore aligns LinuxGSM with the direction the CS:GO community is moving toward, while support for the older 730 csgo_legacy client can potentially remain as a compatibility option. There are already community configurations that allow both the standalone 4465480 client and CS2's 730 legacy branch to connect to the same server.
                         CS:GO server binaries
                                  │
                         SteamCMD AppID 740
                                  │
                    ┌─────────────┴─────────────┐
                    │                           │
            Runtime identity 730       Runtime identity 4465480
                    │                           │
            GSLT created for 730       GSLT created for 4465480
                    │                           │
        730 csgo_legacy client       4465480 standalone client

@github-actions github-actions Bot added engine: source engine: source2 Issues related to source2 engine game: Counter-Strike: Global Offensive Issues related to Counter-Strike: Global Offensive game: Counter-Strike 2 Issues related to Counter-Strike 2 labels Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine: source engine: source2 Issues related to source2 engine game: Counter-Strike: Global Offensive Issues related to Counter-Strike: Global Offensive game: Counter-Strike 2 Issues related to Counter-Strike 2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant