# nillerusr/source-engine architecture

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

- Interactive diagram: https://gitdiagram.com/nillerusr/source-engine
- Repository: https://github.com/nillerusr/source-engine

## Overview

Source is a 3D game engine: a player launches or joins a game, the engine coordinates game simulation and presentation, and the result is rendered and exchanged with other players. The tree also identifies a Legion game layer, client/server ragdoll synchronization, tracing, audio, UI, and content systems. The README documents broader platform, rendering, asset-format, and server-browser capabilities. Sampled source is partial, so the graph avoids asserting detailed wiring for unsampled engine subsystems.

Main entry points: [`app/legion/legion.cpp`](https://github.com/nillerusr/source-engine/blob/master/app/legion/legion.cpp) (Legion game), [`app/legion/rendermanager.cpp`](https://github.com/nillerusr/source-engine/blob/master/app/legion/rendermanager.cpp) (Render manager), [`app/legion/physicsmanager.cpp`](https://github.com/nillerusr/source-engine/blob/master/app/legion/physicsmanager.cpp) (Physics manager), [`app/legion/networkmanager.cpp`](https://github.com/nillerusr/source-engine/blob/master/app/legion/networkmanager.cpp) (Network manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine runtime"]
  node_engine["Engine runtime"]
  node_trace["Engine tracing<br/>[enginetrace.cpp]"]
end

subgraph group_game["Game simulation"]
  node_legion["Legion game<br/>[legion.cpp]"]
  node_world["World manager<br/>[worldmanager.cpp]"]
  node_physics["Physics manager<br/>[physicsmanager.cpp]"]
  node_network["Network manager<br/>[networkmanager.cpp]"]
  node_messages["Network messages"]
  node_ragdollserver["Server ragdolls"]
  node_ragdollclient["Client ragdolls"]
end

subgraph group_presentation["Player experience"]
  node_input["Input manager<br/>[inputmanager.cpp]"]
  node_menus["Game menus<br/>[menumanager.cpp]"]
  node_ui["UI manager<br/>[uimanager.cpp]"]
  node_render["Render manager<br/>[rendermanager.cpp]"]
  node_postfx["Post processing"]
  node_voice["Voice audio"]
end

subgraph group_content["Content and services"]
  node_assets["Image formats"]
  node_cache[("Data cache<br/>[datacache.cpp]")]
  node_browser["Server browser"]
  node_achievement["Achievements"]
end

node_player(("Player"))

node_player -->|"chooses game"| node_menus
node_menus -->|"starts game"| node_legion
node_player -->|"provides input"| node_input
node_input -->|"controls game"| node_legion
node_legion -->|"manages world"| node_world
node_legion -->|"updates physics"| node_physics
node_physics -->|"queries collisions"| node_trace
node_legion -->|"coordinates play"| node_network
node_network -->|"encodes messages"| node_messages
node_legion -->|"presents game"| node_render
node_render -->|"uses shader"| node_postfx
node_legion -->|"updates interface"| node_ui
node_legion -->|"uses voice audio"| node_voice
node_ragdollserver -->|"replicates limit"| node_ragdollclient
node_render -->|"uses image formats"| node_assets
node_engine -->|"caches data"| node_cache
node_player -->|"browses servers"| node_browser
node_player -.->|"earns achievements"| node_achievement

click node_engine "https://github.com/nillerusr/source-engine/tree/master/engine"
click node_legion "https://github.com/nillerusr/source-engine/blob/master/app/legion/legion.cpp"
click node_world "https://github.com/nillerusr/source-engine/blob/master/app/legion/worldmanager.cpp"
click node_physics "https://github.com/nillerusr/source-engine/blob/master/app/legion/physicsmanager.cpp"
click node_trace "https://github.com/nillerusr/source-engine/blob/master/engine/enginetrace.cpp"
click node_network "https://github.com/nillerusr/source-engine/blob/master/app/legion/networkmanager.cpp"
click node_messages "https://github.com/nillerusr/source-engine/blob/master/app/legion/networkmessages.cpp"
click node_input "https://github.com/nillerusr/source-engine/blob/master/app/legion/inputmanager.cpp"
click node_menus "https://github.com/nillerusr/source-engine/blob/master/app/legion/menumanager.cpp"
click node_ui "https://github.com/nillerusr/source-engine/blob/master/app/legion/uimanager.cpp"
click node_render "https://github.com/nillerusr/source-engine/blob/master/app/legion/rendermanager.cpp"
click node_postfx "https://github.com/nillerusr/source-engine/blob/master/materialsystem/stdshaders/Engine_Post_dx9.cpp"
click node_voice "https://github.com/nillerusr/source-engine/blob/master/engine/audio/voice_sound_engine_interface.cpp"
click node_ragdollserver "https://github.com/nillerusr/source-engine/blob/master/game/server/ragdoll_manager.cpp"
click node_ragdollclient "https://github.com/nillerusr/source-engine/blob/master/game/client/c_ragdoll_manager.cpp"
click node_assets "https://github.com/nillerusr/source-engine/tree/master/bitmap"
click node_cache "https://github.com/nillerusr/source-engine/blob/master/datacache/datacache.cpp"
click node_browser "https://github.com/nillerusr/source-engine/tree/master/common/ServerBrowser"
click node_achievement "https://github.com/nillerusr/source-engine/tree/master/common"

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_engine,node_trace toneBlue
class node_legion,node_world,node_physics,node_network,node_messages,node_ragdollserver,node_ragdollclient toneAmber
class node_input,node_menus,node_ui,node_render,node_postfx,node_voice toneMint
class node_assets,node_cache,node_browser,node_achievement toneRose
class node_player toneIndigo
```

## Components

### Engine runtime

- [Engine runtime](https://github.com/nillerusr/source-engine/tree/master/engine): `engine`
- [Engine tracing](https://github.com/nillerusr/source-engine/blob/master/engine/enginetrace.cpp): `engine/enginetrace.cpp`

### Game simulation

- [Legion game](https://github.com/nillerusr/source-engine/blob/master/app/legion/legion.cpp): `app/legion/legion.cpp`
- [World manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/worldmanager.cpp): `app/legion/worldmanager.cpp`
- [Physics manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/physicsmanager.cpp): `app/legion/physicsmanager.cpp`
- [Network manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/networkmanager.cpp): `app/legion/networkmanager.cpp`
- [Network messages](https://github.com/nillerusr/source-engine/blob/master/app/legion/networkmessages.cpp): `app/legion/networkmessages.cpp`
- [Server ragdolls](https://github.com/nillerusr/source-engine/blob/master/game/server/ragdoll_manager.cpp): `game/server/ragdoll_manager.cpp`
- [Client ragdolls](https://github.com/nillerusr/source-engine/blob/master/game/client/c_ragdoll_manager.cpp): `game/client/c_ragdoll_manager.cpp`

### Player experience

- [Input manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/inputmanager.cpp): `app/legion/inputmanager.cpp`
- [Game menus](https://github.com/nillerusr/source-engine/blob/master/app/legion/menumanager.cpp): `app/legion/menumanager.cpp`
- [UI manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/uimanager.cpp): `app/legion/uimanager.cpp`
- [Render manager](https://github.com/nillerusr/source-engine/blob/master/app/legion/rendermanager.cpp): `app/legion/rendermanager.cpp`
- [Post processing](https://github.com/nillerusr/source-engine/blob/master/materialsystem/stdshaders/Engine_Post_dx9.cpp): `materialsystem/stdshaders/Engine_Post_dx9.cpp`
- [Voice audio](https://github.com/nillerusr/source-engine/blob/master/engine/audio/voice_sound_engine_interface.cpp): `engine/audio/voice_sound_engine_interface.cpp`

### Content and services

- [Image formats](https://github.com/nillerusr/source-engine/tree/master/bitmap): `bitmap`
- [Data cache](https://github.com/nillerusr/source-engine/blob/master/datacache/datacache.cpp): `datacache/datacache.cpp`
- [Server browser](https://github.com/nillerusr/source-engine/tree/master/common/ServerBrowser): `common/ServerBrowser`
- [Achievements](https://github.com/nillerusr/source-engine/tree/master/common): `common`

### Other components

- **Player**

## Connections

- Player → Game menus: chooses game
- Game menus → Legion game: starts game
- Player → Input manager: provides input
- Input manager → Legion game: controls game
- Legion game → World manager: manages world
- Legion game → Physics manager: updates physics
- Physics manager → Engine tracing: queries collisions
- Legion game → Network manager: coordinates play
- Network manager → Network messages: encodes messages
- Legion game → Render manager: presents game
- Render manager → Post processing: uses shader
- Legion game → UI manager: updates interface
- Legion game → Voice audio: uses voice audio
- Server ragdolls → Client ragdolls: replicates limit
- Render manager → Image formats: uses image formats
- Engine runtime → Data cache: caches data
- Player → Server browser: browses servers
- Player → Achievements: earns achievements
