Skip to content
This repository was archived by the owner on Jul 10, 2026. It is now read-only.

5stackgg/gamedata-validator

Repository files navigation

5Stack Gamedata Validator

5Stack is a platform for organizing and managing competitive CS2 matches and tournaments.

Please visit 5Stack for more documentation.

What it validates

Scans a CS2 install's Linux binaries and checks that every byte-pattern signature still resolves, and that every vtable offset is still in bounds. It covers both game server runtimes, since 5Stack runs Swiftly and CounterStrikeSharp side by side:

Set Runtime Source
fivestack both gamedata/fivestack.gamedata.json (vendored from game-server/)
upstream-ccs CounterStrikeSharp fetched at image build from CounterStrikeSharp
upstream-swiftly Swiftly fetched at run time for the version pinned in swiftly-game-server

Entries in fivestack.gamedata.json may carry a runtimes key naming the runtimes that actually use them — the Swiftly port hooks ConnectClient but not the two vtable offsets. Everything else defaults to its set's runtime.

--runtime swiftlys2 or --runtime counterstrikesharp narrows a run to one runtime.

SwiftlyS2 version matching

The upstream-swiftly gamedata is not pinned at image build. When the swiftlys2 runtime is in scope, the validator reads the SwiftlyS2.CS2 <PackageReference> version from swiftly-game-server's src/FiveStack.csproj on GitHub — the release we actually ship — and fetches that version's gamedata from SwiftlyS2 at run time, so it tracks the source of truth rather than a ref that could drift. This needs network access during the run.

--fivestack-ref <ref> reads the csproj from a different branch/tag (default main); --swiftly-ref <tag> skips csproj detection and validates a specific SwiftlyS2 release. If the version can't be read, the run reports error. The version, resolved git ref, and source are reported under swiftly in the result JSON.

Results print as a single GAMEDATA_VALIDATION_RESULT {json} line, and the process exits nonzero unless every checked entry passed. Entries that can't be checked — a member offset rather than a vtable index, or a class with no resolvable vtable — land in skipped and never fail the run.

Credits

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors