Skip to content
master
Switch branches/tags
Code

VRF / Valve Resource Format

GitHub Workflow Status

Valve's Source 2 resource file format parser, decompiler, and exporter. Source 2 files usually files end with _c, for example .vmdl_c.

This repository is split into three components:

  • CLI Decompiler - File data viewer, decompiler and a playground for testing new formats and features.
  • GUI Viewer - A vpk archive viewer and extractor. Also supports viewing resources such as sounds, textures, models, maps, and much more.
  • Library - Provides public API to parse resource files and some helpers.

βš’ View the official website for downloads.

Join our Discord

Join our Discord

Eye catchy screenshots

What's supported?

  • Model viewer
  • Map viewer
  • Sound player
  • VPK viewer which supports opening and exporting files
  • Read only VPK API
  • Binary KeyValues3 parser
  • NTRO support

Why does VRF suck?

This tool is based entirely on a reverse engineered effort because Valve does not provide any documentation or Source 2 code (SDK or engine code), while the Source 1 SDK and leaked engine code are helpful, a lot of systems and formats have changed.

The code contained in this repository is based on countless hours of reverse engineering Source 2 games and not all intricate details have been figured out.

If you are interested in helping, take a look at the open issues.

Supported resource types

Ext Name Support
vanim Animation πŸ‘?
vagrp Animation Group πŸ‘?
vanmgrph Animation Graph No
vseq Sequence Group No
vpcf Particle System πŸ‘? NTRO, KV3
vmat Material πŸ‘? NTRO
vmks Sheet No
vmesh Mesh πŸ‘?
vtex Compiled Texture πŸ‘? DXT1, DXT5, I8, RGBA8888, R16, RG1616, RGBA16161616, R16F, RG1616F, RGBA16161616F, R32F, RG3232F, RGB323232F, RGBA32323232F, BC6H, BC7, IA88, PNG, JPG, ETC2, ETC2_EAC, BGRA8888, ATI1N, ATI2N
vmdl Model πŸ‘?
vphys Physics Collision Mesh No
vsnd Sound πŸ‘?
vmorf MorphSet No
vrman ResourceManifest Yes
vwrld World πŸ‘?
vwnod WorldNode πŸ‘?
vvis WorldVisibility No
vents EntityLump πŸ‘?
vsurf Surface Properties No
vsndevts Sound Event Script πŸ‘?
vsndstck Sound Stack Script πŸ‘?
vpost Postprocessing Settings No
vrmap Resource Remap Table No
vcss Panorama Style πŸ‘?
vxml Panorama Layout πŸ‘?
vpdi Panorama Dynamic Images No
vjs Panorama Script πŸ‘?
vsvg Panorama Vector Graphic πŸ‘?
vsnap Particle Snapshot πŸ‘?
vpsf Particle Snapshot No
vmap Map πŸ‘?
Β  Β  Β 
vpk Pak (package) πŸ‘? Handled by ValvePak
vcs Compiled Shader β?“ Started work in CompiledShader, see #151
vfont Bitmap Font πŸ‘? Decrypts VFONT1, supported in Source 1 (CS:GO) and Source 2 (Dota 2).
dat Closed Captions πŸ‘? Handled by ClosedCaptions
bin Tools Asset Info πŸ‘? Partially handled by ToolsAssetInfo, see #226
vdpn Dota Patch Notes πŸ‘?
vdacdefs DAC Game Defs Data No
vfe Face poser No, see #142
vcd VCD No
vcdlist VCD list No, see #160

List of supported magics:

Magic Description
0x03564B56 VKV\x03 - First binary keyvalues 3 encoding with custom block compression
0x4B563301 KV3\x01 - LZ4 compressed
0x4B563302 KV3\x02 - LZ4 compressed and binary blobs are compressed separately
0x564B4256 VBKV - binary keyvalues 1 (handled by ValveKeyvalue)
0x55AA1234 VPK - valve package (handled by ValvePak)
0x44434356 VCCD - closed captions
0xC4CCACE8 tools asset info
0x32736376 vcs2 - compiled shader
0x31415926 murmurhash2 seed used in various places (like entity keys)
VFONT1 "encrypted" font file

Not all formats are 100% supported, some parameters are still unknown and not fully understood.

License

Contents of this repository are available under MIT license, except for Tests/Files folder contains files which have likely come from Valve's games.