Archive Formats
At the heart of the Odyssey Engine is its virtual file system. Instead of loading tens of thousands of tiny loose files straight from the local disk, the engine efficiently streams them from large, concatenated archive blobs. You can think of these formats as extremely specialized zip files used to store binary models, compiled scripts, textures, and UI data.
Note
KOTOR utilizes a highly strict two-tier architecture. BIF & KEY act as the core foundational registry for all base-game assets (e.g.
data/models.bifis mapped usingchitin.keyas the absolute global lookup index). Meanwhile, ERF & RIM files act as completely independent, self-contained archives used aggressively for loading localized module levels, stateful save games, and community mods.
Implementation Blueprints
| Format | Name | Layout & Purpose |
|---|---|---|
| BIF | Binary Information File | Massive binary payload silos containing raw game assets packed end-to-end. |
| KEY | Global Index File | Master lookup table mapping precise file names directly to their internal BIF payload offset block. |
| ERF | Encapsulated Resource File | Extremely versatile package format utilized heavily for modules (.mod), stateful save games (.sav), and generic archives (.erf). |
| RIM | Resource Image | Stripped-down, fast-loading, highly compact localized module containers (often used to split up geometry models vs dynamic entity layouts). |