2020-08-29 20:52:06 +00:00
|
|
|
![Build](https://github.com/ioquake/ioq3/workflows/Build/badge.svg)
|
|
|
|
|
2006-11-09 14:51:24 +00:00
|
|
|
,---------------------------------------.
|
|
|
|
| _ _ ____ |
|
|
|
|
| (_)___ __ _ _ _ __ _| |_____|__ / |
|
|
|
|
| | / _ \/ _` | || / _` | / / -_)|_ \ |
|
|
|
|
| |_\___/\__, |\_,_\__,_|_\_\___|___/ |
|
|
|
|
| |_| |
|
|
|
|
| |
|
2020-07-07 10:36:27 +00:00
|
|
|
`--------- https://ioquake3.org --------'
|
2007-08-23 17:23:15 +00:00
|
|
|
|
2006-11-09 14:51:24 +00:00
|
|
|
The intent of this project is to provide a baseline Quake 3 which may be used
|
2014-09-05 09:30:33 +00:00
|
|
|
for further development and baseq3 fun.
|
2009-04-13 02:04:26 +00:00
|
|
|
Some of the major features currently implemented are:
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2018-01-08 07:41:55 +00:00
|
|
|
* SDL 2 backend
|
2006-11-09 14:51:24 +00:00
|
|
|
* OpenAL sound API support (multiple speaker support and better sound
|
|
|
|
quality)
|
|
|
|
* Full x86_64 support on Linux
|
2009-03-25 23:32:26 +00:00
|
|
|
* VoIP support, both in-game and external support through Mumble.
|
2006-11-09 14:51:24 +00:00
|
|
|
* MinGW compilation support on Windows and cross compilation support on Linux
|
|
|
|
* AVI video capture of demos
|
|
|
|
* Much improved console autocompletion
|
|
|
|
* Persistent console history
|
|
|
|
* Colorized terminal output
|
|
|
|
* Optional Ogg Vorbis support
|
|
|
|
* Much improved QVM tools
|
2007-12-04 06:55:16 +00:00
|
|
|
* Support for various esoteric operating systems
|
2007-02-13 16:18:35 +00:00
|
|
|
* cl_guid support
|
2006-11-09 14:51:24 +00:00
|
|
|
* HTTP/FTP download redirection (using cURL)
|
|
|
|
* Multiuser support on Windows systems (user specific game data
|
|
|
|
is stored in "%APPDATA%\Quake3")
|
2007-08-23 17:23:15 +00:00
|
|
|
* PNG support
|
2024-06-07 15:28:20 +00:00
|
|
|
* Web support via Emscripten
|
2006-11-09 14:51:24 +00:00
|
|
|
* Many, many bug fixes
|
|
|
|
|
|
|
|
The map editor and associated compiling tools are not included. We suggest you
|
2013-02-16 18:46:19 +00:00
|
|
|
use a modern copy from http://icculus.org/gtkradiant/.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
|
|
|
The original id software readme that accompanied the Q3 source release has been
|
|
|
|
renamed to id-readme.txt so as to prevent confusion. Please refer to the
|
2016-08-05 07:05:33 +00:00
|
|
|
website for updated status.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2022-02-08 10:19:05 +00:00
|
|
|
More documentation including a Player's Guide and Sysadmin Guide are on:
|
|
|
|
https://ioquake3.org/help/
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2016-08-05 07:05:33 +00:00
|
|
|
If you've got issues that you aren't sure are worth filing as bugs, or just
|
|
|
|
want to chat, please visit our forums:
|
2022-02-08 10:19:05 +00:00
|
|
|
https://discourse.ioquake.org
|
2016-08-05 07:05:33 +00:00
|
|
|
|
2020-07-07 10:36:27 +00:00
|
|
|
# Thank You:
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<a href="https://www.digitalocean.com/">Digital Ocean<br/>
|
|
|
|
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px">
|
|
|
|
</a>
|
|
|
|
</p>
|
|
|
|
---
|
|
|
|
<p>
|
|
|
|
<a href="https://www.discourse.org/">Discourse<br/>
|
|
|
|
<img src=
|
|
|
|
"https://user-images.githubusercontent.com/1681963/52239617-e2683480-289c-11e9-922b-5da55472e5b4.png"
|
|
|
|
width="300px"></a>
|
|
|
|
</p>
|
|
|
|
---
|
|
|
|
<p>
|
|
|
|
<a href="https://icculus.org/">icculus dot org<br/>
|
|
|
|
<img src="http://icculus.org/icculus-org-now.png" width="300px"></a>
|
|
|
|
</p>
|
2022-02-08 10:28:38 +00:00
|
|
|
---
|
|
|
|
<p>
|
|
|
|
<a href="https://nuclearmonster.com/">Nuclear Monster<br/>
|
|
|
|
<img src="https://user-images.githubusercontent.com/903791/152968830-dd08737b-55c6-4ac6-9610-31121ea0e8c6.png" width="300px"></a>
|
|
|
|
</p>
|
2020-07-07 10:36:27 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
# Compilation and installation
|
2006-11-09 14:51:24 +00:00
|
|
|
|
|
|
|
For *nix
|
|
|
|
1. Change to the directory containing this readme.
|
|
|
|
2. Run 'make'.
|
|
|
|
|
2009-04-13 02:04:26 +00:00
|
|
|
For Windows,
|
2014-09-05 09:30:33 +00:00
|
|
|
1. Please refer to the excellent instructions here:
|
2022-02-08 10:19:05 +00:00
|
|
|
https://ioquake3.org/help/building-ioquake3/
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2022-09-02 23:37:34 +00:00
|
|
|
For macOS, building a Universal Binary (macOS 10.5 to 10.8, x86_64, x86, ppc)
|
2007-12-31 03:47:36 +00:00
|
|
|
1. Install MacOSX SDK packages from XCode. For maximum compatibility,
|
2021-11-07 01:22:16 +00:00
|
|
|
install MacOSX10.5.sdk and MacOSX10.6.sdk.
|
2006-11-09 14:51:24 +00:00
|
|
|
2. Change to the directory containing this README file.
|
|
|
|
3. Run './make-macosx-ub.sh'
|
2021-11-07 01:22:16 +00:00
|
|
|
4. Copy the resulting ioquake3.app in /build/release-darwin-universal
|
|
|
|
to your /Applications/ioquake3 folder.
|
|
|
|
|
2022-09-02 23:37:34 +00:00
|
|
|
For macOS, building a Universal Binary 2 (macOS 10.9+, arm64, x86_64)
|
2021-11-07 01:22:16 +00:00
|
|
|
1. Install MacOSX SDK packages from XCode. Building for arm64 requires
|
|
|
|
MacOSX11.sdk or later.
|
|
|
|
2. Change to the directory containing this README file.
|
|
|
|
3. Run './make-macosx-ub2.sh'
|
|
|
|
4. Copy the resulting ioquake3.app in /build/release-darwin-universal2
|
|
|
|
to your /Applications/ioquake3 folder.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2024-06-07 15:28:20 +00:00
|
|
|
For Web, building with Emscripten
|
|
|
|
1. Follow the installation instructions for the Emscripten SDK including
|
|
|
|
setting up the environment with emsdk_env.
|
2024-06-10 04:24:12 +00:00
|
|
|
2. Run `emmake make debug` (or release).
|
2024-06-11 01:50:48 +00:00
|
|
|
3. Copy or symlink your baseq3 pk3 files into the `build/debug-emscripten-wasm32/baseq3`
|
|
|
|
directory so they can be loaded at run-time. Only game files listed in
|
2024-06-10 03:28:43 +00:00
|
|
|
`client-config.json` will be loaded.
|
2024-06-07 15:28:20 +00:00
|
|
|
4. Start a web server serving this directory. `python3 -m http.server`
|
|
|
|
is an easy default that you may already have installed.
|
2024-06-10 04:24:12 +00:00
|
|
|
5. Open `http://localhost:8000/build/debug-emscripten-wasm32/ioquake3.html`
|
|
|
|
in a web browser. Open the developer console to see errors and warnings.
|
2024-06-07 15:28:20 +00:00
|
|
|
6. Debugging the C code is possible using a Chrome extension. For details
|
|
|
|
see https://developer.chrome.com/blog/wasm-debugging-2020
|
|
|
|
|
2006-11-09 14:51:24 +00:00
|
|
|
Installation, for *nix
|
|
|
|
1. Set the COPYDIR variable in the shell to be where you installed Quake 3
|
2007-09-05 18:17:46 +00:00
|
|
|
to. By default it will be /usr/local/games/quake3 if you haven't set it.
|
2006-11-09 14:51:24 +00:00
|
|
|
This is the path as used by the original Linux Q3 installer and subsequent
|
|
|
|
point releases.
|
|
|
|
2. Run 'make copyfiles'.
|
|
|
|
|
2013-03-22 13:49:50 +00:00
|
|
|
It is also possible to cross compile for Windows under *nix using MinGW. Your
|
|
|
|
distribution may have mingw32 packages available. On debian/Ubuntu, you need to
|
|
|
|
install 'mingw-w64'. Thereafter cross compiling is simply a case running
|
|
|
|
'PLATFORM=mingw32 ARCH=x86 make' in place of 'make'. ARCH may also be set to
|
|
|
|
x86_64.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2007-09-05 18:17:46 +00:00
|
|
|
The following variables may be set, either on the command line or in
|
2006-11-09 14:51:24 +00:00
|
|
|
Makefile.local:
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
```
|
2024-06-10 02:49:31 +00:00
|
|
|
DEPEND_MAKEFILE - set to 0 to disable rebuilding all targets when
|
|
|
|
the Makefile or Makefile.local is changed
|
2014-09-05 09:26:26 +00:00
|
|
|
CFLAGS - use this for custom CFLAGS
|
|
|
|
V - set to show cc command line when building
|
|
|
|
DEFAULT_BASEDIR - extra path to search for baseq3 and such
|
|
|
|
BUILD_SERVER - build the 'ioq3ded' server binary
|
|
|
|
BUILD_CLIENT - build the 'ioquake3' client binary
|
|
|
|
BUILD_BASEGAME - build the 'baseq3' binaries
|
|
|
|
BUILD_MISSIONPACK - build the 'missionpack' binaries
|
|
|
|
BUILD_GAME_SO - build the game shared libraries
|
|
|
|
BUILD_GAME_QVM - build the game qvms
|
|
|
|
BUILD_STANDALONE - build binaries suited for stand-alone games
|
|
|
|
SERVERBIN - rename 'ioq3ded' server binary
|
|
|
|
CLIENTBIN - rename 'ioquake3' client binary
|
|
|
|
USE_RENDERER_DLOPEN - build and use the renderer in a library
|
2024-06-10 02:56:03 +00:00
|
|
|
BUILD_RENDERER_OPENGL1 build the opengl1 client / renderer library
|
|
|
|
BUILD_RENDERER_OPENGL2 build the opengl2 client / renderer library
|
2016-06-15 17:17:58 +00:00
|
|
|
USE_YACC - use yacc to update code/tools/lcc/lburg/gram.c
|
2014-09-05 09:26:26 +00:00
|
|
|
BASEGAME - rename 'baseq3'
|
|
|
|
BASEGAME_CFLAGS - custom CFLAGS for basegame
|
|
|
|
MISSIONPACK - rename 'missionpack'
|
|
|
|
MISSIONPACK_CFLAGS - custom CFLAGS for missionpack (default '-DMISSIONPACK')
|
|
|
|
USE_OPENAL - use OpenAL where available
|
|
|
|
USE_OPENAL_DLOPEN - link with OpenAL at runtime
|
|
|
|
USE_CURL - use libcurl for http/ftp download support
|
|
|
|
USE_CURL_DLOPEN - link with libcurl at runtime
|
|
|
|
USE_CODEC_VORBIS - enable Ogg Vorbis support
|
|
|
|
USE_CODEC_OPUS - enable Ogg Opus support
|
|
|
|
USE_MUMBLE - enable Mumble support
|
|
|
|
USE_VOIP - enable built-in VoIP support
|
2017-05-23 14:05:38 +00:00
|
|
|
USE_FREETYPE - enable FreeType support for rendering fonts
|
2014-09-05 09:26:26 +00:00
|
|
|
USE_INTERNAL_LIBS - build internal libraries instead of dynamically
|
|
|
|
linking against system libraries; this just sets
|
2017-05-23 14:05:38 +00:00
|
|
|
the default for USE_INTERNAL_ZLIB etc.
|
2014-09-05 09:30:33 +00:00
|
|
|
and USE_LOCAL_HEADERS
|
2014-09-05 09:26:26 +00:00
|
|
|
USE_INTERNAL_ZLIB - build and link against internal zlib
|
|
|
|
USE_INTERNAL_JPEG - build and link against internal JPEG library
|
|
|
|
USE_INTERNAL_OGG - build and link against internal ogg library
|
|
|
|
USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
|
2023-04-02 22:13:18 +00:00
|
|
|
USE_INTERNAL_VORBIS - build and link against internal Vorbis library
|
2014-09-05 09:26:26 +00:00
|
|
|
USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
|
|
|
|
DEBUG_CFLAGS - C compiler flags to use for building debug version
|
|
|
|
COPYDIR - the target installation directory
|
|
|
|
TEMPDIR - specify user defined directory for temp files
|
2024-06-11 01:50:48 +00:00
|
|
|
EMSCRIPTEN_PRELOAD_FILE - set to 1 to package 'baseq3' (BASEGAME) directory
|
|
|
|
containing pk3s and loose files as a single
|
|
|
|
.data file that is loaded instead of listing
|
2024-06-10 03:28:43 +00:00
|
|
|
individual files in client-config.json
|
2013-11-24 01:38:09 +00:00
|
|
|
```
|
2006-11-09 14:51:24 +00:00
|
|
|
|
|
|
|
The defaults for these variables differ depending on the target platform.
|
|
|
|
|
|
|
|
|
2024-06-06 02:33:08 +00:00
|
|
|
# OpenGL ES support
|
|
|
|
|
|
|
|
The opengl2 renderer (the default) supports OpenGL ES 2+. Though there
|
|
|
|
are many missing features and the performance may not be sufficient for
|
|
|
|
embedded System-on-a-Chip and mobile platforms.
|
|
|
|
|
|
|
|
The opengl1 renderer does not have OpenGL ES support.
|
|
|
|
|
2024-06-06 22:05:04 +00:00
|
|
|
The opengl2 renderer will try both OpenGL and OpenGL ES APIs to find one that
|
|
|
|
works. The `r_preferOpenGLES` cvar controls which API to try first.
|
|
|
|
Set it to -1 for auto (default), 0 for OpenGL, and 1 for OpenGL ES. It should be
|
2024-06-06 02:33:08 +00:00
|
|
|
set using command line arguments:
|
|
|
|
|
2024-06-06 22:05:04 +00:00
|
|
|
ioquake3 +set cl_renderer opengl2 +set r_preferOpenGLES 1
|
2024-06-06 02:33:08 +00:00
|
|
|
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
# Console
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
## New cvars
|
|
|
|
|
|
|
|
```
|
2006-11-09 14:51:24 +00:00
|
|
|
cl_autoRecordDemo - record a new demo on each map change
|
|
|
|
cl_aviFrameRate - the framerate to use when capturing video
|
|
|
|
cl_aviMotionJpeg - use the mjpeg codec when capturing video
|
2008-08-28 22:05:34 +00:00
|
|
|
cl_guidServerUniq - makes cl_guid unique for each server
|
|
|
|
cl_cURLLib - filename of cURL library to load
|
|
|
|
cl_consoleKeys - space delimited list of key names or
|
|
|
|
characters that toggle the console
|
2009-11-02 16:17:10 +00:00
|
|
|
cl_mouseAccelStyle - Set to 1 for QuakeLive mouse acceleration
|
|
|
|
behaviour, 0 for standard q3
|
|
|
|
cl_mouseAccelOffset - Tuning the acceleration curve, see below
|
2011-03-05 19:10:23 +00:00
|
|
|
|
2017-06-08 03:09:51 +00:00
|
|
|
con_autochat - Set to 0 to disable sending console input
|
|
|
|
text as chat when there is not a slash
|
|
|
|
at the beginning
|
|
|
|
con_autoclear - Set to 0 to disable clearing console
|
|
|
|
input text when console is closed
|
|
|
|
|
2011-04-19 13:26:15 +00:00
|
|
|
in_joystickUseAnalog - Do not translate joystick axis events
|
|
|
|
to keyboard commands
|
|
|
|
|
|
|
|
j_forward - Joystick analogue to m_forward,
|
|
|
|
for forward movement speed/direction.
|
|
|
|
j_side - Joystick analogue to m_side,
|
|
|
|
for side movement speed/direction.
|
2012-02-15 18:15:49 +00:00
|
|
|
j_up - Joystick up movement speed/direction.
|
2011-04-19 13:26:15 +00:00
|
|
|
j_pitch - Joystick analogue to m_pitch,
|
|
|
|
for pitch rotation speed/direction.
|
|
|
|
j_yaw - Joystick analogue to m_yaw,
|
|
|
|
for yaw rotation speed/direction.
|
|
|
|
j_forward_axis - Selects which joystick axis
|
|
|
|
controls forward/back.
|
|
|
|
j_side_axis - Selects which joystick axis
|
|
|
|
controls left/right.
|
2012-02-15 18:15:49 +00:00
|
|
|
j_up_axis - Selects which joystick axis
|
|
|
|
controls up/down.
|
2011-04-19 13:26:15 +00:00
|
|
|
j_pitch_axis - Selects which joystick axis
|
|
|
|
controls pitch.
|
|
|
|
j_yaw_axis - Selects which joystick axis
|
|
|
|
controls yaw.
|
|
|
|
|
2006-11-09 14:51:24 +00:00
|
|
|
s_useOpenAL - use the OpenAL sound backend if available
|
|
|
|
s_alPrecache - cache OpenAL sounds before use
|
|
|
|
s_alGain - the value of AL_GAIN for each source
|
|
|
|
s_alSources - the total number of sources (memory) to
|
|
|
|
allocate
|
|
|
|
s_alDopplerFactor - the value passed to alDopplerFactor
|
|
|
|
s_alDopplerSpeed - the value passed to alDopplerVelocity
|
|
|
|
s_alMinDistance - the value of AL_REFERENCE_DISTANCE for
|
|
|
|
each source
|
|
|
|
s_alMaxDistance - the maximum distance before sounds start
|
|
|
|
to become inaudible.
|
|
|
|
s_alRolloff - the value of AL_ROLLOFF_FACTOR for each
|
|
|
|
source
|
|
|
|
s_alGraceDistance - after having passed MaxDistance, length
|
2008-07-21 22:02:54 +00:00
|
|
|
until sounds are completely inaudible
|
2006-11-09 14:51:24 +00:00
|
|
|
s_alDriver - which OpenAL library to use
|
|
|
|
s_alDevice - which OpenAL device to use
|
|
|
|
s_alAvailableDevices - list of available OpenAL devices
|
2011-03-09 12:59:25 +00:00
|
|
|
s_alInputDevice - which OpenAL input device to use
|
|
|
|
s_alAvailableInputDevices - list of available OpenAL input devices
|
2006-11-09 14:51:24 +00:00
|
|
|
s_sdlBits - SDL bit resolution
|
|
|
|
s_sdlSpeed - SDL sample rate
|
|
|
|
s_sdlChannels - SDL number of channels
|
|
|
|
s_sdlDevSamps - SDL DMA buffer size override
|
|
|
|
s_sdlMixSamps - SDL mix buffer size override
|
2009-11-02 16:17:10 +00:00
|
|
|
s_backend - read only, indicates the current sound
|
|
|
|
backend
|
|
|
|
s_muteWhenMinimized - mute sound when minimized
|
2009-11-10 01:56:56 +00:00
|
|
|
s_muteWhenUnfocused - mute sound when window is unfocused
|
2011-07-12 11:01:20 +00:00
|
|
|
sv_dlRate - bandwidth allotted to PK3 file downloads
|
|
|
|
via UDP, in kbyte/s
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2007-09-05 18:17:46 +00:00
|
|
|
com_ansiColor - enable use of ANSI escape codes in the tty
|
2006-11-09 14:51:24 +00:00
|
|
|
com_altivec - enable use of altivec on PowerPC systems
|
2011-02-04 12:04:56 +00:00
|
|
|
com_standalone (read only) - If set to 1, quake3 is running in
|
2011-02-04 13:25:51 +00:00
|
|
|
standalone mode
|
2011-02-04 12:04:56 +00:00
|
|
|
com_basegame - Use a different base than baseq3. If no
|
|
|
|
original Quake3 or TeamArena pak files
|
|
|
|
are found, this will enable running in
|
2011-02-04 13:25:51 +00:00
|
|
|
standalone mode
|
2011-02-04 12:04:56 +00:00
|
|
|
com_homepath - Specify name that is to be appended to the
|
|
|
|
home path
|
2011-07-12 11:59:48 +00:00
|
|
|
com_legacyprotocol - Specify protocol version number for
|
|
|
|
legacy Quake3 1.32c protocol, see
|
|
|
|
"Network protocols" section below
|
|
|
|
(startup only)
|
2008-07-21 22:02:54 +00:00
|
|
|
com_maxfpsUnfocused - Maximum frames per second when unfocused
|
|
|
|
com_maxfpsMinimized - Maximum frames per second when minimized
|
2011-02-02 16:46:23 +00:00
|
|
|
com_busyWait - Will use a busy loop to wait for rendering
|
2011-02-04 13:25:51 +00:00
|
|
|
next frame when set to non-zero value
|
2014-09-05 09:30:33 +00:00
|
|
|
com_pipefile - Specify filename to create a named pipe
|
2011-03-10 01:01:27 +00:00
|
|
|
through which other processes can control
|
2014-09-05 09:30:33 +00:00
|
|
|
the server while it is running.
|
2011-03-10 01:01:27 +00:00
|
|
|
Nonfunctional on Windows.
|
2011-07-29 13:46:50 +00:00
|
|
|
com_gamename - Gamename sent to master server in
|
|
|
|
getservers[Ext] query and infoResponse
|
|
|
|
"gamename" infostring value. Also used
|
|
|
|
for filtering local network games.
|
2011-07-12 11:59:48 +00:00
|
|
|
com_protocol - Specify protocol version number for
|
|
|
|
current ioquake3 protocol, see
|
|
|
|
"Network protocols" section below
|
|
|
|
(startup only)
|
2011-03-05 19:10:23 +00:00
|
|
|
|
2007-09-05 18:17:46 +00:00
|
|
|
in_joystickNo - select which joystick to use
|
2011-03-07 22:56:03 +00:00
|
|
|
in_availableJoysticks - list of available Joysticks
|
2008-08-19 21:32:23 +00:00
|
|
|
in_keyboardDebug - print keyboard debug info
|
2009-11-02 16:17:10 +00:00
|
|
|
|
2006-11-09 14:51:24 +00:00
|
|
|
sv_dlURL - the base of the HTTP or FTP site that
|
2007-08-23 17:23:15 +00:00
|
|
|
holds custom pk3 files for your server
|
2009-11-02 16:17:10 +00:00
|
|
|
sv_banFile - Name of the file that is used for storing
|
2011-02-04 13:25:51 +00:00
|
|
|
the server bans
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2008-04-12 17:00:18 +00:00
|
|
|
net_ip6 - IPv6 address to bind to
|
|
|
|
net_port6 - port to bind to using the ipv6 address
|
|
|
|
net_enabled - enable networking, bitmask. Add up
|
|
|
|
number for option to enable it:
|
|
|
|
enable ipv4 networking: 1
|
|
|
|
enable ipv6 networking: 2
|
|
|
|
prioritise ipv6 over ipv4: 4
|
|
|
|
disable multicast support: 8
|
|
|
|
net_mcast6addr - multicast address to use for scanning for
|
|
|
|
ipv6 servers on the local network
|
|
|
|
net_mcastiface - outgoing interface to use for scan
|
2008-04-27 17:32:14 +00:00
|
|
|
|
2016-02-05 03:01:37 +00:00
|
|
|
r_allowResize - make window resizable
|
2009-11-02 16:17:10 +00:00
|
|
|
r_ext_texture_filter_anisotropic - anisotropic texture filtering
|
2008-04-27 17:32:14 +00:00
|
|
|
r_zProj - distance of observer camera to projection
|
2008-05-03 15:10:12 +00:00
|
|
|
plane in quake3 standard units
|
2011-02-04 16:04:37 +00:00
|
|
|
r_greyscale - desaturate textures, useful for anaglyph,
|
|
|
|
supports values in the range of 0 to 1
|
2008-05-03 15:10:12 +00:00
|
|
|
r_stereoEnabled - enable stereo rendering for techniques
|
|
|
|
like shutter glasses (untested)
|
2008-04-27 17:32:14 +00:00
|
|
|
r_anaglyphMode - Enable rendering of anaglyph images
|
|
|
|
red-cyan glasses: 1
|
|
|
|
red-blue: 2
|
|
|
|
red-green: 3
|
2011-11-18 12:47:42 +00:00
|
|
|
green-magenta: 4
|
2008-05-03 15:10:12 +00:00
|
|
|
To swap the colors for left and right eye
|
2011-11-18 12:47:42 +00:00
|
|
|
just add 4 to the value for the wanted
|
2008-05-03 15:10:12 +00:00
|
|
|
color combination. For red-blue and
|
|
|
|
red-green you probably want to enable
|
2008-07-21 22:02:54 +00:00
|
|
|
r_greyscale
|
2008-04-27 17:32:14 +00:00
|
|
|
r_stereoSeparation - Control eye separation. Resulting
|
|
|
|
separation is r_zProj divided by this
|
2008-05-03 15:10:12 +00:00
|
|
|
value in quake3 standard units.
|
2008-05-03 18:01:30 +00:00
|
|
|
See also
|
|
|
|
http://wiki.ioquake3.org/Stereo_Rendering
|
2008-07-21 22:02:54 +00:00
|
|
|
for more information
|
2009-10-16 20:35:45 +00:00
|
|
|
r_marksOnTriangleMeshes - Support impact marks on md3 models, MOD
|
|
|
|
developers should increase the mark
|
|
|
|
triangle limits in cg_marks.c if they
|
|
|
|
intend to use this.
|
2008-08-09 13:25:41 +00:00
|
|
|
r_sdlDriver - read only, indicates the SDL driver
|
|
|
|
backend being used
|
2009-11-03 20:29:43 +00:00
|
|
|
r_noborder - Remove window decoration from window
|
|
|
|
managers, like borders and titlebar.
|
2011-02-10 21:18:31 +00:00
|
|
|
r_screenshotJpegQuality - Controls quality of jpeg screenshots
|
|
|
|
captured using screenshotJPEG
|
|
|
|
r_aviMotionJpegQuality - Controls quality of video capture when
|
|
|
|
cl_aviMotionJpeg is enabled
|
2012-08-27 14:52:41 +00:00
|
|
|
r_mode -2 - This new video mode automatically uses the
|
|
|
|
desktop resolution.
|
2013-11-24 01:38:09 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## New commands
|
2008-04-12 17:00:18 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
```
|
2006-11-09 14:51:24 +00:00
|
|
|
video [filename] - start video capture (use with demo command)
|
|
|
|
stopvideo - stop video capture
|
2009-11-10 01:55:54 +00:00
|
|
|
stopmusic - stop background music
|
2011-02-10 19:37:30 +00:00
|
|
|
minimize - Minimize the game and show desktop
|
2013-01-17 05:03:09 +00:00
|
|
|
togglemenu - causes escape key event for opening/closing menu, or
|
2013-01-17 05:18:51 +00:00
|
|
|
going to a previous menu. works in binds, even in UI
|
2008-04-12 17:00:18 +00:00
|
|
|
|
2008-04-04 15:34:49 +00:00
|
|
|
print - print out the contents of a cvar
|
2009-11-09 22:41:42 +00:00
|
|
|
unset - unset a user created cvar
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2008-04-12 17:00:18 +00:00
|
|
|
banaddr <range> - ban an ip address range from joining a game on this
|
|
|
|
server, valid <range> is either playernum or CIDR
|
|
|
|
notation address range.
|
|
|
|
exceptaddr <range> - exempt an ip address range from a ban.
|
2009-05-24 16:58:08 +00:00
|
|
|
bandel <range> - delete ban (either range or ban number)
|
|
|
|
exceptdel <range> - delete exception (either range or exception number)
|
2008-04-12 17:00:18 +00:00
|
|
|
listbans - list all currently active bans and exceptions
|
|
|
|
rehashbans - reload the banlist from serverbans.dat
|
|
|
|
flushbans - delete all bans
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2009-05-29 03:14:49 +00:00
|
|
|
net_restart - restart network subsystem to change latched settings
|
2009-11-09 22:41:42 +00:00
|
|
|
game_restart <fs_game> - Switch to another mod
|
2009-05-29 03:14:49 +00:00
|
|
|
|
2011-02-10 23:07:07 +00:00
|
|
|
which <filename/path> - print out the path on disk to a loaded item
|
|
|
|
|
2012-06-19 14:20:42 +00:00
|
|
|
execq <filename> - quiet exec command, doesn't print "execing file.cfg"
|
2012-06-18 20:38:24 +00:00
|
|
|
|
2012-06-19 15:52:08 +00:00
|
|
|
kicknum <client number> - kick a client by number, same as clientkick command
|
|
|
|
kickall - kick all clients, similar to "kick all" (but kicks
|
|
|
|
everyone even if someone is named "all")
|
|
|
|
kickbots - kick all bots, similar to "kick allbots" (but kicks
|
|
|
|
all bots even if someone is named "allbots")
|
|
|
|
|
2012-04-05 22:43:32 +00:00
|
|
|
tell <client num> <msg> - send message to a single client (new to server)
|
2013-12-02 05:16:51 +00:00
|
|
|
|
|
|
|
cvar_modified [filter] - list modified cvars, can filter results (such as "r*"
|
|
|
|
for renderer cvars) like cvarlist which lists all cvars
|
2017-06-30 00:57:13 +00:00
|
|
|
|
|
|
|
addbot random - the bot name "random" now selects a random bot
|
2013-11-24 01:38:09 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
# README for Developers
|
2011-07-12 11:59:48 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
## pk3dir
|
2013-02-11 23:58:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
ioquake3 has a useful new feature for mappers. Paths in a game directory with
|
|
|
|
the extension ".pk3dir" are treated like pk3 files. This means you can keep
|
|
|
|
all files specific to your map in one directory tree and easily zip this
|
|
|
|
folder for distribution.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
## 64bit mods
|
|
|
|
|
|
|
|
If you wish to compile external mods as shared libraries on a 64bit platform,
|
|
|
|
and the mod source is derived from the id Q3 SDK, you will need to modify the
|
|
|
|
interface code a little. Open the files ending in _syscalls.c and change
|
|
|
|
every instance of int to intptr_t in the declaration of the syscall function
|
|
|
|
pointer and the dllEntry function. Also find the vmMain function for each
|
|
|
|
module (usually in cg_main.c g_main.c etc.) and similarly replace the return
|
|
|
|
value in the prototype with intptr_t (arg0, arg1, ...stay int).
|
|
|
|
|
|
|
|
Add the following code snippet to q_shared.h:
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2020-04-07 15:18:15 +00:00
|
|
|
```c
|
|
|
|
#ifdef Q3_VM
|
|
|
|
typedef int intptr_t;
|
|
|
|
#else
|
|
|
|
#include <stdint.h>
|
|
|
|
#endif
|
|
|
|
```
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
Note if you simply wish to run mods on a 64bit platform you do not need to
|
|
|
|
recompile anything since by default Q3 uses a virtual machine system.
|
|
|
|
|
|
|
|
## Creating mods compatible with Q3 1.32b
|
|
|
|
|
|
|
|
If you're using this package to create mods for the last official release of
|
|
|
|
Q3, it is necessary to pass the commandline option '-vq3' to your invocation
|
|
|
|
of q3asm. This is because by default q3asm outputs an updated qvm format that
|
|
|
|
is necessary to fix a bug involving the optimizing pass of the x86 vm JIT
|
|
|
|
compiler.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
## Creating standalone games
|
2008-04-10 16:21:49 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
Have you finished the daunting task of removing all dependencies on the Q3
|
|
|
|
game data? You probably now want to give your users the opportunity to play
|
|
|
|
the game without owning a copy of Q3, which consequently means removing cd-key
|
|
|
|
and authentication server checks. In addition to being a straightforward Q3
|
|
|
|
client, ioquake3 also purports to be a reliable and stable code base on which
|
|
|
|
to base your game project.
|
2008-04-10 16:21:49 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
However, before you start compiling your own version of ioquake3, you have to
|
|
|
|
ask yourself: Have we changed or will we need to change anything of importance
|
|
|
|
in the engine?
|
2008-04-10 16:21:49 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
If your answer to this question is "no", it probably makes no sense to build
|
|
|
|
your own binaries. Instead, you can just use the pre-built binaries on the
|
|
|
|
website. Just make sure the game is called with:
|
2008-04-10 16:21:49 +00:00
|
|
|
|
2011-02-04 12:04:56 +00:00
|
|
|
+set com_basegame <yournewbase>
|
2014-09-05 09:30:33 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
in any links/scripts you install for your users to start the game. The
|
|
|
|
binary must not detect any original quake3 game pak files. If this
|
|
|
|
condition is met, the game will set com_standalone to 1 and is then running
|
|
|
|
in stand alone mode.
|
2014-09-05 09:30:33 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
If you want the engine to use a different directory in your homepath than
|
|
|
|
e.g. "Quake3" on Windows or ".q3a" on Linux, then set a new name at startup
|
|
|
|
by adding
|
|
|
|
|
2011-02-04 12:04:56 +00:00
|
|
|
+set com_homepath <homedirname>
|
2013-11-24 01:38:09 +00:00
|
|
|
|
|
|
|
to the command line. You can also control which game name to use when talking
|
|
|
|
to the master server:
|
|
|
|
|
2011-07-29 13:46:50 +00:00
|
|
|
+set com_gamename <gamename>
|
2011-02-04 13:25:51 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
So clients requesting a server list will only receive servers that have a
|
|
|
|
matching game name.
|
|
|
|
|
|
|
|
Example line:
|
2008-04-10 15:37:25 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
+set com_basegame basefoo +set com_homepath .foo
|
|
|
|
+set com_gamename foo
|
2008-04-10 16:21:49 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
If you really changed parts that would make vanilla ioquake3 incompatible with
|
|
|
|
your mod, we have included another way to conveniently build a stand-alone
|
|
|
|
binary. Just run make with the option BUILD_STANDALONE=1. Don't forget to edit
|
|
|
|
the PRODUCT_NAME and subsequent #defines in qcommon/q_shared.h with
|
|
|
|
information appropriate for your project.
|
|
|
|
|
2013-11-24 02:19:41 +00:00
|
|
|
## Standalone game licensing
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
While a lot of work has been put into ioquake3 that you can benefit from free
|
|
|
|
of charge, it does not mean that you have no obligations to fulfill. Please be
|
|
|
|
aware that as soon as you start distributing your game with an engine based on
|
|
|
|
our sources we expect you to fully comply with the requirements as stated in
|
|
|
|
the GPL. That includes making sources and modifications you made to the
|
|
|
|
ioquake3 engine as well as the game-code used to compile the .qvm files for
|
|
|
|
the game logic freely available to everyone. Furthermore, note that the "QIIIA
|
|
|
|
Game Source License" prohibits distribution of mods that are intended to
|
|
|
|
operate on a version of Q3 not sanctioned by id software:
|
2008-04-10 16:21:49 +00:00
|
|
|
|
|
|
|
"with this Agreement, ID grants to you the non-exclusive and limited right
|
|
|
|
to distribute copies of the Software ... for operation only with the full
|
|
|
|
version of the software game QUAKE III ARENA"
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
This means that if you're creating a standalone game, you cannot use said
|
|
|
|
license on any portion of the product. As the only other license this code has
|
|
|
|
been released under is the GPL, this is the only option.
|
|
|
|
|
|
|
|
This does NOT mean that you cannot market this game commercially. The GPL does
|
|
|
|
not prohibit commercial exploitation and all assets (e.g. textures, sounds,
|
|
|
|
maps) created by yourself are your property and can be sold like every other
|
|
|
|
game you find in stores.
|
|
|
|
|
2007-02-13 16:18:35 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
## PNG support
|
2013-11-24 02:19:41 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
ioquake3 supports the use of PNG (Portable Network Graphic) images as
|
|
|
|
textures. It should be noted that the use of such images in a map will
|
|
|
|
result in missing placeholder textures where the map is used with the id
|
|
|
|
Quake 3 client or earlier versions of ioquake3.
|
2007-08-23 17:23:15 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
Recent versions of GtkRadiant and q3map2 support PNG images without
|
|
|
|
modification. However GtkRadiant is not aware that PNG textures are supported
|
|
|
|
by ioquake3. To change this behaviour open the file 'q3.game' in the 'games'
|
|
|
|
directory of the GtkRadiant base directory with an editor and change the
|
|
|
|
line:
|
2007-08-26 21:27:46 +00:00
|
|
|
|
|
|
|
texturetypes="tga jpg"
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
to
|
2007-08-26 21:27:46 +00:00
|
|
|
|
|
|
|
texturetypes="tga jpg png"
|
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
Restart GtkRadiant and PNG textures are now available.
|
|
|
|
|
|
|
|
## Building with MinGW for pre Windows XP
|
2007-08-26 21:27:46 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
IPv6 support requires a header named "wspiapi.h" to abstract away from
|
|
|
|
differences in earlier versions of Windows' IPv6 stack. There is no MinGW
|
|
|
|
equivalent of this header and the Microsoft version is obviously not
|
|
|
|
redistributable, so in its absence we're forced to require Windows XP.
|
|
|
|
However if this header is acquired separately and placed in the qcommon/
|
|
|
|
directory, this restriction is lifted.
|
2008-08-09 19:12:30 +00:00
|
|
|
|
2007-08-26 21:27:46 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
# Contributing
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2015-08-28 21:45:36 +00:00
|
|
|
Please send all patches to bugzilla (https://bugzilla.icculus.org), or as a GitHub pull request and
|
|
|
|
submit your patch there.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2008-08-09 13:25:41 +00:00
|
|
|
The focus for ioq3 is to develop a stable base suitable for further development
|
2015-08-28 21:45:36 +00:00
|
|
|
and provide players with the same Quake 3 experience they've had for years.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2015-08-28 21:45:36 +00:00
|
|
|
We do have graphical improvements with the new renderer, but they are off by default.
|
2016-08-05 07:05:33 +00:00
|
|
|
See opengl2-readme.md for more information.
|
2006-11-09 14:51:24 +00:00
|
|
|
|
2013-11-24 01:38:09 +00:00
|
|
|
# Credits
|
2006-11-09 14:51:24 +00:00
|
|
|
|
|
|
|
Maintainers
|
2013-11-24 01:38:09 +00:00
|
|
|
|
|
|
|
* James Canete <use.less01@gmail.com>
|
|
|
|
* Ludwig Nussel <ludwig.nussel@suse.de>
|
|
|
|
* Thilo Schulz <arny@ats.s.bawue.de>
|
|
|
|
* Tim Angus <tim@ngus.net>
|
|
|
|
* Tony J. White <tjw@tjw.org>
|
2022-02-08 10:19:05 +00:00
|
|
|
* Jack Slater <jack@ioquake.org>
|
2013-11-24 01:38:09 +00:00
|
|
|
* Zack Middleton <zturtleman@gmail.com>
|
2006-11-09 14:51:24 +00:00
|
|
|
|
|
|
|
Significant contributions from
|
2013-11-24 01:38:09 +00:00
|
|
|
|
|
|
|
* Ryan C. Gordon <icculus@icculus.org>
|
|
|
|
* Andreas Kohn <andreas@syndrom23.de>
|
|
|
|
* Joerg Dietrich <Dietrich_Joerg@t-online.de>
|
|
|
|
* Stuart Dalton <badcdev@gmail.com>
|
|
|
|
* Vincent S. Cojot <vincent at cojot dot name>
|
|
|
|
* optical <alex@rigbo.se>
|
|
|
|
* Aaron Gyes <floam@aaron.gy>
|
|
|
|
|
|
|
|
|