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

Uploaded PyPyWindows x86-64

sourcepp-2026.2.18-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl (3.4 MB view details)

Uploaded PyPymanylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

sourcepp-2026.2.18-cp314-cp314t-manylinux_2_34_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12+Windows x86-64

sourcepp-2026.2.18-cp312-abi3-manylinux_2_34_x86_64.whl (3.4 MB view details)

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

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

Uploaded CPython 3.11Windows x86-64

sourcepp-2026.2.18-cp311-cp311-manylinux_2_34_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.10Windows x86-64

sourcepp-2026.2.18-cp310-cp310-manylinux_2_34_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.9Windows x86-64

sourcepp-2026.2.18-cp39-cp39-manylinux_2_34_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: sourcepp-2026.2.18.tar.gz
  • Upload date:
  • Size: 40.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.2.18.tar.gz
Algorithm Hash digest
SHA256 e463bc0e6b76149c9474a14c67924d1f20a1282718b00800b4c4a22b00601980
MD5 b3e529bd211f23e71d102723861cb566
BLAKE2b-256 6f9ea6cf425eb79005ea302be9995979dedd5890169fefdda76377e9b86ee512

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3554cd5f7165475ce3604f03842473c7ce5b2201f6aa5b2de9261c3dd9f3eddb
MD5 2730c123531b817ecc2d4d9525cf6daf
BLAKE2b-256 64c7c50d5d47bd27406bddff37d35637787e5f38740a09a74606eb684e71b2e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d35c5f9a0ed1280e7e8d5bd9d9241568dcab368fb518469776d3132007c4b644
MD5 718be7cf2fe4c8e7394190a8a0e910bf
BLAKE2b-256 727b79f5806455b6531d41ff0158e2cb8d2e08616bd6580274911d21b4af0faa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c0be3628c281f665c1407f3d12309b285b28e4b7e1d91ccb7aea6353c67d1398
MD5 4206ff24115b86f291c4431fd97e2b64
BLAKE2b-256 709fb62fe56083d68abe83bfa881dcfd46564e7d6d2f1c667e3901d5ce6789c6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3363b0d696a602c93f1160cdc3b7ad9535f46580cab820224feb281d59798423
MD5 88bdf776d74eae816828a2f91d9cba1d
BLAKE2b-256 775a7945b437837e0d534fa520bb5270134fa7e6ebd0c4872d346d225dde4f29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c1a6f2542394fb05babb6f75268fd48350c3699b352280a7c1a9fc894c2871ec
MD5 523b2f9d319aaab4cbbb54db483ec451
BLAKE2b-256 89a4b10d7d20b7570cad98f049233e8851551539224bc42eb3afa6c8cf1295ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp312-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f068440cb41210118ab10f5f806d23a552ca067da674ee750eec3c4aca4d9714
MD5 0b3cac55436392977b8ec75ea0d462ca
BLAKE2b-256 946c7d594e0d20b68ddc792cb6053cdf9d0938ad04b9315f00edf03eb3562f27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e79319d39c5432d2a3e4d7217a85cb1228f15a7eba94e3de157fefd1335c3f52
MD5 3b524bd671c0b1561062410422b6b136
BLAKE2b-256 3f28030d70138f3c63bf0b2e06281da21e7e621e22d97048ba5228fe3637a3a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3e53c77796a6b0eda40d3f07aebb4b8a36cc247f4e6b3cb5b24ce77697cc7533
MD5 1b84fc229d07a5489594241542fffc8d
BLAKE2b-256 50f78edb356677006e5415e57116298a0465cb1b4661c07fffc20ec6ed50c983

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a4a8bd01626ce42ebdd9f4c85e4e466408d424a1c85106ba1fa11a9ed8c33ff1
MD5 7bc646bedcd7252367d05af82aaa24de
BLAKE2b-256 0bf459750d363e0dc3e77003dd70cc9a75582ced92fcf8a111a4d0bb44bf7187

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 30a31b8c065e323bcbe585f0256912ef7bde12c98a36ef521953257fe98b8c37
MD5 9e0169eb46cc6ba788b537ee7e579536
BLAKE2b-256 8987b689792fe1579e1f18ca40b5c4d7fe1cc665c37e3fe2e2730a1263238ec9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sourcepp-2026.2.18-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.2.18-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8ca94dc2d57e13a5f5016c26b7cb4eb4348f06ea351fcc0ada88c821890c2f6d
MD5 dcf50378cd7cdf0e30dc47f1ab5e4a1a
BLAKE2b-256 1b4e5cb1425235a57173a7449aa4af6a9bd9bcd4c861868451ef284160c68a23

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sourcepp-2026.2.18-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d6fa741be8f85ef83b66ae2eff54f4a2f23555f5a566d8d59e97ab6db71b02fa
MD5 56c13b46fd64bd41f5190dca94218ce4
BLAKE2b-256 b8186d1db06d0ede98e0375ce973901dc10ca24a486272b91211f2e5ccf5a5da

See more details on using hashes here.

Provenance

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