Skip to content
 
 

Repository files navigation

valve_gc

Note

This is a fork of mikkokko/csgo_gc, originally focused on getting the Game Coordinator working with Counter-Strike 2, and has since grown a second, independent Team Fortress 2 GC implementation alongside it. It has diverged substantially from upstream: on the CS:GO/CS2 side, the client completes the GC handshake, loadouts load, equipped skins/gloves/agents apply in offline/listen-server matches, loadout changes persist, and case opening adds the unboxed item to your inventory. On the TF2 side (tf2_gc_hook), the client completes its own GC handshake, backpack/loadout display works (hats, Unusual particle effects, Australium weapons, every class weapon), item deletion works, and equip changes persist and apply in-match. It is still experimental — expect rough edges, especially in the newer TF2 support.

What is this?

In Valve games, the Game Coordinator (GC) is a backend service most notably responsible for matchmaking and inventory management (like loadouts and skins). This project redirects the GC traffic to a custom, in-process implementation, so your inventory is driven by a local inventory.txt (CS:GO/CS2) or tf2_inventory.txt (TF2) instead of Valve's servers.

Why would you want this?

It restores most GC-related, inventory-side functionality (loadouts, skins, knives, gloves, agents, case opening, Unusual/Australium items, etc.) locally, without relying on a centralized server.

Current features (CS:GO / CS2)

  • Editable inventory (inventory.txt)
  • Loadout editing that persists (weapon/skin changes, base-weapon swaps like USP-S/P2000, save across restarts)
  • Equipped items apply in matches (offline practice / bots / your own listen server)
  • Knives, gloves, and agents
  • Graffiti support
  • Weapon StatTrak support
  • Storage Units
  • StatTrak Swaps
  • Trade ups
  • Stickers and patches
  • Name tags
  • Music kits
  • Opening cases (including sticker capsules, patch packs, graffiti boxes and music kit boxes) — the unboxed item is added to your inventory, though CS2 shows an error dialog instead of the unbox reveal (see Scope / limitations)
  • In-game store
  • Works without full Steam API emulation
  • Windows, Linux and macOS support
  • Networking using Steam's P2P interface

Current features (Team Fortress 2)

A separate, independent GC implementation (tf2_gc_hook) reusing the same generic hooking/handshake plumbing described above. See docs/tf2_live_hook.md for the full write-up.

  • Editable inventory (tf2_gc/tf2_inventory.txt) driven by a real, verified subset of items_game.txt (tf2_gc/tf2_items_game.txt) — every class weapon (stock + unlocks), Unusual hats with real particle effects, Australium weapons (correct gold skin via the same defindex/style mechanism the real client uses), and the Golden Frying Pan
  • Loadout editing that persists across restarts
  • Equipped items apply in matches (offline practice / your own listen server)
  • Item deletion
  • Windows support

Scope / limitations

  • Skins/loadouts only apply on servers running this project — i.e. offline practice, workshop maps, or your own listen/dedicated server. Valve matchmaking and community servers run their own GC and will show default weapons; this cannot be changed.
  • Matchmaking is not supported and can't be (it requires a centralized server).
  • Case opening shows an error dialog instead of the unbox reveal. The unbox itself works — the client unboxes via a Game Coordinator job (k_EMsgGCOpenCrate), the local GC creates the item and adds it to your inventory — but CS2 still pops a "we are unable to retrieve your item" dialog rather than playing the X-ray reveal. It's cosmetic; the item is yours regardless.

Installation

  • Download the game from Steam
  • Download the latest build for your platform from the releases page (the continuous release is built automatically from the latest commit)
  • Navigate to the game's installation directory
  • Back up your existing launcher executables as they'll be overwritten (e.g. csgo.exe, cs2.exe, srcds.exe, csgo_linux64, etc.)
  • Extract the contents of the downloaded archive to your game directory, replacing the executables when prompted
  • Launch the game. If you get the VAC message box, launch with the -steam argument
  • macOS users: the release binaries are not notarized, so you'll have to deal with that on your end

Inventory editing

CS:GO/CS2: edit csgo_gc/inventory.txt (in the game's game/ directory) directly, or use a GUI editor. A manual-editing guide made by someone else is here.

TF2: edit tf2_gc/tf2_inventory.txt (and tf2_gc/tf2_items_game.txt for the item schema) in the game's install directory. See examples/tf2_unusual_inventory.txt and examples/tf2_items_game.txt for the format.

Tip

The game rewrites inventory.txt whenever you change your loadout in the menu, so do any manual or external edits while the game is closed — otherwise the game's save will overwrite them.

Configuration

See examples/config.txt for available options.

Building

Requirements:

  • Git
  • CMake 3.20 or newer
  • C++ compiler with C++20 support (VS 2022, recent Clang, or recent GCC)

The CS:GO client and Linux dedicated server binaries are 32-bit; CS2 (cs2) is 64-bit. The build produces both as appropriate. See .github/workflows/build.yml for the exact, per-platform commands used by CI.

Windows (32-bit targets):

cmake -A Win32 -B build

Windows (64-bit / CS2):

cmake -A x64 -B build_x64

Linux dedicated server (32-bit):

cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_ASM_FLAGS=-m32 -B build

macOS (build for x86_64, not arm64):

cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 -DFUNCHOOK_CPU=x86 -B build

For Linux clients you don't have to specify any additional options.

License

This project is licensed under the 2-Clause BSD License. See LICENSE.md for details.

Credits

  • Mikko Kokko — Original author of csgo_gc
  • Theeto — Code reused from the predecessor project, unusual loot lists
  • Fork maintainer — CS2 GC connectivity, in-match inventory, gloves/agents, loadout persistence, and case-opening work, plus the independent TF2 GC implementation (tf2_gc_hook)

Third party dependencies

About

Intelligent Game Coordinator for CS:GO, TF2 and CS2

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages