Features
- Framerate independent physics
- Ghost recording
- Demo UI
- Parameter completion
- Demo browser
- Avi capturing
- Commands history
- Demoplaying from .dz files
- 32bit textures
- Coloured lights
- Improved particles
- Decals
- MD3 models
Framerate independent physics
Server and Client calculates fps differently. The server always operates at a maximum of 72 fps. This guarantees that vanilla Quake physics are kept and also demo files remain backward compatible. The client can operate as many fps as possible, so users can - for example - match their desired max fps to their monitor’s refresh rate to achieve a much smoother gameplay experience.
Use cl_maxfps <value>
to set your desired framerate.
Use vid_displayfrequency <value>
to set your desired monitor refresh rate.
Ghost recording
The ghost feature shows the player from a demo file while you are playing the game or watching another demo file. This is useful for speedruns to know where you are relative to a reference demo, and to indicate where you could be faster.
Setting a ghost from the demo menu
From the demo menu, press ctrl-enter to set a demo file as a ghost, and ctrl-shift-enter to remove the ghost.
Commands
ghost <demo-file>
: Load ghost from the given demo file. With no arguments it will show information about the current ghost, if any. Only one ghost may be added at a time.ghost_remove
: Remove the current ghost, if any is added.ghost_shift <t>
: Shift the ghost to be the given number of seconds infront of the player. Useful if you lose the ghost but you still want to see its route.ghost_shift_reset
: Undo the effect ofghost_shift
, and put the ghost back to its correct position.
Cvars
ghost_delta [0|1]
: Show how far ahead or behind the ghost you currently are. This is unaffected byghost_shift
.ghost_range <distance>
: Hide the ghost when it is within this distance.ghost_alpha <float>
: Change how transparent the ghost is.0
is fully transparent,1
is fully opaque.ghost_marathon_split
: When set to1
, show the live marathon split, rather than the level split. Default0
.ghost_bar_x
,ghost_bar_y
: Set the position of the ghost bar.ghost_bar_alpha
: Set the transparency of the ghost bar.
Marathon split times
When a ghost is loaded a split time is shown on the intermission screen and printed to the console at the end of each level. If a marathon demo is loaded as the ghost, and the player is also running a marathon, then split times for each level are shown. Splits are also shown when playing a demo with a ghost loaded.
Demo UI
JoeQuake features a media player-style interface for navigating demos. Simply move the mouse when a demo is playing to activate the UI.
The interface has the following elements, from bottom-to-top, left-to-right:
- Pause/play: Click to pause and resume demo playback.
- Seek bar: Click to seek through time on the current map. Using the mouse wheel in this area jumps back and forward in one second increments. There is a small marker above the seek bar indicating the time when the player finishes the map.
- Time: Elapsed time and total time (including intermission) for the current map.
- Speed: Increase and decrease demo playback speed by clicking the arrow controls or by using the mouse wheel in this area.
- Freefly mode (FF): Toggles between freefly camera and first-person camera mode.
- Map selector: Shows the current map. On a multi-map (marathon) demo clicking the arrow controls or using the mouse wheel in this area will skip from map to map. Click between the arrows to toggle the map menu.
- Map menu: Shows all maps in the current demo. Click on a map to skip straight to it. Clicking outside of the demo UI will close the map menu.
Tips and tricks:
- Clicking outside of the demo UI (when the map menu is closed) will pause or resume demo playback.
- Leave the mouse still and the UI will disappear after a short wait. The
timeout can be changed with
cl_demouitimeout
and the hiding animation sped up withcl_demouihidespeed
. - Bind keys to the commands
demoskip
anddemoseek
to enable keyboard shortcut navigation. For example, binddemoskip +1
to skip to the next map, ordemoseek -5
to seek backwards 5 seconds. - Navigate to the end of a marathon demo, pause, and load a ghost to get instant split times between the two demos.
- Disable the UI with the
cl_demoui
cvar.demoseek
anddemoskip
commands will still work when the UI is disabled. - When in freefly mode, hold the right mouse button to control the camera’s view angle.
Skipping between maps of marathon demos is only currently supported for single file marathons. Demos which consist of multiple individual demo files are not yet supported by the UI.
Parameter completion
Parameter completion means if you’re using a command requiring a filename
(playdemo
for example), then when you’re pressing TAB you’re gonna get a list of files matching to the written wildcard, just like with the dir
or demdir
commands.
For example you typed the following to the console:
]playdemo e1m1
After pressing TAB you’re getting a list of all e1m1*.dem files. The wildcard will be updated with the longest common string of the matching filenames. If only one file was found, the wildcard’s gonna be replaced with that.
Parameter completion works for the following commands:
playdemo
capture_start
capturedemo
printtxt
map
exec
load
loadsky\r_skybox
loadcharset\gl_consolefont
crosshairimage
None of them require any extension to be given, they’ll automatically find their filetypes.
Demo browser
JoeQuake has a dedicated Demos main menu which provides a shell of all your Quake subdirectories, and you may browse between these folders and watch demos in any folder.
The Demos menu displays all the .dem and also the .dz (dzip compressed demo) files. There is no need to extract .dz files, you can start watching compressed demos immediately, JoeQuake covers the whole process (extracts the .dz to a temporary .dem and purges this temp file after playback is finished).
You can also set demos as your ghost here. Press Ctrl+Enter to set a selected demo as ghost and Ctrl+Shift+Enter to clear an already set ghost. See more about Ghost recording mode here.
Avi capturing
JoeQuake uses avi capturing written by Anthony Bailey. An important thing you should know about: this is mainly for capturing demos, not gameplay.
Commands
capture_start <avi-file>
: Start capturing to the given AVI file.capture_end
: Stop an ongoing capturing.capturedemo <demo-file>
: Start playing a demo and at the same time also start capturing to an AVI file with the same name.
Cvars
capture_avi [0|1]
: When set to1
, the captured video stream will be saved to an AVI file. Otherwise every captured frame will be saved as an individual TGA image.capture_avi_split <value>
: This to the number of megabytes at which to split captured video into more than one AVI file. The used video capture module has a problem with files getting corrupted when reaching a size of over 2 gigabytes, so splitting them into smaller files is a good idea to avoid this corruption. Default is 1900 megabytes. Setting to 0 disables splitting.capture_codec <codec_fourcc>
: Look for the codec having the specified fourcc code to compress the video with. If the fourcc code is set to0
, the created AVI file will be uncompressed.capture_fps <value>
: Set on how many frames/sec you wish the video to be captured.capture_dir <path>
: Set the directory path where avis to be saved while capturing. You can define relative and absolute paths: e.g.capture
would mean the subfolder in your Quake root directory and e.g.c:\My captures
is an absolute path.capture_mp3 [0|1]
: When set to1
, the captured audio will be mp3 compressed, otherwise uncompressed.capture_mp3_kbps <value>
: Set mp3 compression bitrate, only works ifcapture_mp3
is set to1
.capture_console [0|1]
: When set to0
, capturing will be suspended while the console is pulled down.
Sound issues: capturing supports up to 44 KHz sounds too, but I personally don’t recommend recording the audio on that sample. The reason is that all the Quake sounds are originally recorded on 11 KHz, and simply playing them on higher sample doesn’t actually make them sound better. If you want to use 22 or 44 KHz sounds at any price, I advise you to get a good editor (like SoundForge), and resample the audio using that.
Commands history
Added from [sons]Quake. The last 64 console lines are stored in a file cmdhist.dat in the main Quake folder, so than you can use cmd history after quitting/restarting the game.
Demoplaying from .dz files
Speed demos archive uses its own demo compression tool called Dzip, which was founded exclusively for Quake demo files. The speedruns you download from SDA are all dzip compressed.
You can use .dz files as the playdemo command’s parameter, it’ll be
automatically extracted and played. This also works from the Demos menu.
IMPORTANT: make sure the dzip binary (dzip.exe, comes with the JoeQuake zip) is present in your main Quake folder.
32bit textures
JoeQuake supports external textures in TGA, PNG and JPEG/JPG formats.
All textures go to a textures
folder, which can contain the following subfolders:
bmodels
for brush model textures (maps, ammo boxes)models
for alias model textures (player, monsters, items, etc)sprites
for sprite model textures (explosion, water bubbles)wad
for hud picturescharsets
for custom character setsparticles
for custom particle images (read more advanced particles below)
The only exceptions are the followings:
- Custom crosshairimages go to
crosshairs
folder. - Custom skyboxes go either to
env
or togfx/env
folder.
You can also create map name folders, so then the textures for that map will
be loaded from there (e.g. textures/ztndm3
).
You can download hi-resolution map textures from the Quake Retexturing project page.
For other hi-resolution textures I recommend visiting the gfx.quakeworld.nu site.
Coloured lights
Both dynamic and static colored lights are available in JoeQuake.
- For dynamic colored lights, you can choose from various colors to set your
desired explosion or rocket lighting. See more details at
r_explosionlightcolor
andr_rocketlightcolor
- For static colored lights, you can download
.lit
files (these contain the color information for maps) from the internet (just google for them). You need to place these files either tomaps/lits
or tolits
folder.
Improved particles
JoeQuake has 3 particle themes:
- Classic (default)
- QMB
- Quake 3
To quickly switch between these 3 themes, use the toggleparticles
command.
You can choose to override only individual categories:
- Explosions (
gl_part_explosions
) - Blood (
gl_part_blood
) - Trails (
gl_part_trails
) - Gunshots (
gl_part_gunshots
) - Spikes (nail shots) (
gl_part_spikes
) - Blob explosions (
gl_part_blobs
) - Lava splash (
gl_part_lavasplash
) - Flames (
gl_part_flames
) - Lightning (
gl_part_lightning
)
Valid values for these categories are [0|1|2]
meaning Classic/QMB/Quake 3.
You can also mix particle themes from these categories.
For example, you can have QMB style blood, Quake 3 style explosions and classic style gunshots at the same time. Go to the Options / Particle options menu to customize your particles settings.
Please note that Quake 3 style is only implemented for:
- Explosions
- Blood
- Trails
- Gunshots
- Spikes (nail shots)
- Flames
There are 3 additional particle effects:
- Muzzleflash (
gl_part_muzzleflash
) - Damagesplash (
gl_part_damagesplash
) - Bouncing particles (only for QMB gunshots/spikes) (
gl_bounceparticles
)
See the Settings page for a detailed description about additional particle effects.
Decals
JoeQuake can display decal patches on floors and walls, when using QMB or Quake 3 style particle effects. For example, a soot stain after an explosion or blood splatters after monster gibs.
Similarly to particles, you can override the following individual categories:
- Blood splatters (
gl_decal_blood
) - Bullet holes (
gl_decal_bullets
) - Spark trails (
gl_decal_sparks
) - Explosion marks (
gl_decal_explosions
)
To quickly switch on/off decals, use the toggledecals
command.
Go to the Options / Decal options menu to customize your decal settings.
Additional decal options:
- Decal view distance (
gl_decal_viewdistance
) - Decal visibility time (
gl_decaltime
)
See the Settings page for a detailed description about additional decal options.
MD3 models
JoeQuake supports model files in MD3 format. To get MD3 models loaded, set gl_loadq3models 1
in the console, or in the menu turn the Options / Renderer options / Load MD3 models setting to ON.
All MD3 models must be placed in the progs
subfolder and have the same name as the regular MDL model files. For example to override the grenade.mdl
file, you have to put the grenade.md3
file into the progs
subfolder.
You can also use Quake 3 player multimodels in JoeQuake the following way:
- Create a
player
subfolder in theprogs
folder. - Copy the
lower.md3
,upper.md3
andhead.md3
model files of your desired Quake 3 player. - Copy
skin
files of each multimodel (e.g.lower_*.skin
,head_*.skin
, etc). JoeQuake can only handle 1 skin at a time, so make sure you only place 1 skin per model, otherwise the texture for the multimodel will not be displayed properly. - Copy the
animation.cfg
file. - You can also have view weapons displayed in the player’s hand. You have to place the weapon models to the
progs
folder with the following naming convention:w_<q1-weapon-name>.md3
(e.g.w_shot.md3
for shotgun,w_nail.md3
for nailgun, etc). I encourage you to familiarize yourself with Quake weapon names by looking into the Quake *.pak files.