Repository navigation
Conversation
w1tcherrr
marked this pull request as draft
October 12, 2026 16:11
w1tcherrr
force-pushed
the
decompile-paths
branch
from
October 12, 2026 16:17
f3370b2 to
1f9d7a9
Compare
Draft
w1tcherrr
marked this pull request as ready for review
October 16, 2026 22:07
…decompiles give identical files
…put root and writes it
…ependencies and --skip_existing
…exporter, with an include dependencies option
w1tcherrr
force-pushed
the
decompile-paths
branch
from
October 16, 2026 22:23
22f1a40 to
f75043f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every decompiled file is now written at its content path below an output root, so vmdl, vmat and vmap references resolve after decompiling. Before this, only CLI VPK input into a folder kept paths consistent; every other mode flattened or split files (#1389 among them).
ContentExporterandContentPathsin the library decide where every file goes and do all writing. The CLI and GUI pass a root and options.maps/<map>_d.vmap. Compiled map containers (world, world nodes, manifests, entity lumps) and baked lightmaps, cubemaps and light probes are skipped, since recompiling writes them again; their content stays in the vmap. Only map-internal props are extracted.+non_additiveclips, graph variations) are skipped.--decompile_dependencies) also decompiles referenced files from the same package, skipping textures the compiler generates.--skip_existing.ContentFile.KeepFullPathis removed andFileNameis always content-relative.ContentExportQueueexports a resource only after every earlier resource that reaches it through references, a generated resource after the one it was generated from, and files in a map's folder after the map, so the output is the same as a single-threaded run. The CLI and GUI both use it and--threadsis removed._physicsfiles throughContentExporter. Textures are named after their source texture and channel mapping, so the same texture is written once and different ones never share a name.--vpk_cachekeeps its manifest in the output folder, ignores it for another version, package or options, and records a file only once it was exported.Times with 16 threads, output identical in every run:
core/pak01_dir.vpk -dar_baggage.vpk -dchicken.vmdlwith--decompile_dependenciesA map is one long item that the files in its folder wait for, so a single map is not faster.
#1399 is stacked on top of this.
Closes #1389