QuakeSpasm
Page last edited: Sep. 2019
QuakeSpasm
is a modern, cross-platform Quake 1 engine based on
FitzQuake.
It includes support for 64 bit CPUs and custom music playback, a new
sound driver, some graphical niceities, and numerous bug-fixes and other improvements.
Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which one works best for you.
SDL is probably less buggy, but SDL2 has nicer features and smoother mouse input - though no CD support.
Visit the
FitzQuake homepage for a full run-down of the engine's commands and variables.
- To disable some changes, use "quakespasm -fitz"
- Quakespasm's custom data is stored in "quakespasm.pak". Install this file alongside your id1 directory to enable the custom console background and other minor features.
- For different sound backend drivers use "SDL_AUDIODRIVER=DRIVER ./quakespasm"
, where DRIVER may be alsa, dsp, pulse, esd ...
- Shift+Escape draws the Console.
- From the console, use UP to browse the command line history and
TAB to autocomplete command and map names.
- There is currently no CD Music volume support and SDL2 doesn't support CD audio. cd_sdl.c needs replacing with cd_linux.c, cd_bsd.c etc..
- In windows, alternative CD drives are accessible by "quakespasm -cddev F" (for example)
- Quakespasm allows loading new games (mods) on the fly with "game GAMENAME {-quoth/hipnotic/rogue}"
- Use "quakespasm -condebug" to save console log to "qconsole.log". SDL2 builds no longer generate stdout.txt/stderr.txt.
Quakespasm can play various external music formats, including MP3, OGG and FLAC.
- Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music".
- Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.
- As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".
- Use the "-noextmusic" option to disable this feature.
- See
Quakespasm-Music.txt for more details.
The SDL2 variant of Quakespasm supports Xbox 360 style game controllers.
The default configuration uses the left analog stick for movement and the right for looking.
If your controller doesn't work you can try placing
this file in your Quake directory, it is a community-maintained database that adds support for more controllers to SDL2.
Cvars
- joy_deadzone - Fraction of the stick travel to be deadzone, between 0 and 1. Default 0.175.
- joy_deadzone_trigger - Fraction of trigger range required to register a button press on the analog triggers, between 0 and 1. Default 0.2.
- joy_sensitivity_yaw/pitch - Max angular speed in degrees/second when looking. Defaults are 300 for yaw (turning left/right) and 150 for pitch (up/down).
- joy_exponent - For the look stick, the stick displacement (between 0 and 1) is raised to this power. Default is 3. A value of 1 would give a linear relationship between stick displacement and fraction of the maximum angular speed.
- joy_invert - Set to 1 to invert the vertical axis of the look stick.
- joy_swapmovelook - Set to 1 to swap the left and right analog stick functions. Default 0, move on the left stick, look on the right stick.
- joy_enable - Set to 0 to disable controller support. Default 1.
Buttons
Some of the controller buttons are hardcoded to allow navigating the menu:
- Back - alias for TAB
- Start - alias for ESC
- DPad, analog sticks - mapped to arrow keys
- A Button - alias for ENTER in menus
- B Button - alias for ESC in menus
These buttons can be bound normally:
- LTRIGGER - Left trigger
- RTRIGGER - Right trigger
- LSHOULDER - Left shoulder button
- RSHOULDER - Right shoulder button
- LTHUMB - Clicking the left thumbstick
- RTHUMB - Clicking the right thumbstick
- ABUTTON
- BBUTTON
- XBUTTON
- YBUTTON
quakespasm.pak contains a default.cfg which has been updated to give some default bindings. L/R shoulder buttons are bound to weapon switching, and L/R triggers are jump and attack.
The controller support started as Jeremiah Sypult's implementation in Quakespasm-Rift and also uses ideas and code from LordHavoc (DarkPlaces).
Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
To checkout the latest version of QuakeSpasm, do:
svn co svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm
After extracting the source tarball, browse the Makefile and edit the music streaming options, then
make
cp quakespasm /usr/local/games/quake (for example)
Compile time options include
- make DO_USERDIRS=1 to include user directories support
- make DEBUG=1 for debugging
- make SDL_CONFIG=/PATH/TO/