⚠️ Work in progress!
This is an unofficial and incomplete documentation about the game file structure and modding. For any information not found here please look into Discussions and post any question there.
Before you start with modding it's a good idea to extract all the game's resource files.
Please follow the instructions in pre-mod.md for this.
The game assets are usually stored in .gob
container files.
GOB files can be extracted using gobext tool.
The resource folder structure:
Root
│
├── 3do #3D models (.3do)
│ └── key #animations (.key)
├── cog #COG scripts (.cog)
├── mat #Material texture files
├── misc
│ ├── ai #AI behavior definition files (.ai)
│ ├── pup #Character movement puppet files (.pup)
│ ├── snd #Sound definition files (.snd)
│ ├── spr #Sprite definition files (.spr)
│ └── ui #contains only unused default font.gcf font atlas file
├── ndy #Level files (.cnd/.ndy)
└── sound #Sound files (.wav)
COG scripts are the heart of game logic. They define the mechanics behind the game, like cutscenes, level goals, unlocking/locking doors, weapon definitions, etc...
Documentation on COG scripting can be found in cog.md.
Documentation for KEY animation file (.key) can be found in key.md.
Documentation for puppet file (.pup) specification can be found in pup.md.
There are 2 types of level files:
- NDY - text based level format which can be edited in any text editor.
The documentation for this file format can be found in ndy.md - CND - is compact binary level format. The file has a structure similar as NDY file and stores both the level structure and game assets.
The C++ code for CND file structure can be found in: https://github.com/smlu/ProjectMarduk/tree/develop/libraries/libim/content/asset/world/impl/serialization/cnd
The maximum file name length, including the file extension in Jones3D engine is limited to 64 characters.
Therefore all longer file names have to be abbreviated.
Some of general abbreviations:
dflt - default
bk - back
by - boy
com - commie
fr - front
ib - ice boss
ij - indy jeep
in - indy
inv - inventory
ir - indy raft
lb - lava boss
mc - mine car
mo - monkey
by - boy
ol - old lady
rft - raft
sn - snake
sp - spider
so - sophia
tu - turner
uw - under water
vo - volodnikov
yl - young lady
Also, every file which refers to specific game level is prefixed with 3 letters of abbreviated level name eg.: pyr_, pru_...