What is the Source 2 schema system?
Source 2's schema system (schemasystem.dll) is the engine's runtime reflection system. It works like RTTI on steroids: every class, field, enum, offset, and metadata annotation is exposed for introspection. If you're familiar with Source 1's netvars, schemas go much further: you get the full memory layout of all classes, not just networked ones, along with static members and inheritance chains.
Game modules like client.dll and server.dll each register types into their own type scope. These hold field layouts, base class info, alignment, size, and metadata like network groups and default values.
What can you find here?
Look up any class structure or enum the engine exposes, see inheritance hierarchies, and check metadata like network groups, encoding functions, and default values. The data is extracted offline from game files by DumpSource2 and updated automatically with each game patch. You'll sometimes see this called a "schema dump."
Who uses Source 2 schemas?
Source 2 Viewer relies on schemas to parse compiled resource files like models, maps, and particles. Modders and tool developers use them for everything from custom game modes to spectator overlays and replay parsers. Community tools like source2gen, cs2-dumper, and Source2SchemaDumper generate C++, C#, Rust, JSON, and KV3 SDKs from schema data.
Schemas change with every game update. This site pulls from GameTracking whenever a new build ships. Schema diffs between updates are available on GitHub: CS2, Dota 2, Deadlock.
- Search by name, filters can be combined
- Type any text to match class, field, or enum names.
-
module:— filter by module name - e.g. module:client
-
offset:— filter by byte offset - e.g. offset:0x1A0
-
enumvalue:— filter by enum member value - e.g. enumvalue:4
-
metadata:— filter by metadata key name - e.g. metadata:MNetworkEnable
-
metadatavalue:— filter by metadata value - e.g. metadatavalue:true