1. Introduction

1.1 Legal Warning

Quake and Doom are trademarks of id Software Inc., Mesquite, Texas. This document is not a publication of id Software, who should not be associated with it. id Software will not answer any questions related to this document.

This document is Copyright (C) 1996 by Olivier Montanuy.
All rights reserved.

Permission to use, copy and distribute unedited copies of this whole document is hereby granted, provided that no fee is charged for the use or availability of this document (other than the normal connection costs for on-line services, if applicable). The above copyright notice and this permission notice must be left intact in all copies of this document. Short excerpts of this document may be quoted in discussion groups or mailing list articles, as long as a reference to the full document is given.

Commercial distribution of this document, in whole or in part, requires prior agreement with the author. Commercial distribution includes any means by which the user has to pay either for the support (e.g. book, newsletter or CD-ROM) or for the document itself. Unauthorized commercial distribution is prohibited.

Disclaimer: this document describes the Quake file formats as we understand them, but we cannot guarantee that anything is correct. In fact, we could be totally wrong. We cannot be held responsible for any consequences of the use or misuse of the information contained herein. You have been warned.

This specification is not totally complete. The upcoming version 4.0 will contain all details about Quake registered, but it has to be converted to LinuxDoc and linked to other spec document.

1.2 Thanks

A lot of thanks to:

Contributors to this document:

1.3 A word from the authors

This document is an updated version of the Unofficial Quake Specs 3.1, adapted for the Quake Shareware release. This release is not compatible with the previous Quake Test1 release. The .BSP and .MDL file formats have changed.

Though this document is largely the result of hacking, it has been checked against the C code of the Quake utility. Some details could not be guessed by hacking. But the C code is so... special, that it's sometime easier to look at the bytes.

You will need some working knowledge of 3D geometry to understand this specification, and a good deal of patience too, because some (if not all) explanations may not be crystal clear.

Please do not make any full-featured editor working with the Quake shareware release.

Last, if you enjoyed editing Quake, don't forget to support id Software and to buy their products. Help feed John and Mike as they work on the next generation game engine!

The authors.

1.4 Where to get the latest version of this document?

The latest version of this document will always be available from the official Quake-editing support site, http://www.gamers.org/dEngine/quake/spec/. The Unofficial Quake Specs are part of the Quake Documentation Project.

Several versions of this document will be available for download from the main Quake ftp archive, ftp.cdrom.com and its numerous mirrors. Some versions are more suitable for on-line viewing, while some others are better for printing. The file names given below contain "??" instead of the version number. You should replace the question marks by the appropriate numbers. For example, qspec40h.zip will contain the HTML pages for version 4.0 of these specs. You will find the latest version of the specs in this directory: ftp://ftp.cdrom.com/pub/idgames2/docs/editing/

File nameContentsDescription
qspec??h.zip quake-spec??.html
The HTML files, generated from the SGML source code. There is one file for each section. Ideal for on-line viewing if you have a WWW browser.
qspec??p.zip quake-spec??.ps The PostScript version of this document, generated for the LaTeX files. This should produce a high-quality output on any PostScript printer. All pages are numbered, and the references from the table of contents use these page numbers.
qspec??t.zip quake-spec??.txt A text-only version, for those who do not have a WWW browser and who cannot print on a PostScript printer. Better than nothing...
qspec??s.zip quake-spec??.sgml The SGML source code for this file. It can be processed with Linuxdoc-SGML in order to generate the document in your favorite format: LaTeX, HTML, GNU info, LyX, RTF, or plain ASCII text.

Other sites will also have a copy of this document (according to the distribution rights stated above) but we cannot guarantee that those sites will have the most recent version.

1.5 Other sources of information

Informations about 3D rendering

Cool Quake related pages


Mailing lists

1.5 Typing conventions

All the code structures are written in C, because C is all we talk. Well, it could have been worse. We could have written that specification in French.

0xABCD   = hexadecimal number ABCD, in C convention.
char     = 8 bit signed integer,
u_char   = 8 bit unsigned integer (BYTE),
short    = 16 bit signed integer,
u_short  = 16 bit unsigned integer (WORD),
long     = 32 bit signed integer,
u_long   = 32 bit unsigned integer (DWORD),
float    = 32 bit single precision real (floating point).