close
Skip to content

vicobill/ValveResourceFormat

 
 

Repository files navigation

VRF / Valve Resource Format

GitHub Workflow Status Image Image

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

Image Image
Image Image

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.

About

🔬 Valve's Source 2 resource file format parser and decompiler

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C# 97.9%
  • GLSL 2.1%