This is an old revision of the document!
Highly interactive
Video Games
Entertainment medium of the future
Extraction
Helldivers 2
DEFCON (Game)
The Crew
Rebel Inc.
F1 Manager 2023
Stop Killing Games
Video Games/Assets/
Extraction
Video game file extraction is the process of ripping assets from a video game's game files. In 2026, video game assets are still stored on the local machine and streamed from the disk. This makes all game assets accessible from the local machines, allowing talented individuals to extract them into their individual parts.
Process
Some games store their assets plainly, ie. their textures, sounds and many other things are just literal picture and sound files. In this case, “extraction” is as simple as copying the folder's contents elsewhere. DEFCON (Game) is one such case.
Container Files
However, other games, especially ones that were made using one of the popular video game engines like Unity or - shudders - Unreal don't make it quite as easy. When baking, these games pack all the assets into engine-specific container files. For Unity, these are typically found in the game's “Data” folder with .resource endings. Unreal games come with .pak files in the “Shipping” folder.
These files are a lot like .rar and .zip files. You cannot open them directly, but they can be extracted with tools. For .rar/.zip you would use one of the many tools like WinRAR, 7Zip or such, whereas with Unity's files you will need AssetStudio. Like WinRAR lets you load .zip files, AssetStudio lets you load the .resource files, view their contents and extract assets.
Unreal is a lot more proprietary, so it is a lot harder to crack. Unreal is constantly changed and updated so that tool creators have to constantly keep up with Unreal's changes on a shorter timeframe. This leads to tools quickly becoming outdated, which itself leads to many different tools in different stages of production that are compatible with different versions of Unreal to varying degrees. Seriously, I have like four different tools for Unreal games because of that. The standard method is a command line tool called “QuickBMS”. On its own QuickBMS is basically just a “launcher” for all kinds of extraction scripts, a list of which can be found here. When QuickBMS is run, it will ask for a script to run. In our case we would use the Unreal Tournament 4 script. It will then ask for the input files and for an output location. In many cases, games are AES encrypted - an encryption layer on top of the packing method that Unreal already employs - if it asks for an AES Key, that has to be supplied as well. These are game-specific, not computer-specific, so there are resources online with comprehensive lists for a lot of Unity games with keys that work on all machines.
Once set, QuickBMS with the script will get to work and extract.
Middleware Files
Especially when it comes to stuff like game audio (which is what I am mostly interested in), games like to use third party software to help them with the development of the game's audio implementation. It's a bit like a video game engine but for audio, and it's on top of the video game. So when you run these games, you will often also be running a WWise session that tells the game what to do with its audio. Software like WWise have their own specialized formats which, in some cases, are also their own type of container files. Classic examples here are .wem and .bank files. Wem is an audio format, while .bank is a “soundbank”, ie. a file containing multiple, individual audio files.
If you are new to this, you are probably looking for a .wav or .mp3 files, which you consider proper audio files (not at least because most audio players only understand these and similar file formats). In this case, files like .wem need to still be converted, and .bank files need to be extracted. The exact approach here differs based on the exact type of file you're looking at.
For example, there are tools out there that are specially designed to convert .wem files. They come with an input and output folder and basically all you do is running a batch file to convert wem files you pasted into the input folder.
A more comprehensive solution would be to use vgmstream, which comes with direct decoding capability for a vast array of video game sound formats, including most middleware and proprietary sound formats for platforms like Playstation or Nintendo consoles, but vastly exceeding just this. With vgmstream you can listen to .wem or .bank files directly without even needing to convert. But obviously it still has full conversion capability and lets you convert sounds from its home format to any other format vgmstream supports, including .wav and .mp3.
vgmstream is technically a command line tool, but also comes as a plugin for foobar2000 and another audio program I don't know the name of off the top of my head. Foobar2000 already provides an immensely useful graphical interface for managing audio in all kinds of way, including playback, conversion, batch renaming, tagging, playlisting and so so much more. The vgmstream plugin for foobar extends it by adding decoding capabilities for a sea of video game audio types which also means that it can easily convert between all of them (or just listen to them if you want). I've been surprised multiple times in the past that I was able to extract some weird, proprietary audio format from some game I liked, chucked it into foobar and it literally just played the file as if that was completely normal. Hell, you can even drop in .zip or .rar files, and if those archives contain readable audio then foobar will play it, no prompting for extraction. At this point it's genuinely more difficult to find a piece of audio that it cannot read, decode, playback and convert.
