#vpk #read-write #archive #extract #content #reading #pak

sourcepak

A library for reading and writing Source engine package files

3 releases

0.1.2 Apr 11, 2024
0.1.1 Feb 29, 2024
0.1.0 Feb 22, 2024

#375 in Game dev

Download history 139/week @ 2024-02-20 167/week @ 2024-02-27 7/week @ 2024-03-05 8/week @ 2024-03-12 52/week @ 2024-03-19 2/week @ 2024-03-26 21/week @ 2024-04-02 164/week @ 2024-04-09

164 downloads per month

MIT license

89KB
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)
  • Pack files into VPK archives

Supported formats

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

  • Read directory files
  • Read file contents
  • Patch existing VPKs
  • Write new VPKs

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

  • Read directory files
  • Read file contents
  • Patch existing VPKs
  • Write new VPKs

Respawn VPK (Titanfall)

  • Read directory files
  • Read file contents
  • Read audio files
  • Patch existing VPKs
  • Write new VPKs

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–415KB