OpenArena
Register
Advertisement

Game data is contained in files with .pk3 extesion: such files hold game logic, game assets, etc. They are sometimes referenced as "pak files", "pack files" or "packages".
"Pack" may more generally refer to a set of assets, like a "MapPack" (a series of arenas bundled together, an example being OACMP), but however those usually end up being stored in pk3 files, too.
Technically, .pk3 files are just .zip files with a different extension.

It is possible to open them with an archive file manager (e.g. 7-zip), however you should not modify the content of stock OA pk3 files, otherwise you may have problems connecting to game servers, due to the "pure server" checks. If you wish to try to replace some content, you should do it as a patch, placing your new stuff into an additional pk3 file with a name alphabetically "later" than the original pk3.

When sv_pure ("pure server") is enabled (which usually should be, except for developing purposes[1]), then only stuff contained in pk3 files will be loaded. Some configuration and GUI-related files might be exceptions to this rule. When "pure server" is active, clients will only load the pk3 files which are also on the server they are currently connecting to, ignoring the other pk3 files they might have.

Pk3 are the only files which can be transferred with the automatic download system of the game.

Pk3 loading order[]

Pk3 loading order is important, as assets with the same name contained in pk3 files alphabetically later do take precedence over those contained in previous pk3 files. This is how "patch" pk3 files allow to update existing stuff by overriding it, but not to completely remove it.

As example, if both pak1.pk3 and pak2.pk3 contain a maps/mymap.bsp (the "asset"), the arena actually loaded when typing /map mymap will be the version contained in pak2.pk3.

Furthermore:

  • Assets contained in pk3 files from homepath (user settings and autodownload folder) take precedence over those from basepath (game installation folder).
  • Assets contained in pk3 files from current mod folder take precedence over those baseoa (the base game).

To check your actual pk3 loading order, you can start OpenArena, pull down the command console and scroll back its history, looking under

----- FS_Startup -----
Current Search Path:

it should list all of your pk3 files loaded at the moment (e.g. excluding those from mods different than the one currently in use), and those shown upper in the list should be the ones which take precedence over those shown below them. A quicker way to get the same result is entering the /path command in console.
Doing such kind of test may be actually useful, as sometimes foreseeing the alphabetical order used by the game may not be so intuitive, as it may involve letters, numbers, special characters and longer or shorter filenames.

Note: the way the assets/files which are not packed into pk3 are managed, and especially their precedence order comparing to those which are packed instead, may vary across different id tech 3 "forks".
With official OA 0.8.8 binaries, "pk3" files do take precedence over "folders". In OA3/"nightly builds" binaries it may be the opposite.

Tips about creating your pk3s[]

See also: Mapping manual/Compiling and packaging

  • Simply use the classic "deflate" zip compression method, as LZMA compression is not supported by the engine.
    An error such as CM_LoadMap: maps/mapname.bsp has wrong version number (0 SHOULD BE 46) may be caused by a LZMA compressed pk3 file.
  • Probably, usage of "Ultra" compression level is not advisable, as the little extra space saved may not be worth the extra loading time.

External links[]

  • Original Q3A files.c from Quake3 engine source code, beginning with a note explaining the Quake3 file system. It is however important to notice that note does not consider the later changes to the engine brought by ioquake3 and other forks (e.g. it says that under Win32 basepath and homepath are the same, while since ioq3 -and OA, too- homepath is created under %appdata% by default in Microsoft Windows). Also the way files outside pk3 take precedence or not over those contained in pk3 files varies depending from the id tech 3 fork in use.

See also[]

Notes[]

  1. Like easily testing the map you are creating, without having to package it each time.
Advertisement