Network demos are a recording of the network traffic during a multiplayer game. You can record a network demo on a client connected to a multiplayer server ( which we will refer to as client netdemos ), or you can record them directly on the server ( server netdemos, which were introduced in Quake 4 1.1 ).
When you play back a network demo, Quake 4 will behave just as if it was playing a live game and will reproduce the recorded session. Server netdemos record more information that client netdemos, and will allow you to fly around in the world during the replay, and to cycle between following the various players.
Network demo commands:
recordNetDemo [demoname]: start a recording
playNetDemo demoname: play back a network demo
stopNetDemo: stop current recording or replay
playNetTimeDemo demoname: run a timedemo benchmark on the given network demo
Network demo cvars:
demo_snapshotDelay: How often to record game snapshots to the demo stream ( server netdemo only )
demo_debug: verbose various information about the network demo subsystem when using demo commands
demo_enforceFS: enforce pure filesystem checks when playing back a demo. See below for details
demo_scale: slows or speeds up the replay ( mostly for debugging purposes )
Why you should use network timedemos for benchmarking
Render demos were written as a driver compatibility testing tool, and never intended as a benchmark tool for the game. A render demo stores render commands and feeds them to the graphics drivers. So all you're benchmarking is the performance of your GPU and it's drivers. Network demos however, will run the game code on the CPU, produce render commands and render frames to the GPU, so they are much closer to a real gameplay situation. That's why you should always use playNetTimeDemo for benchmarking rather than render demos.
See Benchmarking for complete information on good benchmarking procedures with Quake 4.
The demo_enforceFS cvar
When playing back a network demo, it is essential that the game code and assets are exactly the same as they were at the time of recording. If you are using a lot of custom pak files, it's very likely the filesystem needs a reconfiguration before it can play a demo under good conditions. Enable demo_enforceFS ( which is off by default ), so the filesystem will restart with the correct pak files whenever it needs to play a network demo. It will abort if that's not possible. Note that this only works for network demos that have been recorded on a pure server.
Feedback
Please send feedback and bug reports about the network demo functionality to ttimo AT idsoftware DOT com