HLDokan.NET

Here's a sequel to the Source Map Analyzer. Actually, it's a prequel, because I wrote this almost a year ago. But it shares two things in common: it's a tool almost nobody will really need to use, and it was made for a dead mod.

Obsidian Conflict is a neat HL2 mod that I played a bunch a long time ago. It's dead, and the developers have sorta abandoned it, so I've been making attempts to fix things about it. The Source Map Analyzer was a program to port maps from Obsidian Conflict to Garry's Mod to go with the Garry's Mod Obsidian Conflict gamemode I created. But this was before any of that.

You see, Obsidian Conflict can't mount any other games. For those of you who aren't in the know, many Obsidian Conflict maps use models and materials from other games, like Half-Life 2 Episode 2 or Counter-Strike Source. But Valve changed the way content is mounted in the Source Engine in some point in 2013 (the SteamPipe update). This killed mounting content in Obisidian Conflict.

There's a solution you can do, which involves copying all the content from the games you want to mount to a certain folder in the Source SDK folder. It works, but it means you now have a duplicate copy of all the content in that game. That's no good.

Instead, what if you just symlinked the same folder directly to the content within the package files? These packages, called VPKs, contain most or all of the data for Source Engine games, and if you could mount these packages as a virtual drive, you could symlink from the drive to the Source SDK folder, tricking Obsidian Conflict into mounting SourcePipe games.

Unfortunately, it doesn't work. It mounts, sure, but for some reason files read correctly in some programs (like text editors), but not in others (like VLC or, importantly, the Source Engine). I think it has something to do with the way content is streamed in these programs, but I could never nail it down.

You can still copy files from it, so if you're looking for a better way of browsing VPK files than GCFscape, maybe give this a shot.