


Tremor
A Quake Engine Project
by Justin Thyme
http://tremor.quakedev.com            
						
based on JoeQuake 			
by Jozsef Szalontai				        
						
							
-----------------------------				
Overview						
-----------------------------				  

This is the third major revision to Tremor.  Each major revision
entailed a move to a new code base.  After a couple of iterations
with DarkPlaces as the base, this one starts with JoeQuake.  For
those that may not know, JoeQuake is a net Quake client which
incorporates much of FuhQuakes eye-candy.  This change in code
base is in large part due to upgrading my PC to something made
in the last decade, and moving to MS Visual C++ 2003.  As always,
Tremor is an OpenGL only engine.

One of the overriding concerns of the Tremor project is to have
good performance on lower end machines.  That was why I used
older DarkPlaces versions for code base.  As it turns out, the
eye-candy of JoeQuake/FuhQuake had decent performance on my old
system, although there was a negative lighting problem with the
ATi card.  Now that this is no longer an issue, I can move up.

My use of Tremor is as a Deathmatch game, mostly using bots.  
The engine is distributed with an updated progs.dat.  The only
changes are general code cleanup, and adding Frikbots, so it is
still functionally the same as the original.

Several of the feature changes in Tremor are designed to make
the engine more modder friendly.  Features such as the m_print
based menu system makes changing menu layouts a breeze, and you
don't need graphics to change the options.  Tremor should be an
ideal platform for those interested in creating a standalone 
game or total conversion.

We have also streamlined the menu system in Tremor.  In Key 
Configuration, for example, only the most common keys are listed.
You can still bind any of the old keys, you'll just do it manually.
This won't affect the majority of users.  In a similar vein, we 
have removed the Help and Demo menu options.  Both are still
available, simply enter "help" or "XXXX" at the console to enter
the appropriate submenu.

For MD3's, make sure you look into the included MD3ammo.pak to
see how the directory structure works for the skins/textures for
MD3 models.  This directory structure is as it was done in the
tutorial I took this from, but will likely change in the future,
as I get to better understand the MD3 code.  For any other MD3
models you download, you will have to change the pak or file
structure to what you see in the MD3ammo.pak, or it won't work
right.

Check the ToDo list and Known Bugs below for a list of planned 
features/changes and known issues.

Check the file Titan_qc.txt for details on the QuakeC 
modifications.

-----------------------------
Contact Info
-----------------------------

Justin Thyme (justinthyme AT quakedev DOT com)
http://tremor.quakedev.com

Development system:
PII450, 384MB RAM, ATi Rage Pro, WinXP, MSVC6.0 (originally)
Athlon 2600+, nVidia FX5700LE w/128MB, 512MB RAM, WinXP, MSVC2003


-----------------------------
Copyright
-----------------------------

This program and its contents are copyright by Mike Melzer, 2005, with the
exception of materials which are covered under applicable copyright of the
original creator.  This material may be modified and distributed under GPL
with proper credit given to the creator.  Proprietary content from id
Software or other individuals is still protected under applicable law.
Refer to the section below titled "Special Thanks/Credits" for information
on individuals rights.

Where ever possible, explicit permission has been obtained for use of
materials which I did not personally create, and proper credit given.


-----------------------------
Disclaimer
-----------------------------

I accept no responsibility if this file or program in any way causes a cold, 
causes your wife/girlfriend to run off with your best friend, or blows up 
your computer.  There is no warranty expressed or implied.

This project requires the registered version of Quake.  It can be found for 
under $15 in numerous places.  Support the developers who have put their 
effort into this game you love so much.


-----------------------------
Installation
-----------------------------

Extract this archive to your Quake directory.

Since this build still requires command line options to set video 
resolution, I also suggest using the tremor.bat file, and edit to your 
taste.


-----------------------------				
Features						
-----------------------------			

- Support for PCX, JPG, TGA and PNG textures
- Enhanced particle system from QMB/FuhQuake
- Full 32-bit video color depth
- Mission Pack and Nehehra support
- Basic MD3 support
- Model and frame interpolation
- Enhanced shadow transparency
- Enhanced demo recording
- Retains ASM code for optimal performance
- Removes need to create mesh files
- Flexibile m_print based menu system
- MD3 support for models
- All releases are full rebuilds, not incremental
- Great starting point for those wishing to create their own games
- Implement FMOD sound in entire engine, not just Nehahra

Note: Most features in place from JoeQuake	  


-----------------------------
Controls/Configuration
-----------------------------

There isn't much new here, and these only apply to the full game version.  
If you downloaded the engine only, these will not apply.  All the old 
favorites are here, and everyone is likely very familiar with them.  
Below are the key additions/changes from vanilla Quake:

- b = impulse 100 = add a bot
- v = impulse 103 = view from botcam (fairly jumpy view)
- Maps.cfg allows you to set cycling maps
- Use Tremor.bat for video and game configuration (a front-end 
application to start Tremor with various common options is in the works)


-----------------------------
Known Bugs/Issues
-----------------------------

- Since you can run mods with the shareware version, if you try running 
mods that access data from the registered version, or try entering 
episodes 2, 3 or 4 without pak1.pak, game crashes.
- I believe the negative lighting bug still exists for older video
cards such as aTI Rage Pro.
- The engine will run with MD3's (they have to be renamed MDL's), but 
the MD3's will not be properly rendered.  Runs fine with regular MDL's.


-----------------------------
Version History
-----------------------------

Tremor v3.2.1:

- Added DarkPlaces style fractalnoise detail texturing
- Fixed bug with Tremor crashing on Nehahra's neh1m6 level
- Added builtin's for sin, cos, sqrt, changepitch, TraceToss and etos
- Fixed layout and spacing of "Completed" screen

Tremor v3.2.0:

- Updated Quit screen credits, adding Entar
- Added basic MD3 support , many thanks to Reckless and sputnikutah!
- Fixed detail texture which was putting a thin black line horizontally
- Changed default console resolution to 512x384 for better visibility
- Reorganized pak files, putting all files into pak's
- Removed all #ifdef PARANOID defines

Tremor v3.1.0:

- Added fix to prevent engine from crashing on wrong BSP version
- General code cleanup from shared code (formating)
- Removed #ifdef GLQUAKE's from header files
- Removed #ifdef GLQUAKE's from source files
- Removed all #ifndef GLQUAKE's from code
- Removed #ifdef NeXT calls
- Added "Prev weapon" back to key configuration menu

Tremor v3.0.9:

- Added Entars shockwave code to explosions
- Modified the shiny surface texture
- Created several water textures (still needs improvement)
- Added smoke to nail impacts
- Added sputnikutah's variable shadow code
- Increased default max memory to 128MB
- General code cleanup
- Changed menu cursor from rotating "Q" to "|>" arrow

Tremor v3.0.8:

- Fixed m_print display problem when using the Join Game option
- Removed listing of video modes in Video menu, since all available
modes couldn't be listed anyway
- Fixed capitalization on Key Configuration menu
- Added Entar's shiny water surfaces
- Entar added another option to the explosions on the particle menu
- Entar tweaked shotgun particles
- Fixed light bleeding through walls (lava balls in the Start level halls)
- Changed "Bump mapping" in menus into correct term, "Detail Textures"

Tremor v3.0.7:

- Cleaned up start screen
- Implemented EBFS (QSG/DP extensions) (untested)
- Modified the sky code to look a little more natural

Tremor v3.0.6:

- Recentered menu titles
- Tweaked flames, added smoke to flames
- Added corona glow to rockets
- Removed timer by changing default of scr_printstats to 0
- Implimented MHQuake's excellent sky's!
- Removed corona glow on rockets, light flash was blinding
- Changed default bpp to 32


Tremor v3.0.5:

- Reimplemented m_print menus
- Moved Maps menu under Single Player
- Added additional DM maps to listing in game configuration
- Updated the pak0.pak in the BASE dir
- Moved item bar inward a little for better visibility
- Fixed multiplayer limit to 8, above that needs command
line options
- Project cleanup, added progdefs.h, progs.h and pr_comp.h to 
project
- Added ability to use pak files of any name


Tremor v3.0.4:

- Deleted more unused files (over .5MB of source files!)
- Due to glitch, removed m_print menu's - considering gfx
- Changed FPS counter to avoid overlap
- Removed serial and modem config stuff from config.cfg
- Changed Moon[Drunk]'s cool main menu to reflect Maps option
- Changed lightning particles to QMB by default
- Removed splash screen, reducing EXE size by over 200k


Tremor v3.0.3:

- Changed default of show_fps to 1
- Changed default crosshair to 2, changed default color
- Removed serial and modem connection from Multiplayer menu
- Removed Demo menu
- Removed unnecessary entries in Keys menu
- Added additional DM maps
- Change most GL options to default to ON
- Changed DETAIL and CAUSTICS to default to ON


Tremor v3.0.2:

- Code cleanup, removed vid_win.c, file not used
- Changed default res to 1024x768x16
- Finished m_print menu install - needs centering
- Centered remainder of menus
- Increase min memory to 16MB, max memory to 64MB
- Vertically centered Completed screen
- Kept graphics for Paused and Loading, looked better


Tremor v3.0.1:

- Changed build number formula
- Implimented Entar's m_print menus
- Removed qplaque from menus (more mod/tc friendly)
- Removed Order page from Help
- Changed splash screen
- Changed default video res to 800x600x16
- Changed to Tremor icon


Tremor v3.0.0:

- Increased default multiplayer limit to 16
- Renamed project to Tremor
- Changed version references to Tremor v3.0.0
- Modified config.cfg to cover standard binds
- Started documentation
- Renamed screenshots to "tremor123.tga"
- Changed secondary game directory from "joequake" to "base"


-----------------------------
ToDo List
-----------------------------

- Change game dir from JOEQUAKE to BASE - *done v3.0.0*
- Figure out command for hunksize - *done v3.0.2*
- Figure out cvar for timer (scr_printstats) - *done v3.0.6*
- Add menu based video changes (or create frontend app)
- Implement stainmaps(dp105 p_blood, te_blood?  MH Quake's?)
- Implement QSG Extensions (dp105 extract?) - *done v3.0.7*
- Remove demo menu - *done v3.0.3*
- Remove order page of help - *done v3.0.1*
- Add my DM levels to menu? - *done v3.0.5*
- Configure running maps from the menu to launch server
for bot support - *cnx, SP only*
- Remove Nehehra support?
- Finish m_print menus - *done v3.0.2*
- Redo Help menu, new images (remove help?)
- Remove unnecessary menu items (who uses "turn left/right" keys
when you have mlook?) - *done v3.0.3*
- Fix screenshots going to JOEQUAKE dir - *done v3.0.1*
- Finish centering all menus - *done v3.0.2*
- Impliment m_prints for Loading, Rankings, Completed, Paused - *done v3.0.2*
- Create custom graphics for Paused and Loading? -*cnx*
- Removing software rendering files? - *done*
- Change rotating "Q" menudot to the |> used in Load - *done v3.0.9*
- Fix m_print menus colored titles - *done v3.0.5*
- Remove serial and modem code from menu's (DOS Quake only code) - *done v3.0.3*
- Center menu titles (again!) - *done v3.0.6*
- Center Completed screen vertically (again!) - *done v3.2.1*
- Review flame/particles code *ongoing*
- Add coronas/glows/nail tracers
- Change default bpp to 32 - *done v3.0.6*
- Increase allowable texture size?
- Extend coordinates system?
- Check commandline switching in vid_wgl.c, seems messed up on bpp - *cnx*
- Clean up data showing on start screen - *done v3.0.7*
- Skys - slow down, add more fog - *done v3.0.7*
- Fix Join Game | Protocol selection text box - *done v3.0.8*
- Remove IPX support?
- Fix lights bleeding through walls (see lava balls on Start level - 
Q2 tutorial?) - *done v3.0.8*
- Tone down the shiny surfaces - *done v3.0.8*
- Add 400 series DP extensions to existing QSG extensions
- Remove classic particle system - *cnx*
- Add decals
- Add hudstyle cvar
- Add MD2 support?
- Add MD3 support (DemonQuake) - *done v3.2.0*
- Add PK3 support (QSG Q2 tutorial?)
- Add DarkPlaces compensated crosshair
- Figure out color issue in QMB_explosions
- Add MH Quake's liquid surface movement/sloshing
- Add MH Quake's auto water transparency
- Add Half-Life map support (FuhQuake)
- Fix bug with horizontal black lines in textures - *done v3.2.0*
- Remove #ifdef GLQUAKE's? - *done v3.1.0*
- Add Mods list, similar to Maps list
- Review menus...add back Previous Weapon, disable autoaim - *done v3.1.0*
- Improve documentation on all aspects, including cvar usage
- Remove #ifdef BAN_TEST defines - *cnx*
- Remove #ifdef PARANOID defines - *done v3.2.0*
- Change default console resolution to 512x384 - *done v3.2.0*
- Fix MD3 loading - *done v3.2.0*
- Add MD3 tags to support complex models like player/monster
- Fix crash on neh1M6 due to tracetoss - *done v3.2.1*


-----------------------------
Special Thanks/Credits
-----------------------------

id Software - For not only releasing such a cutting edge program (of it's day), 
but also for releasing the source code so that the community can continue to 
make it flourish, long after the core game has gone past its prime.
Spike, Echon, Entar, CheapHack and Tei - For patiently answering newbie 
programming questions on www.quakeworld.nu and QuakeSrc.org.
eQuake - For bundling lots of cool stuff into one easy package.
A Nourai aka 'fuh' - For making a great QW engine, providing inspiration for 
Tremor features.
Jozsef Szalontai - Creator of JoeQuake, the basis of Tremor v3.x.x.
Ryan "Frika C" Smith - Creator of FrikBot X, which I use with the Tremor engine,
and for FrikQCC, the basis for VQCC.
Alan Yen - Creator of the Techwar player skin I use.
Spirit of '85 - For testing and providing feedback, as well as mentioning 
Tremor on his weblog!
Mr Fribbles - efdm* DM maps, great stuff!
Moon[Drunk} - For making some of the most killer graphics!
Headshot - For his maps Agenda, SpineV2 and Tridm1.
Quake Retexturing Project - Great GPL textures (I believe I'm using a 
combination of a couple different releases).
Entar - For making numerous QMB particle improvements.
MH - For writing a tutorial on implimenting his cool skys!
oldman - For the great HUD faces!



For reference, here is the readme from the engine base I'm using.

-----------------------------
JoeQuakes 0.14 Readme
-----------------------------

 version 0.14DEV (4th release)

-removed r_explosiontype's mode when particles were unaffected by 
 gravity (value 1).
-changed QMB trails slightly: r_rockettrail/r_grenadetrail 1: default
 smoke, 2: darkplaces style colored smoke, 3: Q3 style smoke. So there's no
 gl_q3particles anymore. Also added new (beta version) Q3 style explosion
 sprite for QMB, try gl_part_explosions 2. And gl_part_blood 2 for getting
 Q3 style blood.
-cl_advancedcompletion worked wrong, this has now been fixed.
-sound capturing now works right if host_framerate is changed (slowmo/ffwd).
-Some changes in the states of scr_printstats:
  0 - off
  1 - only time
  2 - time + kills + secrets
  3 - only time, only when action
  4 - time + kills + secrets, only when action
-added mp3 audio compression for avi capturing. Cvar capture_mp3 toggles it, and
 capture_mp3_kbps sets the bitrate (128 by default).
-video capturing is now supported in software JoeQuake too.
-added capture_dir, default is "capture".
-v_gunkick now affects demoplaying as well (thx to Nolan for pointing out).
-raised maximal number of supported video modes from 30 to 128 (my stupidity,
 should've done much earlier).
-added gl_part_spiketrails (to keep Stubby happy).

 version 0.14DEV (3rd release)

-added a cvar called "cl_advancedcompletion" which toggles between
 advanced and normal (old) command/cvar completion (i.e. you can now turn
 advanced completion off). Default is "1" (advanced on).
-gamma changing now possible in windowed mode too with setting
 vid_hwgammacontrol to "2".
-added -22khz and -44khz starting parameters into linux versions.
-gl_smoothfont's default value is 0 from now.
-joequake GLX is finally available!
-alias models (.mdl files) are affected by dynamic lights as well.
-added vertex lighting and texture quality support into video options menu.
-"gl_picmip_all" is now 1 by default.
-added vertex lighting support from AMFQuake, cvar is "gl_vertexlights"
 and its value is "0" by default.
-paramater completion is now working with loadcharset, gl_consolefont and
 crosshairimage commands.
-you can now use "gamma" and "contrast" commands under GL as well to change
 gl_gamma and gl_contrast cvars.

 version 0.14DEV (2nd release)

-stair step ups now really smoothed out, just as the gun's knockback.
-modified a few QMB particle effects, mainly from the AMFQuake engine:
  -changed lavaball trails
  -changed torch's fire
  -nails now throw bubble trails when firing underwater
  -improved shambler's lightning
-added variable "gl_q3particles" to enable q3 style blood and smoke trails
 when using the QMB particles.
-set back automatic startdemos sequence, but not supported by joequake. This
 means that it won't start playing the demos back unless you delete the quake.rc
 from the joequake directory (inside pak0.pak) or use another one with
 startdemos included.
-added "gl_solidparticles" cvar: if your fps lowers when drawing particles, try
 switching this to 1, hopefully it helps.
-added "loadcharset" command and  "gl_consolefont" cvar: now you need to load
 the charsets, they won't automatically be loaded, but you can specify which
 you want to load and also can modify it during the game. Charsets go to
 textures/charsets/ dir.
-got the 72 fps limit to work only when recording demos.
-added "gl_externaltextures_world" and "gl_externaltextures_bmodels" cvars.
 This means you can turn external textures off if you wish and they won't
 automatically be loaded.
-plenty of minor bugfixes.

 version 0.14DEV (first release)

-added "cl_confirmquit" variable, to disable confirmation when exiting the game.
 Default value is "1" (confirmation required).
-Modified the role of "r_shadows" a bit: from now, it changes the transparency
 of the shadow, similarly to r_wateralpha, 1 means non-transparent (opaque black),
 while 0 means fully transparent (no shadow).
-non-multitextured mode (-nomtex) was screwed up, this has now been fixed.
-added "gl_fb_models" and "gl_fb_bmodels" variables to enable/disable fullbright
 textures. I heard that on some video cards fullbright textures could be fucked
 up, so people having this problem can turn fullbrights off.
 The default value is set to "1", for both variables.
-raised maximal number of edicts from 600 to 2048.
-QMB torch flames didn't work properly, this has now been fixed.
-fixed a problem with player models: DME models weren't colormapped as they
 are not regular player.mdl files, but I extended the comparison for them too.

 version 0.13 Final (bugfix release)

-fixed a bug with the player model (it hadn't changed back to default
 player.mdl when it was replaced with something else, like the head model
 in case the player was gibbed).
-fixed messagemode echo bug.
-fixed a bug with security/enforcer lasers (they were red/blue colored when
 they were not supposed to).

 version 0.13 Final (5th release)

-added "cl_maxfps" cvar to customize the maximal fps. Default is "72".
 You can only lower this if you're playing single player or coop.
-added "cl_gibfilter" cvar to avoid gibs. Can be "0" (on) or "1" (off).
-added "cl_deadbodyfilter" cvar to avoid corps. The main reason for this is
 that you are not allowed to use "coop 2" (QdQstats) on maps with only one
 starting spot.
 You can choose between value "1" and "2". At the first case, the dead body is
 to be removed in the last animation frame. At the second case it is removed
 immediately when the monster/player dies. Its value is "0" (off) by default.
-added "getcoords" command. It writes the player's origin into a given file
 or to "camfile.cam" if there was no name given.
-removed blue/red glows from the powerups' models which were hacked onto them
 from the engine side. They're still supported, but only from the progs
 (i.e. the mod) side (meaning EF_BLUE and EF_RED here).
-fixed cl_bobcycle's clipping bug when it was set to "0".
-added recording without demoname (easyrecording). If you don't give a name
 after the "record" command, it'll use a format similar to the following example:
 E1M1-Jan-04-2004-134408.dem - which means that the recording was done on
 E1M1, in the 4th of January 2004, started at 13:44.08 (hours:mins.secs).
-added a new menu called "Maps" into mainmenu. It shows all the available
 maps from your mod directory (if given) and also from your id1/maps dir.
 I think this "id1/maps" is the most common directory for maps for everyone
 but tell me if I'm wrong. It also shows maps from pak files as well.
-added record-after-connecting from ProQuake. Now you can start recording
 without reconnecting to the server.
-fixed chase camera in software version: it only showed the weapon model
 instead of the player, until now.

 version 0.13DEV (4th release)

-added Nehahra support. Use -nehahra at the command line if you want to
 use Nehahra with JoeQuake.
-renamed "dem_rewind" to "cl_demorewind".
-Added particles submenu into the Video Options menu. Now you can set each
 variable the _most_ pleasant way. From the console, you can reach this
 menu via the "menu_particles" command.
-fixed rogue's missing color mapped explosion (my mistake). Also created
 QMB style version of it.
-modified writeconfig command: it's depended on a new cvar called
 "cfg_savevars" which variables will be saved. If cfg_savevars is "0"
 than it saves only archieved vars (regular, as it worked so far). If "1"
 it'll save the ones which have other than default values (i.e. changed).
 And with value "2" it'll save ALL variables.
-integrated ctrl+v (paste) function into the console.
-restored "exec quake.rc" at the beginning, and disabled popping up
 Main Menu automatically.
-renamed "r_ringalpha" to "gl_ringalpha".
-extended underwater QMB smoke trails with bubbles.
 (thanks to sputnikutah@hotmail.com for the idea)
-raised number of chat characters in a message (ProQuake).
-same commands typed in the console won't be saved multiple times.
-"Connected to JoeQuake server" will now only be printed when playing
 mulitplayer game.
-replaced the QMB torch model with a better one, also modified the flames
 to - hopefully - make them look better than before.

 version 0.13DEV (3rd release)

-added NAT support from ProQuake.
-disabled "r_fullbrightskins" for multiplayer.
-added qflood protection from ProQuake.
-renamed "r_r2g" cvar to "cl_r2g".
-removed "gl_colorlights" cvar and added "gl_loadlitfiles". This one only
 denies the static colored lights, but not the dynamic ones.
-added -no24bit command line parameter, you can disable loading those high
 resolution textures if you use this switch.
-added synthetic lag from ProQuake. Cvar is "pq_lag", 0 by default.
-added "rcon" command from ProQuake.
-changing of r_skybox now take effect immediately, w/o restarting the map.
-added "gl_smoothfont" cvar. Now you can turn off this feature.
-added 5 new crosshairs from FuhQuake, and also new variables to configure
 crosshairs even more: crosshairsize, crosshaircolor, crosshairalpha (GL),
 and crosshairimage, with this last one you can load a custom image as crosshair.
-added q3-style bobbing, you can turn it on/off with "cl_bobbing" cvar.
-removed alpha from shadows, they're now full black.
-added precise aiming from Proquake.
-added "scr_printstats_style" cvar: when using with value "1" it replaces
 scr_printstats's HUD numbers with console characters.
-added "cl_clock" cvar which turns on/off the local time. I've built in 4 different
 formats to the values 0, 1, 2 and 3, hopefully you'll find the one that fits the
 best for you (in case you'd like to use this feature). Also added "cl_clock_x" and
 "cl_clock_y": these represent the x and y coordinates of the clock on the screen.
 Play with the values if you aren't satisfied with the default position.
-added the possibilty of changing water caustics from the video options menu.
-added -m_smooth command line parameter: It smoothens your mouse movement even
 more. Use it only with -dinput. Also, set m_rate to the refresh rate of your mouse
 (in Hz). If you don't know this value, you can check it out with m_showrate cvar.
-mission packs' status bars will be updated properly with using their own
 gfx.wad, even when not using -<name> or -game <name> (this means you switch
 to the mission pack folder inside the Demos menu).

 version 0.13DEV (2nd release)

-gamma and contrast changing from menu under GL didn't work, fixed this.
-fixed missing "r_fullbright 1" in GL.
-now, the game doesn't exit after "capturedemo" finished.
-banned cl_truelightning bigger than zero for demorecording.
-now player.mdl has shadow as well.
-dzip extraction now works only with version > 2.5 (v2.9 included in the zip).
-dzip extraction now works from subfolders as well.
-txt file after dzip extraction will be deleted from now (if exists).
-scr_printstats now work also when cl_sbar is 1.
-added "r_ringalpha" cvar. It sets the transparency of your weapon
 model when you're invisible, default is "0.4". Under GL only.
-added linux svgalib support (squake).
-added CAPS LOCK to bindable keys list.
-added "gl_caustics" cvar. It results improved underwater quality.
-fixed strange freezing bug when mission pack was started.
-extended r_rtrail's function: 0 - no trail, 1 - normal trail, 2 - grenade trail, 
 3 - alternative rockettrail (QMB only).
-added "gl_part_flames" cvar. With the help of this you can toggle between
 QMB like torches and normal ones.

