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
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.
A lot of thanks to:
Contributors to this document:
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 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:
|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.|
|| ||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.|
|| ||A text-only version, for those who do not have a WWW browser and who cannot print on a PostScript printer. Better than nothing...|
|| ||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.
rec.games.computer.quake.announce, Info/FAQ/Announcements about Quake. (Moderated)
rec.games.computer.quake.editing, Editing and hacking Quake-related files.
rec.games.computer.quake.playing, Playing Quake and user-created levels.
rec.games.computer.quake.servers, Setup and maintainance of servers.
rec.games.computer.quake.misc, General discussion of Quake.
email@example.com, the Quake editing mailing list. For all topics related to editing Quake. If you want to subscribe, send a message with the word "info" (without quotes) to
firstname.lastname@example.org, the Quake developer's list. For the developers of Quake utilities. If you want to subscribe, send a message with the word "info" (without quotes) to
email@example.com, the Quake-C mailing list. For discussion about Quake-C and how to modify the game using custom Quake-C programs. If you want to subscribe, send a message with the words "info quake-c" (without quotes) to
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).