<!DOCTYPE ARTICLE PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
<!ENTITY lowbar "_">
	<!ENTITY lsqb "[">
	<!ENTITY rsqb "]">
	<!ENTITY lcub "{">
	<!ENTITY rcub "}">
	<!ENTITY num "#">
	<!ENTITY bsol "\">
	<!ENTITY verbar "|">
	]><article>
<articleinfo>
<title>The recording FAQ</title>
<author>
<firstname>Uwe</firstname><surname>Girlich</surname>
<affiliation><address><email>uwe@half-empty.de</email></address></affiliation>
</author>
<pubdate>v1.1.7, 10/24/2009</pubdate>
<abstract>
<para>These are the frequently asked questions with answers concerning
game recordings.</para>
</abstract>
</articleinfo>
<sect1>
<title>General</title>
<sect2>
<title>About the FAQ</title>
<sect3>
<title>Why just another FAQ?</title>
<para>Because I get so many mails asking me the same things over and over again.</para>
</sect3>
<sect3>
<title>What do I find in this FAQ?</title>
<para>Information on game recordings, <emphasis REMAP="bf">N O T</emphasis> covered by my standard
documents:</para>
<para><variablelist>
<varlistentry>
<term>The Unofficial LMP format description</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/lmp"></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The Unofficial DMO format description</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/dmo"></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The Unofficial DEM format description</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/dem"></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The Unofficial QWD format description</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/qwd"></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The Unofficial DM2 format description</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/dm2"></ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>LMPC user's guide</term>
<listitem>
<para><ulink URL="http://demospecs.half-empty.de/lmpc-alpha"></ulink>,
<ulink URL="http://demospecs.half-empty.de/lmpc-beta"></ulink> or
<ulink URL="http://demospecs.half-empty.de/lmpc-stable"></ulink></para>
</listitem>
</varlistentry>
</variablelist></para>
</sect3>
</sect2>
<sect2>
<title>Personal questions</title>
<sect3>
<title>Why all your stuff isn't Windows?? friendly?</title>
<para>I have no Windows?? at home and also not at work (I'm working for a 
UNIX software company). I write all stuff with Linux and have to 
cope with it.</para>
</sect3>
<sect3>
<title>What's your email address?</title>
<para>This is a difficult question. I have currently two main addresses but
will most likely answer from my work address.</para>
<para><variablelist>
<varlistentry>
<term><ulink URL="mailto:Uwe.Girlich@philosys.de">Uwe.Girlich@philosys.de</ulink></term>
<listitem>
<para>is my mailbox at work. It is <emphasis>currently</emphasis> my main mailbox and I will
answer mails to other boxes from here.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink URL="mailto:uwe@half-empty.de">uwe@half-empty.de</ulink></term>
<listitem>
<para>is my mailbox at <ulink URL="http://half-empty.de">Half-Empty</ulink>. I get the mail from there about once a day and will
certainly answer it from my mailbox at work.</para>
</listitem>
</varlistentry>
</variablelist></para>
</sect3>
</sect2>
<sect2>
<title>Game types</title>
<sect3>
<title>What games are covered in this FAQ?</title>
<para><variablelist>
<varlistentry>
<term>Quake</term>
<listitem>
<para>&nbsp;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>QuakeWorld</term>
<listitem>
<para>&nbsp;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Hexen II</term>
<listitem>
<para>&nbsp;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Quake II</term>
<listitem>
<para>&nbsp;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Quake III Arena</term>
<listitem>
<para>&nbsp;</para>
</listitem>
</varlistentry>
</variablelist></para>
</sect3>
</sect2>
</sect1>
<sect1>
<title>Playback problems</title>
<sect2>
<title>Non-working recording files</title>
<sect3 ID="MULTI">
<title>How can I replay a multi-level recording?</title>
<sect4>
<title>Quake and Hexen II</title>
<para>Quake and Hexen II have problems with the play-back of multi-level 
recordings. The reason are blocks like

<screen>block {
 camera 0.00000000 0.00000000 0.00000000;
 stufftext "reconnect\n";
}</screen>

between the different levels. The reconnect command confuses the
play-back totally.</para>
<para>The stupid solution is to use the <emphasis REMAP="it">timedemo</emphasis> console command.</para>
<para>LMPC can repair multi-level DEM files with the <literal REMAP="tt">--fix-multi</literal> command    
line option. It can be used on the fly (as an additional parameter to any
kind of conversion) or with a single binary DEM file as "in-place editing".</para>
<para>During the level change of such a patched DEM file there might be a 
never ending sound effect but it will stop after the next level start.</para>
</sect4>
<sect4 ID="REPAIRDM2">
<title>Quake II</title>
<para>Quake II has similar, if not more severe problems with multi-level
recordings. Because of the mission character of the game (multiple level
changes to reach a single goal) it is vitally important to be able to
replay multi-level DM2 files.</para>
<para>It is possible to chain single-level DM2 files, if only the last one
keeps its <literal REMAP="tt">endblock;</literal>. This leads directly to the solution for 
multi-level DM2 files:

<itemizedlist>
<listitem>
<para><literal REMAP="tt">betweenblock;</literal> has to disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">reconnect;</literal> has to disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">stufftext "reconnect&bsol;n";</literal> has to disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">isdemo 0;</literal> in <literal REMAP="tt">serverdata</literal> messages should be
<literal REMAP="tt">isdemo 1;</literal>.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">stufftext "cmd configstrings key index&bsol;n";</literal> has to
disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">stufftext "cmd baselines key index&bsol;n";</literal> has to disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">stufftext "precache key&bsol;n";</literal> has to be changed to
<literal REMAP="tt">stufftext "precache&bsol;n"</literal>.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">stufftext "record filename&bsol;n";</literal> has to disappear.</para>
</listitem>
<listitem>
<para><literal REMAP="tt">download &lcub; &hellip; &rcub;</literal> has to disappear.</para>
</listitem>
</itemizedlist>

</para>
<para>All these things can be done with the Perl script MULDER, the MUlti-Level DEmo
Repair kit at <ulink URL="http://demospecs.half-empty.de/misc/mulder.html"></ulink>. It acts on DM2 text
files only.</para>
<para>LMPC can repair multi-level DM2 files with the <literal REMAP="tt">--fix-multi</literal> command    
line option. It can be used on the fly (as an additional parameter to any
kind of conversion) or with a single binary DM2 file as "in-place editing".</para>
</sect4>
</sect3>
</sect2>
<sect2>
<title>Too long recordings</title>
<sect3>
<title>How can I split my large recording into single-level pieces?</title>
<para>First, you have to repair the demo file according to the section
<xref LINKEND="MULTI">. Then you can 
use LMPC to convert it into a text file. Now use any decent text editor
or simpler a script (in your favourite script language) to split the
recording and insert the necessary beginnings (for DEM files: CD track)
or endings (for DM2 files: the <emphasis REMAP="bf">endblock</emphasis>). Convert these many 
text files back to binary with LMPC.</para>
<para>I have no experience with multi-level QWD files.</para>
<para>You can do the repair and split part for DM2 files with my Perl script
MULDER, the MUlti-Level DEmo
Repair kit at <ulink URL="http://demospecs.half-empty.de/misc/mulder.html"></ulink>. Just use a 
<literal REMAP="tt">printf</literal> format place-holder (like &percnt;d) in the output name to 
create one file per level:

<screen>mulder infile.dm2 outfile-%02d.dm2</screen>

creates output files with the names outfile-01.dm2, outfile-02.dm2 etc.</para>
<para>Future versions of LMPC may be able to do the same.</para>
</sect3>
</sect2>
</sect1>
<sect1>
<title>Format conversions</title>
<sect2>
<title>Recording formats</title>
<sect3>
<title>Is there a QWD &lt; - &gt; DEM converer?</title>
<para>I'll never write such a program but 
<ulink URL="http://www.planetquake.com/filmat11/">F@11</ulink> 
has a ``load QWD &amp; save DEM'' feature.
Read the source code of Quake and QuakeWorld and write your own.</para>
</sect3>
</sect2>
<sect2>
<title>Movie formats</title>
<sect3>
<title>How can I convert a Quake DEM file to a MPEG file?</title>
<para>Very easily. Quake can write up to 100 screenshots (PCX files) of the 
current screen. So it's simply a question of collecting all screenshots 
and MPEG encoding. </para>
<para>Some simple steps to reach this goal:</para>
<para>

<itemizedlist>
<listitem>
<para>Quake writes 4 frames after the screenshot a message
(<literal REMAP="tt">Wrote quake??.pcx</literal>) to the Quake screen (top line). 
A 1 byte patch of the executable can remove the message.

</para>
<para>There are so many Quake versions out there so I think it 
should be easier to describe what to do: Find in the binary the 
message string 
`<literal REMAP="tt">Wrote &percnt;s</literal>'
This is the <literal REMAP="tt">printf(3)</literal> format string.
You can now change it to 
`<literal REMAP="tt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</literal>'
(this changes the message to some spaces)
or (but this may not work)
`<literal REMAP="tt">&bsol;000rote &percnt;s</literal>' (the byte 0x00, not &bsol;, 0, 0, 0)
(this collapses the <literal REMAP="tt">printf(3)</literal> - message to nothing).</para>
</listitem>
<listitem>
<para>Take the DEM file, split it in 100 frames parts. Watch out for colour
and number changes, so you may do it with DEMcut (which is included in
the <ulink URL="http://demospecs.half-empty.de/lmpc-stable">LMPC</ulink> package) and 
its <literal REMAP="tt">m</literal> command.

</para>
</listitem>
<listitem>
<para>Convert it to text with 
<ulink URL="http://demospecs.half-empty.de/lmpc-stable">LMPC</ulink>.

</para>
</listitem>
<listitem>
<para>Insert a 

<screen>stufftext "screenshot&bsol;n";</screen>

command in every frame of interest.

</para>
</listitem>
<listitem>
<para>Convert it back to binary with 
<ulink URL="http://demospecs.half-empty.de/lmpc-stable">LMPC</ulink>.

</para>
</listitem>
<listitem>
<para>Use Quake to perform a playback of one DEM file after another.

</para>
</listitem>
<listitem>
<para>Use any picture manipulation program like 

<itemizedlist>
<listitem>
<para><literal REMAP="tt">convert</literal> from the ImageMagick package (<ulink URL="http://www.imagemagick.org"></ulink>)</para>
</listitem>
</itemizedlist>

to improve the quality (gamma correction,
aspect ratio, format conversion etc.).

</para>
</listitem>
<listitem>
<para>Use any MPEG encoder like

<itemizedlist>
<listitem>
<para><ulink URL="ftp://mm-ftp.cs.berkeley.edu/pub/mpeg2/software/old/mpeg2codec_v1.1a.tar.gz"></ulink></para>
</listitem>
</itemizedlist>

to encode the MPEG file and remove the encoded screen-shot files. Take 
care to have 
at least as much pictures as the GOP length in the MPEG file available. 
The MPEG encoder reads the files in a different order than usual.
It reads first the picture what will become an I frame, than the P frame and
the B frames inbetween are the final ones.

</para>
</listitem>
<listitem>
<para>Note: the PCX file name algorithm is very simple: Quake tries the first 
name (<literal REMAP="tt">quake00.pcx</literal>, 
than the second (<literal REMAP="tt">quake01.pcx</literal>) and so on. The first unused PCX name 
will be used.
So it is better to move the PCX files out of the way after the playback
of the first chunk.

</para>
</listitem>
<listitem>
<para>A really good variant would first find the split points in the
file, and then delegate specific tasks to many (over the network)
connected computers. Even the MPEG encoding can be parallelised.

</para>
</listitem>
</itemizedlist>

</para>
<para>The just presented solution should be regarded as way to write a script 
to do the different tasks. Don't even try to do all these things ``by
hand''.</para>
</sect3>
<sect3>
<title>How can I convert a Quake II DM2 file to a MPEG file?</title>
<para>This is a bit more difficult, because Quake II uses a fix time gap of 100ms
(10Hz) between the frames in the DM2 file. So you end up (if you adopt the
Quake method) with a totally unacceptable 10Hz movie. Quake II uses a
sophisticated prediction scheme to interpolate between these 10 frames per
second but you won't get (with <emphasis REMAP="bf">stufftext "screenshot\n";</emphasis>) any of
these interpolated frames.</para>
<para>So the only good method is to grab the actual picture from the screen. This 
has to be done much faster than these mentioned 10Hz to get real movie speed
(25 or 30 frames per second).</para>
<para>The rest can to be done as usual (picture manipulating, MPEG encoding etc.).</para>
<para>As far as I know there is no continual working screen grabber but since all 
modern operating systems use some kind of run-time-linking it should be
very easy to overload the actual drawing routine (in X11:
<literal REMAP="tt">XShmPutImage</literal>) with a different one, which stores the data in a file.
Since the file writing goes much slower than a screen update, something
has to be done with the speed of the game. To do this, you have to find 
the time synchronisation routine (<literal REMAP="tt">gettimeofday</literal> or <literal REMAP="tt">select</literal>)
and overload this too.</para>
<para>The really stupid (but often found) method is to use a graphics card card
with a video-out feature and feed the video signal back into a grabber card.</para>
</sect3>
</sect2>
</sect1>
<sect1>
<title>Tools</title>
<sect2>
<title>LMPC</title>
<sect3>
<title>What stands LMPC for?</title>
<para>It used to stand for ``LMP Control Centre'' and I inserted later the
DMO, DEM and QWD format but the final ``LMP/DMO/DEM/QWD Control Centre'' was 
such a stupid name and I decided to rename it to
``Little Movie Processing Centre''.</para>
</sect3>
<sect3>
<title>Does LMPC accepts long filenames ?</title>
<para>Yes of course. I didn't include any file name restriction but the
underlying OS may have problems with it. To prevent file name
problems the MS-DOS binary (lmpc.exe) even changes all file names to 
lower case.</para>
</sect3>
<sect3>
<title>What are the different versions of LMPC ?</title>
<para>There are 6 versions of the current LMPC 3.4.4 available:</para>
<para><variablelist>

<varlistentry>
<term><literal REMAP="tt">lmpc-3.4.4.tar.gz</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc-3.4.4.tar.gz">SourceForge</ulink>)
is ``the Source Package''.
It comes with no binaries but contains the full source code with 
an Autoconf/Automake configure file for easy compilation on any (Unix) system.
The documentation <ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.sgml">source</ulink>
written in <ulink URL="http://www.docbook.org/">DocBook SGML</ulink> is
included as well.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal REMAP="tt">lmpc-3.4.4-f.tar.gz</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc-3.4.4-f.tar.gz">SourceForge</ulink>)
is ``the Full Package''.
Everything from all other packages and a 
<ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.pdf">PDF</ulink> 
documentation is included.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal REMAP="tt">lmpc344d.zip</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc344d.zip">SourceForge</ulink>)
is ``the MS-DOS Binary Package''.
It comes with <literal REMAP="tt">lmpc.exe</literal>, <literal REMAP="tt">demcut.exe</literal>, <literal REMAP="tt">dema</literal> and a 
<ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.html">HTML</ulink> documentation.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal REMAP="tt">lmpc-3.4.4-l.tar.gz</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc-3.4.4-l.tar.gz">SourceForge</ulink>)
is ``the Linux Binary Package''.
It comes with <literal REMAP="tt">lmpc</literal>, <literal REMAP="tt">demcut</literal>, <literal REMAP="tt">dbs</literal>, <literal REMAP="tt">dema</literal>
and a <ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.html">HTML</ulink>
documentation. The Linux binaries are compiled for Intel PCs.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal REMAP="tt">lmpc344w.zip</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc344w.zip">SourceForge</ulink>)
is the ``Win32 (Cygwin) Binary Package''.
It comes with <literal REMAP="tt">lmpc32.exe</literal>,
<literal REMAP="tt">demcut32.exe</literal>,
<literal REMAP="tt">dbs32.exe</literal>,
<literal REMAP="tt">dema</literal> and a 
<ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.html">HTML</ulink> documentation.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal REMAP="tt">lmpc344m.zip</literal></term>
<listitem>
<para>(download from 
<ulink URL="http://prdownloads.sourceforge.net/lmpc/lmpc344m.zip">SourceForge</ulink>)
is the ``Win32 (MinGW) Binary Package''.
It comes with <literal REMAP="tt">lmpcm.exe</literal>, <literal REMAP="tt">demcutm.exe</literal>, <literal REMAP="tt">dema</literal> and a 
<ulink URL="http://demospecs.half-empty.de/lmpc-alpha/lmpc.html">HTML</ulink> documentation.</para>
</listitem>
</varlistentry>

</variablelist></para>
</sect3>

<sect3>
<title>Will (insert your favorite OS here) ever be supported?</title>
<para>I wrote LMPC in simple ANSI C with some parts in Lex and Yacc, so you
should be able to port it to any decent OS. I have access to some UNIX
(not Linux) machines. If you need a binary for such systems please
ask. I create some source code files during the compilation process with
Perl scripts, so you definitely need Perl on your computer.</para>
<para>The main distribution packages were build at home with cross-compilers and I
think that I wasted yet enough hard-disk space with three of them.</para>
</sect3>

<sect3>
<title>How do the both Win32 versions differ?</title>
<para>The <ulink URL="http://www.cygwin.com/">Cygwin</ulink>
version needs the special run-time DLL. Get it from
<ulink URL="http://demospecs.half-empty.de/misc/win32.html"></ulink>.</para>
<para>The <ulink URL="http://www.mingw.org/">MinGW</ulink>
version needs nothing else but is reported to perform a bit slower.</para>
</sect3>
<sect3>
<title>Are there GUI versions of your command line tools?</title>
<para>GUI rules the world but it is very difficult to
maintain a GUI program for different OS's. I think about wxPerl or Qt
<ulink URL="http://www.troll.no"></ulink> for such
a task. You are welcome to write such a GUI program.</para>
</sect3>
<sect3>
<title>What about the QWD support in LMPC?</title>
<para>QuakeWorld QWD files are fully supported from version 3.1.9 on.</para>
</sect3>
<sect3>
<title>What about the Hexen II support in LMPC?</title>
<para>I abandoned the Hexen II support in LMPC and the DEM specs. It's time
to move on. Actually nobody ever aked for a full working Hexen II LMPC.</para>
</sect3>
<sect3>
<title>What about the Quake II support in LMPC?</title>
<para>Quake II DM2 files are fully supported from version 3.1.7 on.</para>
</sect3>
<sect3>
<title>What about Quake III Arena support in LMPC?</title>
<para>Quake III Arena DM3 (dm_68) files are fully supported from version 3.4.1
on.</para>
<para>Due to legal problems I could not add this earlier but after the
<ulink
URL="ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip">source
code of Quake III Arena</ulink> was published under the
<ulink URL="http://www.gnu.org/licenses/licenses.html#GPL">GPL</ulink>, I added
support for it in LMPC.</para>
</sect3>
<sect3>
<title>What about the (insert your favorite game here) support in LMPC?</title>
<para>I may support any Quake 1 and Quake 2 derived programs like Hexen 2, Sin,
Heretic II, Half-Life, Kingpin but all this takes time, really much time.</para>
<para>I think I'll
concentrate on the original id games. I'm currently in a total rewrite of
LMPC, which makes it much more modular, so maybe someone other is able to
provide "plug-in" modules for some games.</para>
<para>The idea is to write all the knowledge to parse a particular demo format in
a single XML file. I hope to create the documentation and the source code
out of the same XML file.</para>
<para>If your favorite game does not exist in a Linux version LMPC won't support
it.</para>
</sect3>
<sect3>
<title>I found an error in LMPC, what shall I do?</title>
<para>The best way is to get the source code, fix the problem and mail me the patch
file.</para>
<para>If you are not able to do this (for whatever reason), please send a full bug
report with <emphasis>all</emphasis> of the following points:

<itemizedlist>
<listitem>
<para>Exact version of LMPC are you using (output of <literal REMAP="tt">lmpc -v</literal>).</para>
</listitem>
<listitem>
<para>Name and version of the OS you are using.</para>
</listitem>
<listitem>
<para>Information how you compiled LMPC or which precompiled binary you are
using.</para>
</listitem>
<listitem>
<para>Recording type (LMP,DMO,DEM,QWD,DM2,DM3)! This is very important!</para>
</listitem>
<listitem>
<para>Full error message of LMPC.</para>
</listitem>
<listitem>
<para>Return code of LMPC.</para>
</listitem>
<listitem>
<para>If you can, please run it again under a debugger and get the stack
trace at the crash point.</para>
</listitem>
<listitem>
<para>Exact description of what happended and what you expected to happen.</para>
</listitem>
<listitem>
<para>If possible, send the shortest recording which can cause the error
by mail or place it on a FTP or HTTP server.</para>
</listitem>
</itemizedlist>

If you do it this way, you can expect a very fast response with the error
fixed. If you send only some senseless things like ``I couldn't recompile my
demo after decompiling it'' I won't pay much attention to you at all.</para>
</sect3>
</sect2>
</sect1>
<sect1>
<title>Additional help sources</title>
<sect2>
<title>Network protocols</title>
<sect3>
<title>What is the difference between the QWD file format and the QuakeWorld network protocol?</title>
<para>Read the
<ulink URL="ftp://ftp.idsoftware.com/idstuff/source/q1source.zip">source code
of QuakeWorld</ulink>.</para>
<para>There are many differences.
Read the QuakeWorld Network Protocol Specs at 
<ulink URL="http://www.ens.fr/~cridlig/bot/qwspec21.html"></ulink> for the
network part and my Unofficial QWD format description at
<ulink URL="http://demospecs.half-empty.de/qwd"></ulink> for the file format part.
It seems that the QuakeWorld Network Protocol Specs are unavailable at the
moment (january 1999) but I hope to include them in my own QWD specs soon.</para>
</sect3>
<sect3>
<title>What is the difference between the DM2 file format and the Quake II network protocol?</title>
<para>Read the source code of
<ulink
URL="ftp://ftp.idsoftware.com/idstuff/source/q2source-3.21.zip">Quake
II</ulink>.</para>
<para>There are many differences. Read the Quake II network specs area at the
Pandora bot site <ulink URL="www.opt-sci.Arizona.EDU/Pandora/q2"></ulink>
for the network part and my Unofficial DM2 description at
<ulink URL="http://demospecs.half-empty.de/dm2"></ulink> for the file format part.</para>
</sect3>
<sect3>
<title>What is the difference between the DM3 file format and the
Quake III Arena network protocol?</title>
<para>Read the
<ulink
URL="ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip">source
code of Quake III Arena.</ulink></para>
<para>Quake III Arena uses a (simple) encryption scheme to secure the network
protocol. This encryption is not included in DM3 files.</para>
</sect3>
</sect2>
</sect1>
<sect1>
<title>Version History</title>
<para><variablelist>
<varlistentry>
<term>0.0.1, 1st September, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>First version completed.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.2, 2nd September, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>Hints on QWD, Hexen II.</para>
</listitem>
<listitem>
<para>More links for LMPC.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.3, 17 September, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>Multi-level playback problem.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.4, 11 October, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>QuakeWorld network specs mentioned.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.5, 23 October, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>Quake II DM2 files mentioned.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.6, 29 December, 1997</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>Quake II DM2 support in LMPC mentioned.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.7, 2nd January, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New versions for DM2 specs and LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.8, 15 March, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New versions for LMPC included.</para>
</listitem>
<listitem>
<para>PlanetQuake is the new home.</para>
</listitem>
<listitem>
<para>SGML-Tools 1.0.5 used.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>0.0.9, 17 June, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New versions for LMPC included.</para>
</listitem>
<listitem>
<para>Some more Quake II and HexenWorld hints.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.0, 15 July, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>SGML-Tools 1.0.7 used.</para>
</listitem>
<listitem>
<para>New versions for LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.1, 16 August, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New versions for LMPC included.</para>
</listitem>
<listitem>
<para>QuakeWorld support in LMPC mentioned.</para>
</listitem>
<listitem>
<para>Dead links to FTP mirrors corrected.</para>
</listitem>
<listitem>
<para>New bug report section.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.2, 20 August, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>MUlti-Level DEmo Repair kit mentioned.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.3, 25 August, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>Multi-level problem corrected.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.4, 6 September, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>Multi-level section restructured.</para>
</listitem>
<listitem>
<para>DM2 network protocol mentioned.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.5, 8 September, 1998</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.6, 8 January, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.7, 12 January, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>Hint on the vanishing QuakeWorld network protocol specs.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.8, 7 April, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>More hints on movie creating.</para>
</listitem>
<listitem>
<para>Some hints on file formats for the distribution packages.</para>
</listitem>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>Section on multi-level DM2 files corrected.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.0.9, 29 April, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>Some hints on the DM3 problems.</para>
</listitem>
<listitem>
<para>SGML-Tools 1.0.9 used.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.1.0, 9 May, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.1.1, 3 June, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>
<varlistentry>
<term>1.1.2, 18 August, 1999</term>
<listitem>
<para>

<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>Multi-level repair section enlarged.</para>
</listitem>
</itemizedlist>

</para>
</listitem>
</varlistentry>

<varlistentry>
<term>1.1.3, 23 January, 2000</term>
<listitem>
<para>
<itemizedlist>
<listitem>
<para>New stable release for LMPC included.</para>
</listitem>
<listitem>
<para>More hints on future game support.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>1.1.4, 4 March, 2006</term>
<listitem>
<para>
<itemizedlist>
<listitem>
<para>Hints on Quake III Arena completely changed.</para>
</listitem>
<listitem>
<para>Too simple and too old questions removed.</para>
</listitem>
<listitem>
<para>Links updated.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>1.1.5, 26 August, 2006</term>
<listitem>
<para>
<itemizedlist>
<listitem>
<para>Typos corrected.</para>
</listitem>
<listitem>
<para>Permanent link to dm2 repair created.</para>
</listitem>
<listitem>
<para>Download links updated.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>1.1.6, 18 February, 2009</term>
<listitem>
<para>
<itemizedlist>
<listitem>
<para>Link to ImageMagick corrected. Thanks to Amy Hazelton.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>1.1.7, 23 October, 2009</term>
<listitem>
<para>
<itemizedlist>
<listitem>
<para>Half-Empty is the new home. PlanetQuake will be removed soon or
is already when you read this.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>

</variablelist></para>
</sect1>
</article>

