Skip to main content

Several modern C++20 libraries for sanely parsing Valve formats.

Project description

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.

Other Languages

NuGet Version Python Version

Wrappers for libraries considered complete exist for C, C#, and/or Python, depending on the library. The C# wrappers can be found on NuGet in the sourcepp package. The Python wrappers can be found on PyPI in the sourcepp package.

Included Libraries

Library Supports Read Write Bindings
bsppp BSP v17-27
• Console modifications
• Left 4 Dead 2 modifications
Strata Source modifications
Python
fspp* Source 1 filesystem accessor
gamepp Get Source engine instance window title/position/size C
C#
Python
Run commands in a Source engine instance remotely
kvpp DMX
• Legacy binary v1-2 encoding (binary_vN)
• Legacy SFM v1-9 encoding (sfm_vN)
• Binary v1-5, v9 encodings (binary, binary_seqids)
srctools encodings (unicode_*)
Python
KeyValues v1 Binary
KeyValues v1 Text
mdlpp* MDL v44-49
VTX v7
VVD v4
sndpp* WAV
XWV v0-1, v4
steampp Find Steam install folder - C
C#
Python
Find installed Steam games -
Find Steam game library assets -
toolpp FGD (Source 1)
J.A.C.K. modifications
Hammer++ modifications
Strata Source modifications
Python
WC (CmdSeq) v0.1-0.2
Hammer++ modifications
Strata Source modifications
vcryptpp VICE encrypted files C
C#
Python
VFONT encrypted fonts
vpkpp 007 v1.1, v1.3 (007 - Nightfire) C
C#
Python
APK (Fairy Tale Busters)
FGP v2-3 (PS3, Orange Box)
FPX v10 (Tactical Intervention)
GCF v6
GMA v1-3 (Garry's Mod)
HOG (Descent)
OL (Worldcraft Object Library)
ORE (Narbacular Drop)
PAK (Quake, WON Half-Life)
SiN modifications
HROT modifications
PCK v1-2 (Godot Engine)
VPK pre-v1, v1-2, v54
Counter-Strike: 2 modifications
Counter-Strike: Source ClientMod modifications
VPK (Vampire: The Masquerade - Bloodlines)
VPP v1-3 (Red Faction)
WAD v3
XZP v6 (Xbox, Half-Life 2)
ZIP
BEE_PACK alias (BEE2.4 Package)
BMZ alias (Source 1 Bonus Maps)
• FPK alias (Tactical Intervention)
PK3 alias (Quake III)
PK4 alias (Quake IV, Doom 3)
• PKZ alias (Quake II RTX)
• XZP2 modifications (X360 & PS3, misc. Source 1 titles)
vtfpp APNG C
C#
Python
BMP
EXR v1
FRAMES (PS3, Orange Box)
GIF
HDR
JPEG
PIC
PNG
PNM (PGM, PPM)
PPL v0
PSD
QOI
SHT v0-1
TGA
TTX (TTH, TTZ) v1.0
VBF v3
VTF v7.0-7.6
Strata Source modifications
XTF v5.0 (Xbox, Half-Life 2)
VTFX v8 (X360 & PS3, Orange Box)
VTF3 v8 (PS3, Portal 2 & CS:GO)
WebP

(*) 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.

Gallery

Anything using the sourcepp parser set that I know of, directly or indirectly.

These are only the tools and games using sourcepp that I know of. If you would like to be listed here, email me or join my Discord server, I'd love to hear from you!

Tools

  • fgptool: A tool to crack the filepath hashes in The Orange Box PS3 file groups.
  • fOptimizer: A GUI-based collection of tools written in Python for cutting down on unnecessarily bloated Garry's Mod addon sizes.
  • gimp-vtf: A GIMP plugin to load and save VTF files.
  • gm_addon_optimization_tricks: A desktop tool to optimize Garry's Mod addons/maps.
  • 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.
  • MareTF: An open source MIT-licensed CLI/GUI tool that can create, extract from, preview the contents of and write to every variant of VTF file. Replicates the functionality of Valve's vtex.exe and VTFEdit.
  • Myst IV: Revolution: Performs various fixes for the game Myst IV: Revelation.
  • PBR-2-Source: A Python-powered GUI for converting PBR materials into materials compatible with the Source engine.
  • QVTF++: A QImageIO plugin to load VTF textures, based on panzi's QVTF plugin.
  • RectMaker: A freeware GUI tool that can create and modify .rect files used in Hammer++'s hotspotting algorithm.
  • reloaded2ps3: Convert the PC version of Portal Reloaded to a playable PS3 game.
  • Verifier: A small program that can build an index of a game's files, and validate existing files based on that index. Similar to Steam's "Verify integrity of game files" option, but without overwriting any files.
  • VPKEdit: An open source MIT-licensed CLI/GUI tool that can create, extract from, preview the contents of and write to several pack file formats. Replicates the functionality of Valve's vpk.exe and GCFScape.
    • bsp-linux-fix: Patches maps which have improperly cased packed assets by repacking the assets, fixing an issue on Linux.
    • CS2-EomVotesFix: Fixes displaying workshop map names and thumbnails during end-of-match voting for LAN events.
    • dham: Modifies Dota 2 hero aliases based on a configuration file and packages the changes.
    • Linux BSP Case Folding Workaround: A bash script designed to resolve issues with improperly cased packed map assets in Source engine games on Linux. Extracting the assets allows the game to find them properly.
    • props_scaling_recompiler: Allows converting prop_scalable into a static prop, effectively implementing static prop scaling outside CS:GO.
    • rock:sail: CS2 client-side tool to use skins for free (only visible to the user of the tool).
    • vpk2wad_nd: Converts textures in a VPK to a WAD that can be used by Narbacular Drop maps.
  • VTF Forge: A modern multiplatform recreation of VTFEdit, using Qt.
  • VTF Thumbnailer: Adds previews for VTF files in your file explorer of choice on Windows and Linux.

Games

Portal 2: Community Edition
  • Local addon assets are packed with sourcepp.
  • Verifier and VPKEdit are shipped with the game.
Momentum Mod
  • Some bundled textures are created and/or compressed with MareTF.
  • Some bundled assets are packed with VPKEdit.
Nightmare House: The Original Mod
  • Game assets are packed with VPKEdit.

Special Thanks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sourcepp-2026.4.2.tar.gz (41.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sourcepp-2026.4.2-pp311-pypy311_pp73-win_amd64.whl (2.1 MB view details)

Uploaded PyPyWindows x86-64

sourcepp-2026.4.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded PyPymanylinux: glibc 2.34+ x86-64

sourcepp-2026.4.2-cp314-cp314t-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14tWindows x86-64

sourcepp-2026.4.2-cp314-cp314t-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

sourcepp-2026.4.2-cp312-abi3-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12+Windows x86-64

sourcepp-2026.4.2-cp312-abi3-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.34+ x86-64

sourcepp-2026.4.2-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11Windows x86-64

sourcepp-2026.4.2-cp311-cp311-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

sourcepp-2026.4.2-cp310-cp310-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10Windows x86-64

sourcepp-2026.4.2-cp310-cp310-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

sourcepp-2026.4.2-cp39-cp39-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.9Windows x86-64

sourcepp-2026.4.2-cp39-cp39-manylinux_2_34_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

File details

Details for the file sourcepp-2026.4.2.tar.gz.

File metadata

  • Download URL: sourcepp-2026.4.2.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sourcepp-2026.4.2.tar.gz
Algorithm Hash digest
SHA256 3fc481c6af297addacce9ce602128fea10eab373809cbf2d354462580927c14f
MD5 0e77805e0a75c03c4e5ff7b6ec844ec4
BLAKE2b-256 c4763629e8d425fa0fe52d80e6a5973871779e8035974811c8972a1282c6d6ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2.tar.gz:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 4dc162c3e504a31623c7fdb2f12554ede68f8fcdf2fba18bf1eaed6bdf530531
MD5 d052eb63ed737370b1ea0b9fa48416bf
BLAKE2b-256 c5433f8ad7d872b11e1336b0934519d242117b45a8f6c5fa5f6e229374f98570

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-pp311-pypy311_pp73-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1d1dcff799f80f5ff6085f683c214c9ca49ee1d82bcfb629c694abfb2085e127
MD5 704826604fd82179fddd869c9a410b03
BLAKE2b-256 912ff5ce20e085224787fbf7c71fcf41f463ca98c9ee17c1d167b414f317fc7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 d23d243f4e86aa587c09561318c9709dac0932a9ac45646979e3683a3b6f5379
MD5 e184ce5b75a33a4c76edf6501958f27c
BLAKE2b-256 c88dde83a671bda0ff7637afc335100b8cd78274e42a13f668891c1bb790687f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp314-cp314t-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1bdc33feacbc8d01081035c5b32f72cc5a7845b6bb7f9549e4c8e219eb80dcad
MD5 45f98386cc94d7ff25855b2c4bd60e8d
BLAKE2b-256 c3821e6bb51ffbce84379cf248732726f83ad15d4fb27dbe231e8a901393a3c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp314-cp314t-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: sourcepp-2026.4.2-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sourcepp-2026.4.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 88f381d3c7c104277b49bf1dbb442e68b20f230cb73b81fcd6519d4a9eeee488
MD5 d179b05a25f645067fec57e41ef34cb0
BLAKE2b-256 873b88241e95005be83011d85d0f5789a8d80735c31cc4bc5343dfe79d2e0678

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp312-abi3-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp312-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp312-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3a27cd73c22c3ec29ff966b9452f1194beca5845cae3991c46c70a789cf4230e
MD5 4eff7923a17b4225b400e022ec6ff0b7
BLAKE2b-256 ed9d5e90072a668ce96a69b1bf86b61ae20ec12e0f4184c9c5582d792cd6d781

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp312-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 70c86040d6df70d169d9e701945286bce9cb0ce5f39d2472d09b64a175c8b050
MD5 eac98a1c828dedc098e9d71ed6c179f7
BLAKE2b-256 8ec01b26ce5803bc842a2a1f2972394c0ed10c7026f4f092a3e2969f2fff13ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp311-cp311-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e46c404a5b18b093e22c8cdefef2c67f45e2a36ac1043759fb17b095d8196ebf
MD5 5de899313156d3e676824f2834e49df9
BLAKE2b-256 12cf15c69241a23ee02e5cf1fcb2e62dd3afea172b67b54ba728246d678ff86b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 90a3d4b2894f1e20194cdf0f99566eb5368c3a967cac6b9efd349235105459e3
MD5 5b30633cc215b172d33c996cea78c06f
BLAKE2b-256 4ae6aecf4799b26744340463f01bb576808ab55285c8fb33905431997a0a0946

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp310-cp310-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 381278104dfdc7d5b269190f5f4da4db772c9a1af2cf2061e51d18058961ac71
MD5 176947ec00ab38556cb9f77feace7ced
BLAKE2b-256 ef1e23bfbb4ea283ed211c31057847af621d8870590430632b4650677df7a0d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sourcepp-2026.4.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sourcepp-2026.4.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b6baa986555399bee41332c1b591f200a50ecbac4553f0cfe6334d90246e9dd7
MD5 9cce370d4ef24a3168a37f7f08186792
BLAKE2b-256 3547dbc3d4ad46aba77e1d4e048824d1a61fd3140ba4477289d5deaa5e6841ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp39-cp39-win_amd64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sourcepp-2026.4.2-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.4.2-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 44c6946ff2da745039683ce4e6aa1447ccbae1a59c167d2f2f2fe9a5f6c61b50
MD5 15bebf137be9866055e2f1b158f4904f
BLAKE2b-256 45374f03692325b285ce3921612bceb2b649de624b01b9df4effb8dc3788178c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.4.2-cp39-cp39-manylinux_2_34_x86_64.whl:

Publisher: release.yml on craftablescience/sourcepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page