Filesystem
Games using the Quake 3 Engine, such as Jedi Outcast and Jedi Academy, use a virtual filesystem.
It works similarly to mounting in Linux: When a certain file is requested, for example "models/players/kyle/model.glm", its actual location can be in any of the mounted directories/pk3 archives; it does not matter which one. This makes the game extendible: New files can simply be put into an additional .pk3 archive that will get mounted at startup.
So what archives and directories are mounted?
- Any PK3 file inside GameData/base; PK3 files are just renamed .zip files, and only zip compression is supported! One freeware tool for reading and creating zip archives is 7-Zip.
- Any PK3 file inside GameData/currentmod, if you're inside a mod
- In Single Player, and in MP if the CVar "sv_pure" is set to 0: any loose files and folders in GameData/base and GameData/currentmod
So, to get back to our example of "models/players/kyle/model.glm": In unmodified Jedi Academy Single Player this would search for:
- "GameData/base/models/players/kyle/model.glm"
- for "models/players/kyle/model.glm" inside "GameData/base/assets0.pk3", "GameData/base/assets1.pk3", "GameData/base/assets2.pk3" and "GameData/base/assets3.pk3"
Directory structure
This is the directory structure of JK2 and JA, found inside the PK3 files.
botroutes
eagle
Contains files associated with the Creative Labs enhanced audio system.
levelshots
JPEG images shown during level loading.
maps
Map files. .bsp
music
Music files. .mp3
scripts
Icarus script files. They are grouped in subdirectories for each map.
sound
Sound effects, in .wav and .mp3 format.
sound.txt contains all soundset definitions.
- chars subdirectory: character sound effects (including English dialogue)
- chr_d subdirectory: character dialogue in German
- chr_e subdirectory: character dialogue in Spanish
- chr_f subdirectory: character dialogue in French
strings
.str files containing subtitles.
objectives.str contains mission objectives.