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"