============================================================
DemoDLL v1.01 beta
by Conor Davis
============================================================

Title:                  DemoDLL
Author:                 Conor Davis
                        cedavis@epid.org
Homepage:               http://www.onr.com/user/cedavis/demodll/
Description:            In-game viewing of Quake2 demos
Additional Credits to:  Uwe Girlich for lmpc and the
                         dm2 specs:
                         http://www.planetquake.com/demospecs/
                        David 'crt' Wright for Keygrip2
                         http://www.planetquake.com/keygrip/
                        The PlanetQuake q2demos mailing list
                         for answering questions
                        Kyle 'BlackPlague' Mallory for
                         ideas, testing, and server time.
                        id Software for Quake2
Build Time:             ~50 hours

============================================================

DISCLAIMER

   While I did not intentionally code anything maliciously
   into DemoDLL, I cannot guarantee that it will run perfectly
   on your computer or even harm it, so use it at your own risk.
   
   DemoDLL is freeware and may be distributed freely, as long as
   all files in the zip archive are included intact and unmodified.

DESCRIPTION

   DemoDLL allows viewing of Quake2 demos in-game, as well as
   multiplayer viewing, unrestricted camera movement, and
   chase-cam support.
   
INSTALLATION

   Unzip the archive into a directory under your Quake2
   directory.
      e.g.  Quake2 dir: c:\quake2
           DemoDLL dir: c:\quake2\demodll

RUNNING QUAKE2

   To use DemoDLL, start Quake2 from the command-line:
   quake2 +set game eraser
   
   To immediately view a Quake2 demo:
   quake2 +set game demo +set demo <demoname> +map <mapname>
   
   From the console, issue these commands to view a demo:
   set demo <demoname>
     e.g. "set demo demo1.dm2"
   map <mapname>, where mapname is the map that the demo was
    recorded on.
	 e.g. "map base2"
	 
CLIENT COMMANDS

   By default, the demo plays just as if the demomap command
   had been issued from the console. But that's boring, so
   DemoDLL has options for viewing demos. These commands must
   be issued after the demo has started playing to take effect.
   
   "lockpos"    Toggles whether your position is set to that of
                the camera that recorded the demo. Default ON.

   "lockview"   Toggles whether your viewangles are set to that
                of the camera that recorded the demo. When
                lockpos is disabled, you can circle your view
                around the camera while still looking at it.
                Pressing forward moves you closer, back moves you
                farther. Default ON.

   "chaseview"  When lockpos is disabled and lockview is enabled,
                your view changes along with the camera. Default
                OFF.

   "showstatus" Toggles whether to display the hud, gun,
                centerprint, and layout messages. Default ON.

   "notint"     Toggles whether to suppress screen flashes.
                Default OFF.

   "ping"       Displays your ping on the console.

SERVER SETTINGS

   The server can also set console variables to control demo
   playback.

   "demo"       The name (including .dm2 extension) of the demo
                to play. This MUST be unpacked and in the demos
                subdir of your demodll directory.

   "dm2speed"   Sets the speed of demo playback. Higher reads
                faster, lower reads slower. This is akin to
                timescale, but does not affect client movement
                and non-demo effects like item pulsing, temp
                entity speed, water warping, and weapon rotating.
                Default is 1.

   "dm2log"     Records a log file of what the demo reader is
                doing, useful for finding bugs that cause crashes.
                This file will be in the quake2/demodll/ dir.

SPECIAL NOTES

   Playing Movies

      While DemoDLL can play movies, it is not as useful as
      when viewing normal demos. This is because most movies already
      have the camera in the best position possible, so using chase-cam
      or free-fly mode usually doesn't help much.

   Recording demos

      Currently DemoDLL is not very nice for movie-making. Ideally,
      you would want to have all options set beforehand, perhaps in an
      ini file, but DemoDLL is not that sophisticated. In addition, 
      demos recorded with DemoDLL do not have spawnbaseline info in them.
      Delta compression helps negate this problem, but loading the demo
      in Keygrip2 will consume much more memory than usual.

   Stufftext commands

      DemoDLL contains special support for commands to change maps and
      changing the timescale. All other commands will be sent to clients
      to be processed. One note about timescale: the only way I could
      change the timescale cvar in-game was to set it directly, without
      going through Quake2, so the value when you type in in the console
      may be misleading.

   Laggy and optimized demos

      DemoDLL does not keep track of previous frames, so demos that have
      been recorded on laggy connections or optimized with dm2tool may
      not work correctly, since they can use frame references that are
      not the previous frame.

   Client-side demos

      Client-side demos only include information about entities in the
      potential viewable sight of the camera, so if you are free-flying
      and the camera goes out of the room, all the entities in the room
      will disappear.

TROUBLESHOOTING

   "Error during initialization" while loading Quake2.

      This means you have probably started a map with an incorrect demo
      specified or vice-versa. Try loading Quake2 with only the game
      parameter from the command-line and see what errors you get when
      you start a map.

   "Bad inline model number" or "Loaded brush model after world".

      This error occurs when the demo does not match the map it was
      recorded on. Check your demo cvar and map command, and try
      restarting Quake2 if all else fails.

   Layout message is not displayed when showstatus command has just been
   used.

      Showstatus must be enabled before the layout message is sent.

   Some sounds are played the same no matter what position I am.

      The demo file does not have enough information to tell where
      the sound is coming from properly. While this is not a problem
      if lockpos is enabled, if it is disabled and you are within
      hearing distance of the camera, you will hear it as if you are at
      the camera's position.

BUGS

-  "R_CullAlias: lastframe" warnings when playing a demo at a speed
   greater than 1.
 
HISTORY

   1.02 (Sep. 12, 1998)
   -   removed windows-specific debugging code that inhibited protability
       (thanks to Uwe Girlich for catching that)
   -   fixed bug where changing the dm2speed cvar to zero and back skipped
       frames

   1.01 beta (Sep. 8, 1998)
   -   fixed bug where camera would move out of the world when in chase-view
   -   included support for RF_CUSTOMSKIN
   -   proper vweap handling
   -   timescale support
   -   fixed bug with entities that had a baseline of a brush model
       not showing up

   1.00 beta (Sep. 3, 1998)

