# gt-610/csgo-gc architecture

> Architecture diagram of the GitHub repository gt-610/csgo-gc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gt-610/csgo-gc
- Repository: https://github.com/gt-610/csgo-gc

## Overview

csgo_gc is an in-process replacement for the legacy CS:GO Game Coordinator. The main workflow is the game’s GC traffic being intercepted and handled locally: the client GC processes protocol requests against the user’s inventory and returns updates to the game. Inventory editing, item operations, RCON control, lobby/server support, and Steam P2P networking are documented capabilities. The tree and README establish subsystem boundaries; because most implementation excerpts are incomplete, edges are limited to the documented workflow and relationships visible in the sampled client code.

Main entry points: [`csgo_gc/gc_client.cpp`](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_client.cpp) (Client coordinator), [`csgo_gc/steam_hook.cpp`](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/steam_hook.cpp) (Steam hook), [`csgo_gc/inventory.cpp`](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/inventory.cpp) (Inventory state), [`csgo_gc/main.cpp`](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/main.cpp) (GC installation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["Game integration"]
  node_launcher["Platform launcher"]
  node_entry["GC installation<br/>[main.cpp]"]
  node_hook["Steam hook<br/>[steam_hook.cpp]"]
end

subgraph group_runtime["Coordinator runtime"]
  node_client["Client coordinator<br/>[gc_client.cpp]"]
  node_server["Server coordinator<br/>[gc_server.cpp]"]
  node_shared["Shared coordinator<br/>[gc_shared.cpp]"]
  node_protocol["GC messages<br/>[gc_message.cpp]"]
  node_schemas["Protocol definitions"]
  node_config["Configuration<br/>[config.cpp]"]
end

subgraph group_items["Inventory features"]
  node_inventory["Inventory state<br/>[inventory.cpp]"]
  node_schema["Item schema<br/>[item_schema.cpp]"]
  node_itemops["Item operations<br/>[item_utils.cpp]"]
  node_case["Case opening<br/>[case_opening.cpp]"]
  node_souvenir["Souvenir generation<br/>[souvenir.cpp]"]
  node_cosmetics["Cosmetic support<br/>[graffiti.cpp]"]
  node_music["Music kits<br/>[music_kit.cpp]"]
end

subgraph group_connectivity["Networking and control"]
  node_rcon["RCON control<br/>[rcon_server.cpp]"]
  node_netclient["Client networking"]
  node_netserver["Server networking"]
end

node_game(("CS:GO client"))
node_steam(("Steam services"))
node_editor(("Inventory editor"))
node_localserver(("Dedicated server"))

node_launcher -->|"loads"| node_entry
node_entry -->|"installs"| node_hook
node_game -->|"GC traffic"| node_hook
node_hook -->|"redirects"| node_client
node_client -->|"parses and sends"| node_protocol
node_client -->|"reads and updates"| node_inventory
node_client -->|"uses"| node_shared
node_server -->|"uses"| node_shared
node_client -->|"handles messages"| node_schemas
node_client -->|"handles item requests"| node_itemops
node_client -->|"handles crate requests"| node_case
node_client -->|"supports generation"| node_souvenir
node_client -->|"supports cosmetics"| node_cosmetics
node_client -->|"publishes MVP counts"| node_music
node_inventory -->|"uses definitions"| node_schema
node_editor -->|"edits inventory"| node_inventory
node_rcon -->|"dispatches commands"| node_client
node_netclient -.->|"uses P2P"| node_steam
node_netserver -.->|"uses P2P"| node_steam
node_localserver -->|"uses coordinator"| node_server
node_config -->|"configures"| node_client

click node_launcher "https://github.com/gt-610/csgo-gc/tree/main/launcher"
click node_entry "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/main.cpp"
click node_hook "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/steam_hook.cpp"
click node_client "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_client.cpp"
click node_server "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_server.cpp"
click node_shared "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_shared.cpp"
click node_protocol "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_message.cpp"
click node_schemas "https://github.com/gt-610/csgo-gc/tree/main/protobufs"
click node_inventory "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/inventory.cpp"
click node_schema "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/item_schema.cpp"
click node_itemops "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/item_utils.cpp"
click node_case "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/case_opening.cpp"
click node_souvenir "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/souvenir.cpp"
click node_cosmetics "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/graffiti.cpp"
click node_music "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/music_kit.cpp"
click node_config "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/config.cpp"
click node_rcon "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/rcon_server.cpp"
click node_netclient "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/networking_client.cpp"
click node_netserver "https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/networking_server.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_launcher,node_entry,node_hook,node_game toneBlue
class node_client,node_server,node_shared,node_protocol,node_schemas,node_config toneAmber
class node_inventory,node_schema,node_itemops,node_case,node_souvenir,node_cosmetics,node_music,node_localserver toneMint
class node_rcon,node_netclient,node_netserver toneRose
class node_steam,node_editor toneIndigo
```

## Components

### Game integration

- [Platform launcher](https://github.com/gt-610/csgo-gc/tree/main/launcher): `launcher`
- [GC installation](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/main.cpp): `csgo_gc/main.cpp`
- [Steam hook](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/steam_hook.cpp): `csgo_gc/steam_hook.cpp`

### Coordinator runtime

- [Client coordinator](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_client.cpp): `csgo_gc/gc_client.cpp`
- [Server coordinator](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_server.cpp): `csgo_gc/gc_server.cpp`
- [Shared coordinator](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_shared.cpp): `csgo_gc/gc_shared.cpp`
- [GC messages](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/gc_message.cpp): `csgo_gc/gc_message.cpp`
- [Protocol definitions](https://github.com/gt-610/csgo-gc/tree/main/protobufs): `protobufs`
- [Configuration](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/config.cpp): `csgo_gc/config.cpp`

### Inventory features

- [Inventory state](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/inventory.cpp): `csgo_gc/inventory.cpp`
- [Item schema](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/item_schema.cpp): `csgo_gc/item_schema.cpp`
- [Item operations](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/item_utils.cpp): `csgo_gc/item_utils.cpp`
- [Case opening](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/case_opening.cpp): `csgo_gc/case_opening.cpp`
- [Souvenir generation](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/souvenir.cpp): `csgo_gc/souvenir.cpp`
- [Cosmetic support](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/graffiti.cpp): `csgo_gc/graffiti.cpp`
- [Music kits](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/music_kit.cpp): `csgo_gc/music_kit.cpp`

### Networking and control

- [RCON control](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/rcon_server.cpp): `csgo_gc/rcon_server.cpp`
- [Client networking](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/networking_client.cpp): `csgo_gc/networking_client.cpp`
- [Server networking](https://github.com/gt-610/csgo-gc/blob/main/csgo_gc/networking_server.cpp): `csgo_gc/networking_server.cpp`

### Other components

- **CS:GO client**
- **Steam services**
- **Inventory editor**
- **Dedicated server**

## Connections

- Platform launcher → GC installation: loads
- GC installation → Steam hook: installs
- CS:GO client → Steam hook: GC traffic
- Steam hook → Client coordinator: redirects
- Client coordinator → GC messages: parses and sends
- Client coordinator → Inventory state: reads and updates
- Client coordinator → Shared coordinator: uses
- Server coordinator → Shared coordinator: uses
- Client coordinator → Protocol definitions: handles messages
- Client coordinator → Item operations: handles item requests
- Client coordinator → Case opening: handles crate requests
- Client coordinator → Souvenir generation: supports generation
- Client coordinator → Cosmetic support: supports cosmetics
- Client coordinator → Music kits: publishes MVP counts
- Inventory state → Item schema: uses definitions
- Inventory editor → Inventory state: edits inventory
- RCON control → Client coordinator: dispatches commands
- Client networking → Steam services: uses P2P
- Server networking → Steam services: uses P2P
- Dedicated server → Server coordinator: uses coordinator
- Configuration → Client coordinator: configures
