a11ce.com/source-rip.html
This page contains instructions for ripping textures, models, and sounds from Source engine games on macOS. It’s straightforward, but involves several pieces of software that are a bit hard to find. This method has been tested on Half-Life 2 and Insurgency; it might not work for newer games.
I’m on macOS 10.14.6. If you’re on 10.15+ (so no 32-bit support) you might have better luck on some of these steps with running the usual Windows tools with Wine/Whisky.
Source engine resources are stored in .vpk
files.
Different games are organized differently, but you’re usually looking
for a folder (often with the name of the game) containing a bunch of
.vpk
s.
Insurgency has models
, materials
, and
sound
. HL2 has its models in misc
. You might
have to try a few vpk
s to find what you’re looking for.
For this, we will use w0lfschild’s VPK. Make sure to copy it into your Applications folder.
To unpack a vpk
, open the VPK app and drag and drop the
file ending in _dir.vpk
. The contents will be extracted to
a folder alongside the vpk
.
Audio files will be .wav
s, but models and textures need
to be converted into a usable format.
Here we need Mark Douma’s Source Finagler.
Source Finagler also claims to be able to unpack vpk
s but
that doesn’t seem to work anymore.
When you open Source Finagler, it will associate itself to the
.vtf
filetype. Then you can browse/quick-look through the
extracted textures in Finder, open them in Source Finagler, and
Save As
in whatever format you like. I’m describing it this
way because I don’t know of an automated way to do this conversion, so
it really is nice to be able to preview textures before converting
them.
The only way that I could find to convert .mdl
models is
through the SourceIO
Blender addon. I installed Blender 3.4.1 just for this purpose and it
works fine. Download SourceIO.zip
from the github releases
(don’t unzip it). Install it
(Edit -> Preferences -> Add-Ons -> Install... ->
select SourceIO.zip
), import a .mdl
according
to the readme, and export as usual.
Using Blender because there’s no way to preview models before importing them, you just have to guess based on the names.
I think it should be possible to automate model batch coversion using the Blender Python API. If you do this, please let me know. Likewise, feel free to contact me if you have any improvements/extensions to these methods, info applicable to macOS 10.15+, or need help with any step.