3.5 KiB
source2rosetta-gen
Render a published source2rosetta gamedata release into whatever format your framework
reads. source2rosetta does the hard part — deriving CS2 / Dota 2 gamedata from the stripped engine and
validating it on a live server — and publishes two JSON files per game. source2rosetta-gen turns those into
CounterStrikeSharp, Metamod/SourceMod, ModSharp, Swiftly, Plugify, or a typed C# SDK, locally, in a second.
It's deliberately tiny: it links only source2rosetta-core (serde + the format emitters) — no ELF reader,
no disassembler, no ptrace. So a consumer who "just wants the files" downloads one release + this small binary
and generates exactly what they need, instead of every format being pre-baked into the release.
Get it
Grab the prebuilt source2rosetta-gen from the release page, or build it from source:
cargo build --release -p source2rosetta-core
# -> target/release/source2rosetta-gen
(The gen binary lives in the source2rosetta-core crate, so a plain cargo build --release at the repo root
does not build it — use -p source2rosetta-core or --workspace.)
Use it
Download the two artifacts for your game from the release page:
gamedata-<game>.json— the derived gamedata (function signatures + vtable offsets), tiered by confidence.netvars-<game>.json— the typed schema (every class's field offsets + runtime types).
Then point gen at whichever you need and pick a --format. Output goes to --out, or stdout if omitted.
# CounterStrikeSharp combined gamedata (the default)
source2rosetta-gen --from gamedata-cs2.json --format cssharp --out gamedata.json
# Metamod / SourceMod gamedata VDF (one .games.txt)
source2rosetta-gen --from gamedata-cs2.json --format metamod --out csgo.games.txt
# Swiftly / ModSharp / Plugify gamedata
source2rosetta-gen --from gamedata-cs2.json --format swiftly --out gamedata.json
# Typed C# SDK from the schema — one `static class` per engine class, `const` field offsets + types
source2rosetta-gen --netvars netvars-cs2.json --format cs-sdk --out Schema.cs
# Flat netvar offset map (class -> field -> offset)
source2rosetta-gen --netvars netvars-cs2.json --format netvars --out netvars.json
Formats
--format |
needs | output |
|---|---|---|
cssharp (default) |
--from |
CounterStrikeSharp combined gamedata (a commented, sectioned file) |
metamod |
--from |
Metamod:Source / SourceMod gamedata VDF (.games.txt) |
modsharp |
--from |
ModSharp gamedata JSON |
swiftly |
--from |
Swiftly gamedata JSON |
plugify |
--from |
Plugify gamedata JSON |
model |
--from |
the canonical model, re-serialized (format-neutral) |
cs-sdk |
--netvars |
typed C# SDK — static class per schema class, const int field offsets tagged with their type |
netvars |
--netvars |
flat schema map, { class: { field: offset } } |
Confidence tier
The gamedata formats (the --from ones) take a --tier, cumulative and defaulting to high_confidence:
--tier |
includes |
|---|---|
core |
only the guaranteed, first-class entries |
high_confidence (default) |
core + the promoted (verified-name) entries |
experimental |
the above + every graded name guess (each has a resolvable locator, but an unverified name) |
# only the rock-solid set:
source2rosetta-gen --from gamedata-cs2.json --format cssharp --tier core --out gamedata.json
The schema formats (cs-sdk, netvars) ignore --tier.
Part of source2rosetta · AGPL-3.0.