{"id":13696404,"url":"https://github.com/ValveResourceFormat/ValveResourceFormat","last_synced_at":"2025-05-03T17:31:09.429Z","repository":{"id":2206972,"uuid":"42366054","full_name":"ValveResourceFormat/ValveResourceFormat","owner":"ValveResourceFormat","description":"🔬 Valve's Source 2 resource file format parser, decompiler, and exporter.","archived":false,"fork":false,"pushed_at":"2025-04-25T16:29:11.000Z","size":14468,"stargazers_count":1759,"open_issues_count":71,"forks_count":220,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-04-25T17:44:28.549Z","etag":null,"topics":["csharp","decompiler","dotnet","exporter","format-parser","hacktoberfest","parser","source2","steam","valve","vpk","vpk-viewer"],"latest_commit_sha":null,"homepage":"https://valveresourceformat.github.io","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ValveResourceFormat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-09-12T17:24:11.000Z","updated_at":"2025-04-25T16:29:15.000Z","dependencies_parsed_at":"2023-09-27T17:22:08.742Z","dependency_job_id":"4b23c366-a70f-4173-bea3-bbd95c66b56c","html_url":"https://github.com/ValveResourceFormat/ValveResourceFormat","commit_stats":{"total_commits":4218,"total_committers":45,"mean_commits":93.73333333333333,"dds":"0.34850640113798004","last_synced_commit":"f186745a6aac65ca61ac571e811a77ee6ca112b3"},"previous_names":["valveresourceformat/valveresourceformat","steamdatabase/valveresourceformat"],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValveResourceFormat%2FValveResourceFormat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValveResourceFormat%2FValveResourceFormat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValveResourceFormat%2FValveResourceFormat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValveResourceFormat%2FValveResourceFormat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ValveResourceFormat","download_url":"https://codeload.github.com/ValveResourceFormat/ValveResourceFormat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251795409,"owners_count":21645022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","decompiler","dotnet","exporter","format-parser","hacktoberfest","parser","source2","steam","valve","vpk","vpk-viewer"],"created_at":"2024-08-02T18:00:39.415Z","updated_at":"2025-05-03T17:31:09.408Z","avatar_url":"https://github.com/ValveResourceFormat.png","language":"C#","readme":"\u003ch1 align=\"center\"\u003e\u003cimg src=\"./Misc/Icons/source2viewer.png\" width=\"64\" align=\"center\"\u003e Source 2 Viewer\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/ValveResourceFormat/ValveResourceFormat/actions\"\u003e\n        \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ValveResourceFormat/ValveResourceFormat/build.yml?logo=github\u0026style=for-the-badge\u0026branch=master\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.nuget.org/packages/ValveResourceFormat/\"\u003e\n        \u003cimg src=\"https://img.shields.io/nuget/v/ValveResourceFormat.svg?logo=nuget\u0026style=for-the-badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://app.codecov.io/gh/ValveResourceFormat/ValveResourceFormat\"\u003e\n        \u003cimg src=\"https://img.shields.io/codecov/c/github/ValveResourceFormat/ValveResourceFormat/master?logo=codecov\u0026logoColor=ffffff\u0026style=for-the-badge\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n*\\* The library component of Source 2 Viewer is called ValveResourceFormat (VRF).*\n\nValve's Source 2 resource file format parser, decompiler, and exporter.\nSource 2 files usually end with `_c`, for example `.vmdl_c`.\n\nThis repository is split into three components:\n- **CLI Decompiler** - File data viewer, decompiler and a playground for testing new formats and features.\n- **GUI Viewer** - A vpk archive viewer and extractor. Also supports viewing resources such as sounds, textures, models, maps, and much more.\n- **Library** - Provides public API to parse resource files and some helpers.\n\n⚒ [View the official website for downloads](https://valveresourceformat.github.io/).\n\n## Join our Discord\n\n[![Join our Discord](https://discord.com/api/guilds/467730051622764565/embed.png?style=banner2)](https://steamdb.info/discord/)\n\n## Eye catchy screenshots\n\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://valveresourceformat.github.io/static/screen_map.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://valveresourceformat.github.io/static/screen_texture.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://valveresourceformat.github.io/static/screen_package.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://valveresourceformat.github.io/static/screen_cli.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n\n## What's supported?\n- VPK viewer which supports opening and exporting files\n- Creating new vpk archives\n- Model viewer and decompiler to glTF and modeldoc\n- Map viewer and decompiler to glTF and vmap\n- Material decompiler to vmat\n- Sound player\n- Binary KeyValues3 parser\n- NTRO support\n\n## Limitations\n\nThis 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.\n\nThe 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.\n\nIf you are interested in helping, take a look at the open issues and join our Discord.\n\nNot all formats are 100% supported, some parameters are still unknown and not fully understood.\n\n## Supported resource types\nExt      | Name                    | Support\n-------- | ----------------------- | -------\nvagrp    | Animation Group         | 👍\nvanim    | Animation               | 👍\nvanmgrph | Animation Graph         | No\nvcompmat | Composite Material      | No\nvcss     | Panorama Style          | 👍\nvdata    | Data                    | 👍\nvents    | EntityLump              | 👍\nvjs      | Panorama Script         | 👍\nvmap     | Map                     | 👍\nvmat     | Material                | 👍\nvmdl     | Model                   | 👍\nvmesh    | Mesh                    | 👍\nvmorf    | MorphSet                | 👍\nvpcf     | Particle System         | 👍\nvpdi     | Panorama Dynamic Images | No\nvphys    | Physics Collision Mesh  | 👍\nvpost    | Postprocessing Settings | 👍\nvpsf     | Particle Snapshot       | No\nvpulse   | Pulse Graph Definition  | No\nvrman    | ResourceManifest        | 👍\nvrmap    | Resource Remap Table    | No\nvrr      | Response rules          | 👍\nvseq     | Sequence Group          | No\nvsmart   | Smart Prop              | Partially\nvsnap    | Particle Snapshot       | 👍\nvsnd     | Sound                   | 👍\nvsndevts | Sound Event Script      | 👍\nvsndstck | Sound Stack Script      | 👍\nvsurf    | Surface Properties      | No\nvsvg     | Panorama Vector Graphic | 👍\nvtex     | Compiled Texture        | 👍\nvts      | Panorama TypeScript     | 👍\nvvis     | WorldVisibility         | No\nvwnod    | WorldNode               | 👍\nvwrld    | World                   | 👍\nvxml     | Panorama Layout         | 👍\n\u0026nbsp;   | \u0026nbsp;                  | \u0026nbsp;\nvpk      | Pak (package)           | 👍 Handled by [ValvePak](https://github.com/ValveResourceFormat/ValvePak)\nvcs      | Compiled Shader         | 👍 Handled by `CompiledShader`\nvfont    | Bitmap Font             | 👍 Decrypts `VFONT1`, supported in Source 1 and Source 2.\ndat      | Closed Captions         | 👍 Handled by `ClosedCaptions`\nbin      | Tools Asset Info        | 👍 Handled by `ToolsAssetInfo`\nvdpn     | Dota Patch Notes        | 👍\nvdacdefs | DAC Game Defs Data      | No\nvfe      | Flex Scene File         | 👍 Handled by `FlexSceneFile`\nvcd      | VCD                     | No\nvcdlist  | VCD list                | 👍\n\n## List of supported magics\nMagic        | Description\n------------ | ------------\n`0x03564B56` | VKV\\x03 - First binary keyvalues 3 encoding with custom block compression\n`0x4B563301` | KV3\\x01 - Binary keyvalues 3 (version 1)\n`0x4B563302` | KV3\\x02 - Binary keyvalues 3 (version 2)\n`0x4B563303` | KV3\\x03 - Binary keyvalues 3 (version 3)\n`0x4B563304` | KV3\\x04 - Binary keyvalues 3 (version 4)\n`0x4B563305` | KV3\\x05 - Binary keyvalues 3 (version 5)\n`0x564B4256` | VBKV - binary keyvalues 1 (handled by ValveKeyvalue)\n`0x55AA1234` | VPK - valve package (handled by ValvePak)\n`0x44434356` | VCCD - closed captions\n`0xC4CCACE8` | tools asset info\n`0xC4CCACE9` | tools asset info (newer version)\n`0x32736376` | vcs2 - compiled shader\n`0x31415926` | murmurhash2 seed used by StringToken\n`0xEDABCDEF` | murmurhash64 seed used to encode resource IDs\n`VFONT1`     | \"encrypted\" font file\n`0x00564645` | VFE - flex scene file\n\n## Command-line options\n\nOption                        | Description\n----------------------------- | -----------\n| **Input**                   | |\n`--input` (or `-i`)           | Input file to be processed. With no additional arguments, a summary of the input(s) will be displayed.\n`--recursive`                 | If specified and given input is a folder, all sub directories will be scanned too.\n`--recursive_vpk`             | If specified along with `--recursive`, will also recurse into VPK archives.\n`--vpk_extensions` (or `-e`)  | File extension(s) filter, example: \"vcss_c,vjs_c,vxml_c\".\n`--vpk_filepath` (or `-f`)    | File path filter, example: \"panorama\\\\\" or \"scripts/items/items_game.txt\".\n`--vpk_cache`                 | Use cached VPK manifest to keep track of updates. Only changed files will be written to disk.\n`--vpk_verify`                | Verify checksums and signatures.\n| **Output**                  | |\n`--output` (or `-o`)          | Output path to write to. If input is a folder (or a VPK), this should be a folder.\n`--all` (or `-a`)             | Print the content of each resource block in the file.\n`--block` (or `-b`)           | Print the content of a specific block, example: DATA, RERL, REDI, NTRO.\n`--vpk_decompile` (or `-d`)   | Decompile supported resource files.\n`--vpk_list` (or `-l`)        | Lists all resources in given VPK. File extension and path filters apply.\n`--vpk_dir`                   | Print a list of files in given VPK and information about them.\n| **Type specific export**    | |\n`--gltf_export_format`        | Exports meshes/models in given glTF format. Must be either 'gltf' or 'glb'.\n`--gltf_export_materials`     | Whether to export materials during glTF exports.\n`--gltf_export_animations`    | Whether to export animations during glTF exports.\n`--gltf_textures_adapt`       | Whether to perform any glTF spec adaptations on textures (e.g. split metallic map).\n`--gltf_export_extras`        | Export additional Mesh properties into glTF extras\n`--tools_asset_info_short`    | Whether to print only file paths for tools_asset_info files.\n| **Other**                   | |\n`--threads`                   | If higher than 1, files will be processed concurrently.\n`--version`                   | Show version information.\n`--help`                      | Show help information.\n\nThere are also `--stats` related options, but they are not listed here as they are not relevant to most users.\n\n### Examples:\n\n```powershell\n# List all files in the vpk\n# Use `--vpk_dir` to also print file metadata\n./Source2Viewer-CLI.exe -i \"core/pak01_dir.vpk\" --vpk_list\n\n# Export the entire vpk as is\n./Source2Viewer-CLI.exe -i \"core/pak01_dir.vpk\" --output \"pak01_exported\"\n\n# Export only the \"panorama/layout\" folder\n./Source2Viewer-CLI.exe -i \"core/pak01_dir.vpk\" --output \"pak01_exported\" --vpk_filepath \"panorama/layout\"\n\n# Decompile and export all Panorama files to a folder named \"exported\"\n./Source2Viewer-CLI.exe -i \"core/pak01_dir.vpk\" -e \"vjs_c,vxml_c,vcss_c\" -o \"exported\" -d\n\n# Print resource blocks for a specific file similar to resourceinfo.exe in Source 2\n# Use `--block DATA` to only print a specific block\n./Source2Viewer-CLI.exe -i \"file.vtex_c\" --all\n\n# Decompile a specific file on disk\n./Source2Viewer-CLI.exe -i \"file.vtex_c\" -o exported.png\n```\n\n## License\n\nContents of this repository are available under [MIT license](LICENSE), except for `Tests/Files` folder contains files which have likely come from Valve's games.\n\n## Code signing policy\n\nFree code signing provided by [SignPath.io](https://about.signpath.io), certificate by [SignPath Foundation](https://signpath.org).\n","funding_links":[],"categories":["Gaming","⚙️ Engines"],"sub_categories":["Mapping / Modding /  Modeling / Texturing / Tools / Hammer Editor","Source (Valve)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FValveResourceFormat%2FValveResourceFormat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FValveResourceFormat%2FValveResourceFormat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FValveResourceFormat%2FValveResourceFormat/lists"}