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

Version Python Versions

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.

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.3.9.tar.gz (40.5 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.3.9-pp311-pypy311_pp73-win_amd64.whl (2.1 MB view details)

Uploaded PyPyWindows x86-64

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

Uploaded PyPymanylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12+Windows x86-64

sourcepp-2026.3.9-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.3.9-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.9Windows x86-64

sourcepp-2026.3.9-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.3.9.tar.gz.

File metadata

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

File hashes

Hashes for sourcepp-2026.3.9.tar.gz
Algorithm Hash digest
SHA256 c7eadfccf759034b8842bae39986f8b8407664f5eb8f8a0e5d899e7a595a7002
MD5 ffcf8187bd75d441684b2654a56a84da
BLAKE2b-256 b21503e91534b5c0c67b68d003f3b83f7e81ff3d20e46eeab4afbab7a1d18bb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9.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.3.9-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8d756e9512248217ce6f74ec36d2b7863ffe44c7caa794b77452aff6f9edd69b
MD5 0b3107b8160146e982185fa2b01c6b3e
BLAKE2b-256 3e4e196fd74907e0dcfb129552e722c2391cbab80b08a8613e65f1eb8d73754b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 368ff690f85e2b8e1c5bf60e7228aafa125948aaa7727ac9d4c49d4aeb1b508c
MD5 0ac58448f216f6f6ba8139f2f29dd194
BLAKE2b-256 8b89b22e1684f328b3af7b0bb71ef8ba9c12e9e9dbc75f3e0d4b054df621c99a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 f7210bc218232fc0ae689926ec0634d9e2b675a05fd9d6566711b203fcc6f894
MD5 a057879067c2fc9aed5d8cb717829e72
BLAKE2b-256 d974aa02587913047fa06ebeb87adaf93358d434002fb442b54ec7d8f0beb07b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp314-cp314t-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 74e8119554cbdd7bc7cceccfeaaf67f0c6d88c87fd868041832c082bc67e75fc
MD5 3db6154650e93dfdfdc7486dce7f66ec
BLAKE2b-256 1633b9dd4e2f41aa8b05780e4100941f110340b58b2c03488c5964ee6a120d21

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: sourcepp-2026.3.9-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.3.9-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 132d8101a2b19a2f02b0514b1db4516d1c8bbfd4aa1eedc973bf88a76b84626b
MD5 1e6f011ca26c7a3f3315b9f6ecf44844
BLAKE2b-256 d78aec5537ec22cebebfc476397e15f35c54d2d655c57edf34478c4373258461

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp312-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp312-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 508741d8ad67495b52e9d8688370e11b4ffab8630b5e73780cba5045cff8b6e0
MD5 7d2a1b8cad9b25ccc66a08da21dcb637
BLAKE2b-256 f4a1c2a83ebdaa2e02620297b7491b79f06e32d6a40300edbfaf18d2716c099f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 148648f2d176298835da44ce71a52b12aee17e513794c7b841941dda79977bc4
MD5 98328232e29fb4dd850f1ca9905151e5
BLAKE2b-256 38434aff662002f3c2fe1135b999bc8d6805bed6a696b8f90c26ebfba77f507e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bc11c489f05f33852223067dcb51a7ae3ea09913ab28d646fa1af97a85bef691
MD5 405c1634ebd29994bd399fcd1876e4f4
BLAKE2b-256 d20a6181a274a6ed50b5b4f01b62f501ce4228169b0e346dcce22e7cf3c1547f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3fd0497cdb22639eea7dc95917ccb5a822fc0bee9e9a67d97168a865de610af4
MD5 b0af66f88291a2758a29d8d8757930f0
BLAKE2b-256 20404f48d8617974660253cd59dfd5baf7e807f03effd923a9737ac30d3f8cad

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 756381de79ad0013a47d84b453e6524bae414fb624d8c0b4fc6637de47ae902a
MD5 bbb6f81051b57a1442b66e45c88de492
BLAKE2b-256 b4a6c5e337daccc0edfb321c052bbfd0ae1016289807e12fc45184a04c2ac9e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sourcepp-2026.3.9-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.3.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 65808873579a7d6bbaef0bed415f79d81e723898439fcc4b670dc95bc24026a4
MD5 27ff56369dbe114b6884ce8c31330cfb
BLAKE2b-256 3738015a378f086c1be4690ee96ee9d5c548a983c1713324373372496c5b95f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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.3.9-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sourcepp-2026.3.9-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3f01f4ee0a2dad53480721dae1b965d858e23407f7d894b103e2456ec083e694
MD5 2350be799f26a90b50f5a07d49719548
BLAKE2b-256 44c5d10eb7aac073173a5800a2db87353e62956588995e3844bd0a0240c5d296

See more details on using hashes here.

Provenance

The following attestation bundles were made for sourcepp-2026.3.9-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