Demo

A demo is a 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 recording of the states of all changed Things, Sectors and Flats would be. Many Source ports however, do use the latter technique because it is more powerful and doesn't rely on exact deterministic game events, and as a result, cannot replay LMP files. See LMP for additional details.

Built-in demos
If no game is begun immediately when launching vanilla Doom (either from the in-game menus or by using command line arguments to specify a starting level or external demo), three built-in demos soon begin to play repeatedly, evoking an arcade game. The demo levels in Doom are: 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 LMP).

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:

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.

This recording facility allows players 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 mode.

Demo issues
LMP files can only be played back with exactly the same version of the DOOM engine (or Source port as the demo was recorded with. In most cases, this is Doom 1.9.

Only player movements and actions are recorded in a demo. Some in-game activity such as chat text and cheat codes are not recorded and thus will not be reproduced in demo playback. This includes the use of gameplay-modifying cheat codes such as no clipping mode and God mode, which usually desynchronizes the demo 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, playing a demo from TNT: Evilution with TNT.WAD loaded as a PWAD at the command line may corrupt demo playback.

During demo playback using the -playdemo command line parameter, cheat codes can be typed at the keyboard. This allows a user, for example, to watch automap activity with all linedefs and things displayed, or to display debug information. However, as with recording a demo, activating cheats that modify gameplay will almost immediately desynchronize playback.

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