Demo

A demo is any recording of a game session that can be played back using the game engine. Internally, it is a sequence of tic commands, keeping track of just the input control states during each frame. Thus, a demo is much more compact than a video capture, or even than a recording of the states of all objects in the level. See LMP for additional format details.

Built-in demos
If no game or demo is begun immediately when launching vanilla Doom (either from the in-game menus or by using command line arguments), three built-in demos soon begin to play repeatedly, evoking an arcade game. The demo levels in Doom are:

Ultimate Doom plays the same three built-in demos as Doom, along with a fourth one called DEMO4 which takes place in E4M2: Perfect Hatred.

Final Doom contains the following built-in demos:

Demo levels in Heretic Demo levels in Hexen Demo levels in Strife

When a GUI launcher, such as the Doom95 front end, is used to start the game, the launcher usually warps to a selected level and the built-in demos are bypassed. They can still be viewed, however, by choosing END GAME from the appropriate menu.

The built-in demos are stored in lumps in the IWAD file named DEMO1, DEMO2, and DEMO3. A PWAD can replace a built-in demo by including a lump with the same name, although an engine crash often results if the new demo is incompatible (see below).

Automap mode cannot be used while a built-in demo is playing.

Player demos
Players can record demos of their own game sessions. This is done using the -record  command line argument, which places the recording in a file named  .lmp in the Doom program directory. A recording can subsequently be played back using the -playdemo  command line argument, where  .lmp is the name of the recorded demo.

These demo files can then be uploaded to BBSes and FTP servers to aid other players in the completion of the game, or to show off tricks or reveal secrets. Players are thus able to compare their skills in single-player mode (see Speedrun). It is also possible to record multiplayer games.

The -timedemo  parameter can be used as an alternative to -playdemo. This will render every frame in a demo as quickly as possible for benchmarking purposes. Automap mode cannot be used in this case either.

Demo issues
With few exceptions, LMP files can only be played back with the same versions of the Doom IWAD and executable or source port as those used during recording. If a demo is played on a different source port, using a different WAD(s), or even with a different version of the same source port or IWAD, it may refuse to run, or the actions of the player in the demo may become nonsensical, with the Doomguy crashing into walls and shooting apparently at random. This is known as "desynch", and indicates that the demo is not compatible with the playback method being used.

Display commands not affecting gameplay, such as chat text and the IDDT cheat code, are not recorded in a LMP file and may be used freely during playback. However, other cheat codes are not recorded either, and will almost certainly corrupt the demo if used during recording, or cause desynch if entered during playback.

A demo can desynchronize if it is recorded with an IWAD and then played back with that IWAD loaded as a PWAD. For instance, starting a demo from TNT: Evilution with TNT.WAD loaded as a PWAD at the command line may disrupt playback.

A demo downloaded from the internet at random will usually be vanilla v1.9 or v1.666 format, simply because the height of Doom's popularity occurred at that time, before source ports existed.

For many Doomers, it is not practical or even possible to use the original Doom executables to play demos. The original executables were written for DOS, and require DOS or a DOS-like OS environment to function properly. Most, though not all, demos recorded with the vanilla executables will play properly in PrBoom, the Eternity Engine, or Chocolate Doom since these ports are specifically designed to emulate vanilla Doom as closely as possible.

Other issues that can affect recording or playback:
 * Demo desyncing caused by bouncing Lost Souls
 * Demo desyncing caused by menu access
 * Turning resolution is lowered when recording demos