Skip to content

craftablescience/sourcepp

Repository files navigation

The Source Pretty Parsers logo. A printer-esque device is scanning a page with hex codes and printing a picture of Cordon Freeman.

Source Pretty Parsers

Build Status License Discord Ko-fi

Several modern C++20 libraries for sanely parsing Valve formats, rolled into one big repository.

Included Libraries

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

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.

Special Thanks

Gallery

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.