#vpk #archive #read-write #directory #extract #engine #source

sourcepak

A library for reading and writing Source engine package files

5 unstable releases

0.3.0 Jun 22, 2024
0.2.0 Jun 15, 2024
0.1.2 Apr 11, 2024
0.1.1 Feb 29, 2024
0.1.0 Feb 22, 2024

#1820 in Parser implementations

Download history 22/week @ 2024-07-29 8/week @ 2024-09-16 11/week @ 2024-09-30

329 downloads per month

MIT license

100KB
2K SLoC

sourcepak

sourcepak is a Rust crate that provides support for working with VPK (Valve Pak) files. It allows you to read and write VPK files, as well as extract and pack their contents.

Features

  • Read and write VPK files
  • Extract files from VPK archives
  • Optionally memory-map archive files for faster speeds (with the mem-map feature)
  • Write VPK directory files (dir.vpk)

Supported formats

VPK v1 (Alien Swarm, Dota 2, L4D, L4D2, Portal 2, SFM)

  • Read directory files
  • Read file contents
  • Write VPK directories

VPK v2 (CS:GO, CS:S, DoD:S, HL:S, HL2, HL2:DM, Portal, TF2, Source 2)

  • Read directory files
  • Read file contents
  • Write VPK directories

Respawn VPK (Titanfall)

  • Read directory files
  • Read file contents
  • Read audio files (see here for why this is separate)
  • Write VPK directories

Documentation

Documentation can be found here

Why does this crate exist?

I originally created the TFVPKTool TypeScript library to support reading Respawn VPK files, along with Harmony VPK Tool using Electron.

I very quickly noticed the issue that these often resulted in high memory use due to language and ecosystem I had used.

With sourcepak I am aiming to fix that.

Dependencies

~99–405KB