This is the change log for "the Rabbit Run" machinima engine.

It should be updated every time you commit changes to the project,
so that everybody else knows what you've been up to. Updates are made
at the top of the file; see the existing entries to get an idea of the
sort of information that seems useful.

You should also send the change log update to the relevant mailing list
so that we all know a new commit has been made.

Please also increment the TRR_ENGINE_VERSION version number in quakedef.h.
That way we'll always know what version of the source any executable
was built from.


--2001.07.29--Anthony------------------------

 1.09-tRR16

Implemented animation lerping based on keyframed data inserted into
the demo in advance by a processing tool. ("Live" interpolation seems
unsatisfactory. Doing the preprocessing work in the engine seems trickier
and would also mean we couldn't specify keyframes by scripting.)

Implementation of actual frame lerping is refactored from the fenix
code, using WK's idea of allocating an extra frame at the end of each
model and using it to hold an interpolated frame generated on-the-fly.

New console flag "r_interpolate_model_animation" controls whether or
not the lerping is performed. Defaults to off.

Keyframed information is a "next frame" byte index and a second byte
giving the number of hundredths of a second from the current time of
the time when this next keyframe should be reached.

The information is given in a separate svc_updateentity message for an
entity. If two consecutive svc_updateentity messages are for the same
entity, then the first message is reinterpreted as giving keyframing
information. Note that the original engine will effectively ignore this
message since the second one overwrites its effects. The U_FRAME field
holds the keyframe and U_EFFECTS the time offset.

A new C++ utility smoother.exe inserts this keyframe information when run as
smoother -frames -o output.dem input.dem. The sourcecode for smoother is a
project in this workspace.

Smoother also lerps origins and angles of moving entities, because many are
subsampled at 10Hz, and so demo playback lerps judderingly. Run it with
smoother -geometry -o output.dem input.dem. (-geometry and -frames switches
can be combined.)

Note: geometry-lerped demos contain more information, so they compress a bit less,
but not much less. However, DZip's special compression is thrown off by the
doubled svc_updateentity messages used for animation keyframes; it seems to fall
back to zip-quality compression. This should be fixed.


--2001.07.29--Anthony------------------------

 1.09-tRR15

 Implemented cartoon-look for map BSPs (worldmodels) and their textures.

 New console variable "sv_load_cartoon_textures".
 If non-zero, this specifies a wad of textures to load ahead of (i.e.
 at start-up and following flush) and instead of those in the world.
 This also involved a fix to broken texture-cacheing in GL_LoadTextures.
 
 New console flag "gl_cartoon_mapbsps".
 If non-zero, all map BSPs with textures (other than the already
 overridden ones above) are sampled at a constant coordinate, making
 them a single color.

 Implementation is a bit messy but a lot nicer than it was in
 previous prototypes (e.g. cartoon SdS.) Removed some dead id code
 from gl_rsurf.c etc in passing.

 Keeps track of the index of the last "*nnn" model loaded, adds
 a field to texture_t to store whether a texture has been overridden,
 and makes many calls to new method GL_MapBsp_Sample[XY]().

 The sampling coordinates are stored in new console variables
 "gl_cartoon_mapbsps_sample_x" and "gl_cartoon_mapbsps_sample_y".

 Implemented an association between particular worldmodel BSPs and
 pairs of coordinates to use; which values work best depends on the
 map. Implementation extends the existing qdq_trr_cartoondir files. 

 New console command "qdqtrr_samplemapbsps_entry map_path x y"
 associates a pair of values for gl_cartoon_mapbsps_sample_[xy]
 with the worldmodel map_path and sets them when it is loaded.
 These entries are intended to be stored in existing maps/dir.cfg.

 Fixed compiler warning in snd_dma.c by forward declaring CL_EntityNum().

 Increased SZ_Alloc console buffer limit from 8KB to 16KB.

 Finally, note that the trr files contain a couple of config files to
 quickly toggle cartoons off and on; exec cartoon0.cfg and  cartoon1.cfg.
 Cartooning is now off by default.


--2001.07.17--Anthony------------------------

 1.09-tRR14

 Implemented a directory of alternative model filename sources
 to use when new "sv_load_cartoon_models" console flag is true.
 Implementation mostly in new qdq_trr_cartoondir.* files.

 New console command "qdqtrr_cartoondir_entry normal_path cartoon_path"
 places a redirection into the directory. The file "maps/dir.cfg" is
 execed to build the directory.

 (The purpose is to replace the item b_*.bsps with ones that look more
  cartoonish.)

 This new filename mangling and the old skindir manglings are now both
 carried out in Mod_FindName;  previously they were left until later and
 this caused cache misses that meant engine would run out of slots for
 models and crash after loading a few maps.
 

--2001.07.14--Anthony------------------------

 1.09-tRR13

 The first snd_mp3trimfront (default 1105) samples are ignored in
 converted mp3s, as requested by Tony.

 Misc minor fixes made to mp3 conversion error reporting.

 The game directory trr is automatically searched (just as id1 is.)

 The "trr" directory is now removed from this CVS module.
 We will start an individual module for this data at SourceForge.

 Also changed project settings to build appropriately when
 trr_engine is a subdirectory directly underneath Quake/.


--2000.09.19--Anthony------------------------

 1.09-tRR12

 (Replaced placeholders in gfx.wad with real faces.)

 Implemented a shortcut for extra skins of a single color. The
 'filename' "colorNNN" produces a skin filled with that palette
 color for NNN from 0 to 255.


--2000.09.14--Anthony------------------------

 1.09-tRR11

 Refactor of GL_DrawAliasFrame(); adding new render passes should be
 simpler now.

 Implemented a directory of extra skins to automatically load into
 each specified model. Most code is in new qdqtrr_skindir.* files.

 New console command "qdqtrr_skindir_entry model_path skin_path"
 places a skin into the directory. The file "skindir.cfg" contains
 two starting entries, optional cartoon skins for soldier and ogre;
 the file is loaded on starting the app.


--2000.08.23--Anthony------------------------

 1.09-tRR10

 Annotated // QdQ comments with name of relevant programmer (Ant or Ajare.)

 Merge and refactor of Will's matrix code.
 Done by hand so some problems may have resulted.

 r_qdq_trr_matrix_walls: flag to control Matrix texture effect.
 If non-zero, the value is related to time between texture scroll kicks.
 !Gets corrupted if we e.g. display menu lmps whilst active.

 r_qdq_trr_matrix_frag: flag to control Matrix frag special lighting effects

 Currently the above are GL only.

 r_qdq_trr_matrix_ringalpha: transparency value for Matrix ring effects.
 Type 7 rocket trails should exhibit the ring effect.
 !Only works with particular entities in the particular e3m3 run demo.

 Created and used better LCD digits in gfx.wad for George's stopwatch.

 cl_qdq_trr_facetype cvar allows switching between different types of
 face in the status bar. Default 1 is player. 2 uses new Harry entries.
 3 uses single Bert entry, 4 single Albert entry, 0 is "no face".
 Looks for new entries in gfx.wad but most are currently placeholders.

 Added directory of game data to project since some non-id date is now
 required to run the engine. Copy the game subdirectory trr/* and use it.

 Implemented cartoon outling as per prototype.

 gl_cartoon_aliasmodels_outline is a flag for outlining. If nonzero, value
 is basic thickness of outline as a percentage of screen width.

 gl_cartoon_outline_distance is a flag for attenuation of outline width
 with distance. If nonzero, value is world distance at which outlines have
 the default thickness.


--2000.08.02--Anthony------------------------

 1.09-tRR9 (forgot to tag last night, sneaked in a bug fix)

 Fixed viewsize 120 non-full screen size bug following advice
 from Nolan.


--2000.08.01--Anthony------------------------

 Implemented George's stopwatch infrastructure and simple display.
 Most new code in separate qdq_trr_stopwatch.* file.

 "cl_qdq_trr_stopwatch" cvar is the current time in seconds; it can
 be set to a particular value just like any other cvar.
 It is displayed as xx:xx in the +showscores status bar and,
 optionally, as an overlay on the screen.

 "cl_qdq_trr_stopwatch_state" cvar determines state of stopwatch;
 0 = time is invalid and should be ignored, not displayed.
 1 = stopwatch is stopped at the current time
 2 = stopwatch is running; progression of non-intermission client
     game time is reflected by an increase in the stopwatch time

 "cl_qdq_trr_stopwatch_show" cvar flag determines whether or
 not a stopwatch overlay should be displayed.

 Currently overlay uses default transparent numbers; we may wish to
 create and use some alternative LCD digits instead.

 Intended use is something like:
  alias trr_start_stopwatch "cl_qdq_trr_stopwatch_state 2"
  alias trr_stop_stopwatch "cl_qdq_trr_stopwatch_state 1"
  alias trr_hide_stopwatch "cl_qdq_trr_stopwatch_state 0"
  and stuff "cl_qdq_trr_stopwatch x" to set a particular time


--2000.07.27--Anthony------------------------

 1.09-tRR8

 Implemented loading of models plus extra separate PCX file skins.
 If you load the model "path1/model.mdl+2:path2/skin1.pcx+c0:path3/skin2.pcx"
 then you will end up with the normal model with skin1.pcx as a replacement
 for its previous skin 2 (or as a new skin if it wasn't already there.)
 If you have chosen to load cartoon skins, then skin2.pcx will also be
 loaded as a replacement for skin 0 - if you haven't, then it won't. The
 maximum number of extra skins currently allowed is 16.

 The new model+skin combination is cached as a stand-alone model under
 its special model+skin combination name. There is no sharing of model
 or skin files between combinations with components in common.

 Added "sv_load_cartoon_skins" console flag to determine whether or not
 extra skins whose number is prefixed with 'c' are loaded.

 Extended MAX_QPATH and MAX_OSPATH to 256 characters in order to cope
 with the longer names that model+skin combinations entail.


--2000.07.06--Anthony------------------------

 1.09-tRR7

 Trivial change - the name of sv_timescale in the console has been
 switched back to "qdq_timescale" since Tony's screenplays currently
 use this syntax and I didn't want to break them.


--2000.07.05--Anthony------------------------

 1.09-tRR6

 Added "cacheprint" console command

 Added "snd_mp3wavbuffersize" console variable; used to determine
 maximum size in MB for a buffer needed for mp3 decoding, default 4MB.

 Implemented loading of mp3s and decoding them to equivalent WAVs
 before cacheing. Now you can playback mp3 sounds directly in the
 engine. In fact the engine will look for a corresponding mp3 if it
 can't find the WAV you request too, so whether the sound is present
 as x.wav or x.mp3 can be transparent, allowing the user to choose
 whether or not to run StrangeUtil.


--2000.06.06--Anthony------------------------

 1.09-tRR5
 
 Renamed qdq_force_time_sync to sv_force_time_sync.
 Renamed qdq_timescale to sv_timescale.

 Added cl_timescale; this acts just as sv_timescale does. The intent
 is that the two playback speed effects (slow-motion in the recording
 and viewer control) can hence be combined.

 sv_force_time_sync now also disables the "drop frames when fps > 72Hz"
 conditional.

 Changed default sound output sampling rate from 11KHz to 22KHz.

 Altered start-up splash dialog to mention Quake-tRR.


--2000.06.01--Anthony------------------------

 1.09-tRR4 (not checked-in, but version increased since I sent a binary to Tony)

 Made Win/GLQuake respect the -sspeed sound output sampling rate
 just as DOSQuake does. 22050Hz sound now works OK. I had to double
 the WAV_BUFFER_SIZE in snd_win.c to make this work, but otherwise
 the changes were fairly obvious. 


--2000.04.18--Anthony------------------------

 1.09-tRR3 (not checked-in, but version increased since I sent a binary to Tony)

 Force '-no8bit' since the new 8 bit texture GL extension use implemented
 between GLQuake v0.98 and v1.00 seems to crash many GL cards.

 Added "qdq_timescale" console variable. Defines the rate at
 which game time progresses relative to real time. Default is 1.
 
 Added "qdq_force_time_sync" console flag. This overrides a
 few places where Quake would let game time slip from real time
 in order to fake smoother performance. For a machinima we don't
 want this slip since it means audio and video would get out of
 sync; set this flag to enforce this. Default is 1.
 Note that frames of more than 0.25 seconds length are not forced.
 This is a workaround for a problem that otherwise occurs when
 GLQuake loads a new map; the clock seems to get advanced too much
 and doesn't start at 1.4 seconds.


--2000.02.07--Anthony------------------------

 1.09-tRR2

 NB: I changed asm_i386.h - I recommend you Rebuild All!
 
 Extended the sound engine as in the previous prototype.

 Sounds with attenuations of 0.25 and 0.75 play like zero
 attenuation sounds but only from the left and right speakers,
 respectively. Sounds with an attenuation 0.5 are dynamically
 sourced; they follow the entity that produced them.

 Added -startwindowed to the default WinQuake testing settings

 
--2000.02.02--Anthony------------------------

 1.09-tRR1

 Added this change log

 Added my Anthonys_diary.txt - this is where I'll add
  more chat, notes and detail than is suitable for this change log.
  (I encourage other developers to add similar files for themselves.)

 Updated the readme.txt with basic project information

 Removed the irrelevant QuakeWorld source files

 Added TRR_ENGINE_VERSION definition in quakedef.h and to
  the various places where the version is printed

 Changed MSVC project settings to build appropriately named executables
 in /quake, and to run with "-game trr" command-line option.


--2000.02.02--Anthony------------------------

 1.09 (No tRR version number)

 Formal start of the project
  
 Imported original id source to SourceForge


---------------------------------------------

