Info from John Carmack (12)

Bernd Kreimeier (Bernd.Kreimeier@NeRo.Uni-Bonn.DE)
Wed, 26 Jun 1996 18:54:04 +0200 (MET DST)

Date: Wed, 26 Jun 1996 18:54:04 +0200 (MET DST)
From: Bernd Kreimeier <Bernd.Kreimeier@NeRo.Uni-Bonn.DE>
Message-Id: <>
Subject: Info from John Carmack (12)

>From Wed Jun 26 18:47 MET 1996

A preliminary document for quake developer types:

Quake's data access
by John Carmack

The user community work with DOOM was exciting and gratifying
to watch. I have designed the quake architecture in a way that
should address some of the awkwardness encountered in modifying
DOOM, as well as enabling changes never before possible.

You must have a full registered version of quake to use any of
these options.

DOOM wad files could not override all data types due to some
data being implicitly ordered. Quake has no sense of ordering in
it's data files, so any file can be overiden.

Some of the DOOM hacks involved patching the executable to change
game rules. In Quake, almost all of the game characteristics are
in the interpreted progs.dat file, which can be freely overiden.

A DOOM directory with lots of add ons was a mess. In quake,
things are cleanly separated, so you can add and remove user games
with a single xcopy or deltree. A quake directory with three add
on games could just be:


All of Quake's data access is through a hierarchal file system,
but the contents of the file system can be transparently merged
from several sources. The game requests data as a pathname,
like "sound/player/death1.wav", but the game system is free to find
that file in different pak files or directory trees.

The "id1" directory is taken to be the game directory by default.
A modified version of quake can be run with "quake -game mygame".
This makes quake take files from the mygame directory if present,
or from the id1 directory if not found in mygame.

All created files (savegames, config files, demos, screen shots,
etc) are written to the game directory, so games will never
interfere with each other.

During development of an add on game, you will probably leave the
data you are generating as separate files, like:


When you are ready to distribute your game to other people, you
may want to generate a pak0.pak file of your directory. It isn't
necessary, but it saves some space and speeds acess a bit.


The "-game mygame" command creates a search path:
mygame/pak0.pak (if present)
mygame/pak1.pak (if present)
mygame/ ...
id1/pak0.pak (if present)
id1/pak1.pak (if present)

You can type "path" at the quake console to see what the current
search path is.

For certain special needs, you can specify an explicit path with
the -path command. "-path c:/localid f:/quake/id1/pak0.pak" would
look on the c: drive first, then fall back to the release data
on f: for files not found.