About

Q3SDC is a special system allowing you to record demos right from server and play them on server, too. The recording process doesn't affect server clients - they won't even be aware of it. Playing demos will be absolutely "unnoticeable" for Quake3 server system and for clients - they won't need to install any additional files to connect to demo playing server.

The demos are recorded in binary files with .sd3 extension, reminding of the usual "dm_48" demos format. Q3SDC writes the complete information about the current level, which allows to reconstruct the positions of all players and objects on server.

To play demos, clients connect to server as spectators and can freely move across the level, watch selected player in viewcam mode (like in OSP) or watch the game from any player's POV. You can also rewind demo in both directions. Q3SDC was tested with vq3, OSP 1.01 and CPMA 1.01

You can play back normal demos on server too, protocols dm_48, dm_66, dm_67 and dm_68 are supported. One interesting feature is that even non-synchronousClients recorded demos are played smoothily.

This program can be used on dedicated/listen Win32 Quake3 1.32 servers as well as local games with bots. Linux version supports only q3ded.

You can download the latest version of Q3SDC at skuller-vidnoe.narod.ru

Win32 Installation

Q3SDC works with all versions of Windows compatible with Quake3, but it is compatible only with Quake3 version 1.32.

  1. Unpack the archive into your Quake3 directory (where "quake3.exe" is located)
  2. Launch "q3sdc.exe" instead of "quake3.exe"

Linux Installation

Q3SDC is compatible only with q3ded version 1.32. Any other versions will crash!

  1. Unpack the archive into your Quake3 directory (where "q3ded" is located)
  2. Modify "q3sdc_loader" script according to comments in it
  3. Launch "q3sdc_loader" instead of "q3ded"

Usage

You can control Q3SDC via usual Quake3 server console. Q3SDC simply adds some new commands and cvars.

Commands available in server console:
sdplay
[demo_name]
Starts server-side demo playback. You can skip file path and ".sd3" extension (file will be opened from "demos" folder in your current game directory). You can also use demo number instead (see the next command).
sddemos
Enumerates all available demos, you can use generated numbers in sdplay command.
sdplaylist
[list_name]
Starts server-side cyclic demo list playing. [list_name] should be the path to the text file containing demo names separated by newlines.
sdrecord
[demo_name]
Starts server-side demo recording. You can skip file path and ".sd3" extension (file will be created in "demos" folder in your current game directory). If [demo_name] is not specified, it will be generated automatically in the following format: "map_name-date-time.sd3"
sdstop
Stops server-side demo recording or playback.
sdpause
Pauses server-side demo playback, but clients can still move like usual. To resume playback, repeat this command.
sdprev
[seconds]
Allows to jump some [seconds] backward during server-side demo playback.
sdnext
[seconds]
Allows to jump some [seconds] forward during server-side demo playback.
sdskip
Works only during demo list playback. Allows to skip the current demo and to start next demo in list.
sdstatus
Dumps information about current Q3SDC system state.

Cvars available in server console:
sdr_fps
Specifies recording framerate, demo size depends on this. Values less than 15 are not recommended (default setting is "20"). If this cvar is set to "0", recording will be synchronised with server (framerate will be sv_fps dependent) - this may fix "missing sounds" problem.
sdr_splitDemos
[-1; 0; 1]
Specifies what action should be performed at map change during record:
"-1" = Stop record.
"0" = Resume record into same file (default).
"1" = Resume record into new file called "new_map_name-date-time.sd3".
sdr_waitForClients
[0; 1]
If this scvar is set to "1", recording will be stopped when all clients disconnect from server and resumed when they connect into the new file with autogenerated name. Note that spectators are not couned as "players".
sdr_nodelta
[0; 1]
Turns off delta compression when recording the demo. This will result in HUGE demo sizes, but if you plan creating the movie and use sdprev/sdnext commands often, this will speedup those operations a lot.
sdp_waitForClients
[0; 1]
If this cvar is set to "1" (default), demo playback will be paused if demo server is empty.

License

You can freely redistribute the archive with this program by any ways on conditions of keeping copyright and not changing all the files containing in original pack.

You can't receive any payment for redistributing this program without permission of the author. You are not allowed to disassemble and/or somehow change program code of all program components and not to change this readme file.

By installing this program on your computer you agree that the developer doesn't take any responsibility for possible damage.

You are using this software at your own risk.

If you don't agree with the above-mentioned conditions you are not allowed to use this program and you must erase it from your computer.


Author

Copyright (c) 2003, Andrey '[SkulleR]' Nazarov
LOCATION: Vidnoe, Russia
Big thanks to Z3 group and especially to akz, bob0 and nem1 for their help with Q3SDC testing, and to all progamer.ru and cyberfight.ru community taking part in program discussion.