Filesystem: Difference between revisions

From Jedi Knight Wiki | JKHub
No edit summary
m (link)
Line 1: Line 1:
Games using the Quake 3 Engine, such as Jedi Outcast and Jedi Academy, use a virtual 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.
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.

Revision as of 13:44, 29 August 2015

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"