As the clever reader may know I'm the author of LMPC, the LMP/DMO/DEM Control Center. I recently included a DEM format support in it. This means:
flex
and bison
do work).The recording of a DOOM game consists only of the player input. All the rest is random-number dependent but totally deterministic and will be recalculated during the playback.
If you change a single action in a LMP file all the rest is garbage because all monsters now behave totally different and sooner or later (sooner) you run into a wall. This can't happen in a DEM file. The full movement (of all objects) is stored in it.
This confronts us with new opportunities but also new problems.
With the centerprint
message it is possible to include some
sub-titles in a recording file to inform the watchers what will
happen next.
The player coordinates and the camera positions may be different. This makes it possible to simulate the DUKE NUKEM 3D feature of stationary cameras. The client doesn't draw the entity with the ``viewpoint''. This is in general the player entity itself but this entity can be changed to anything else with the setview message. Another problem is the entity selection of the server, which sends to the client only the entities in sight (of the client). Therefore it is impossible to enlarge the distance between the camera and the recording player too much. They both have to be on the same side of a wall.
For people with too much spare-time Quake can replace a full 3D modelling system for cartoons or the like.
The demo file can contain console commands, which the client runs during replay. With this feature it should be possible to write a screenshot after every time stamp in the demo file. This makes it very easy to create a MPEG movie out of a DEM file.
It is trivial to remove the ``godmode ON'' and other cheat messages from a recording. All the action doesn't change at all. These messages are only text print commands and the client behaviour doesn't depend on them.
Fortunately I found a redundancy in the DEM format, which allows to detect a ``godmode'' cheater: Every damage message contains the health and armor decrease value. The next status line description (it contains the health and armor values to be displayed) can so be checked.