Several modern C++20 libraries for sanely parsing Valve formats, rolled into one big repository.
Name | Supports | Read | Write | Wrappers |
---|---|---|---|---|
bsppp * |
BSP v17-27 | ✅ | ✅ | |
dmxpp * |
DMX Binary v1-5 | ✅ | ❌ | |
gamepp |
Get Source engine instance window title/position/size | ✅ | ❌ | C Python |
Run commands in a Source engine instance remotely | ❌ | ✅ | ||
kvpp |
KeyValues Text v1† | ✅ | ✅ | |
mdlpp * |
MDL v44-49 | ✅ | ❌ | |
VTX v7 | ✅ | ❌ | ||
VVD v4 | ✅ | ❌ | ||
steampp |
Find Steam install folder | ✅ | - | C Python |
Find installed Steam games | ✅ | - | ||
toolpp |
FGD (Source 1)
• Hammer++ modifications • Strata Source modifications |
✅ | ✅ | |
WC (CmdSeq) v0.1-0.2
• Strata Source modifications |
✅ | ✅ | ||
vcryptpp |
VICE encrypted files | ✅ | ✅ | C C# Python |
VFONT encrypted fonts | ✅ | ❌ | ||
vpkpp |
BMZ | ✅ | ✅ | C C# |
BSP v17-27 | ✅ | ✅ | ||
FPX v10 (Tactical Intervention) | ✅ | ✅ | ||
GCF v6 | ✅ | ❌ | ||
GMA v1-3 (Garry's Mod) | ✅ | ✅ | ||
PAK (Quake, WON Half-Life) | ✅ | ✅ | ||
PCK v1-2 (Godot Engine) | ✅ | ✅ | ||
PK3 (Quake III) | ✅ | ✅ | ||
PK4 (Quake IV, Doom 3) | ✅ | ✅ | ||
VPK pre-v1, v1-2, v54
• Counter-Strike: 2 modifications • Counter-Strike: Source ClientMod modifications |
✅ | ✅ | ||
VPK (Vampire: The Masquerade - Bloodlines) | ✅ | ✅ | ||
WAD v3 | ✅ | ✅ | ||
ZIP | ✅ | ✅ | ||
vtfpp |
BMP | ✅ | ✅ | Python |
EXR v1 | ✅ | ✅ | ||
GIF | ✅ | ❌ | ||
HDR | ✅ | ✅ | ||
JPEG | ✅ | ✅ | ||
PIC | ✅ | ❌ | ||
PNG | ✅ | ✅ | ||
PNM (PGM, PPM) | ✅ | ❌ | ||
PPL v0 | ✅ | ✅ | ||
PSD | ✅ | ❌ | ||
TGA | ✅ | ✅ | ||
VTF v7.0-7.6
• Strata Source modifications |
✅ | ✅ |
(*) These libraries are incomplete and still in development. Their interfaces are unstable and will likely change in the future. Libraries not starred should be considered stable, and their existing interfaces will not change much if at all. Note that wrappers only exist for stable libraries.
(†) Many text-based formats in Source are close to (if not identical to) KeyValues v1, such as VMT and VMF.
Wrappers for libraries considered complete exist for C, C#, and/or Python, depending on the library. The Python wrappers can be found on PyPI in the sourcepp package.
steampp
is based on the SteamAppPathProvider library by @Trico Everfire and Momentum Mod contributors.vpkpp
's GCF parser was contributed by @bt and @ymgve.vpkpp
's WAD3 parser was contributed by @ozxybox.vtfpp
's write support is based on work by @Trico Everfire.
A list of projects using the sourcepp
parser set. If you'd like to see your project here, make a PR!
- VPKEdit: An open source MIT-licensed tool that can create, extract from,
preview the contents of and write to several pack file formats. A CLI application is bundled with the program which replicates
the functionality of Valve's
vpk.exe
. - GodotSource: A work-in-progress set of bindings to connect the
sourcepp
libraries to Godot. Allows GDScript to work with the libraries, and allows Godot to directly load Source engine assets from a user project or from installed Source games. - Verifier: A small program that can build an index of a game's files, and validate
existing files based on that index. Think Steam's "Verify integrity of game files" option, but without actually overwriting any
files.
sourcepp
is used to parse Steam depot configs, as well as enable indexing the contents of VPKs.