ioq3quest/README.md

601 lines
28 KiB
Markdown
Raw Normal View History

2020-09-06 12:00:14 +00:00
# Quake 3 Port to Oculus Quest
## Building
### Prerequisites
1. Install your copy of Quake III Arena from Steam.
2020-09-06 12:00:14 +00:00
2. Android Studio with NDK version 21.1.6352462.
Squashed commit of the following: commit 0adeb4ba3bc12d1efeab7f7b4876fc61d9566ed4 Merge: 7feea565 d8653ad7 Author: Simon <simonbrown77@googlemail.com> Date: Sat May 7 14:32:21 2022 +0100 Merge branch 'OpenXR' of https://github.com/DrBeef/ioq3quest into OpenXR commit 7feea56514c17b3f1e7c15c73676bd9d8374ed6c Author: Simon <simonbrown77@googlemail.com> Date: Sat May 7 14:32:14 2022 +0100 Update Version Number commit d8653ad70e1cc9bf1fb2e72d6ad9c9b330db32d8 Merge: 79983b2b 7e6aa6da Author: Simon <simonbrown77@googlemail.com> Date: Sat May 7 14:31:45 2022 +0100 Merge pull request #76 from lvonasek/OpenXR OpenXR delayed controller pose fixed commit 79983b2bc5174eeb7c674396f07288da80ce94c5 Merge: 325641f9 7f89d6d1 Author: Simon <simonbrown77@googlemail.com> Date: Sat May 7 14:31:31 2022 +0100 Merge pull request #77 from petr666/OpenXR Update gamma values to better suit OpenXR build commit 7f89d6d19b2e807b001577c06c5f254106f95e0e Author: Petr Bartos <petr.bartos@plus4u.net> Date: Sat May 7 13:56:03 2022 +0200 Update gamma values to better suit OpenXR build commit 7e6aa6dab80e6ec4010e6057be4c0e34e4325245 Author: Lubos <tridosm@gmail.com> Date: Sat May 7 11:32:11 2022 +0200 OpenXR sync actions before updating controllers commit 027a7e96c312c43389299648326736766c8bab67 Author: Lubos <tridosm@gmail.com> Date: Fri May 6 10:34:50 2022 +0200 OpenXR implement controller velocity again commit af80d5c284b5372eb9b2533284325ae43caa80ec Author: Lubos <tridosm@gmail.com> Date: Fri May 6 10:18:51 2022 +0200 Compile fix commit ab1e853554a02c7dd59b2f59afab2569eb64ebed Author: Lubos <tridosm@gmail.com> Date: Fri May 6 10:14:08 2022 +0200 OpenXR input cleanup commit be158b4ad98a6b615c5fc34a407e4333dc468225 Author: Lubos <tridosm@gmail.com> Date: Fri May 6 09:39:49 2022 +0200 OpenXR sync input actions from renderer commit ed96160ffc0b3fb9350f8801257cfee713d8713f Author: Lubos <tridosm@gmail.com> Date: Fri May 6 09:25:59 2022 +0200 OpenXR do not use pose velocity to track controllers commit 42bf984ef8075ce45d6788fc09236d40d6a61dc9 Author: Lubos <tridosm@gmail.com> Date: Thu May 5 22:39:10 2022 +0200 OpenXR apply controller pose from renderer commit 92941b3547e7c4c7f126f608dde7239ee9c03b8e Author: Lubos <tridosm@gmail.com> Date: Thu May 5 22:26:33 2022 +0200 OpenXR delayed controller pose fixed commit 325641f90edbb1ba7ef96d288c443dd824a7528c Merge: de198fba 3ee3f590 Author: Simon <simonbrown77@googlemail.com> Date: Thu May 5 16:30:07 2022 +0100 Merge pull request #75 from lvonasek/OpenXR OpenXR menuyaw and recenter support added commit 3ee3f590584f6a8ff8d1e5cace7b999965c7e5cd Author: Lubos <tridosm@gmail.com> Date: Thu May 5 12:22:36 2022 +0200 OpenXR do not recenter on renderer reload commit 7072b0b89e0313a3bb39e8bb49dfdfa78e2972d9 Author: Lubos <tridosm@gmail.com> Date: Wed May 4 21:05:45 2022 +0200 OpenXR recenter sets yaw always to 0 commit 8e5f6414a6cb598c17b7d3cdbd208fe11d0d4fb3 Author: Lubos <tridosm@gmail.com> Date: Wed May 4 16:19:48 2022 +0200 OpenXR recenter integrated commit 08a4fc7fbf95e70f4a467350129a79d8358b34bd Author: Lubos <tridosm@gmail.com> Date: Tue May 3 18:37:28 2022 +0200 OpenXR use the same coordinate system in all layers commit a1de0e1ffe5081d0a15f4bd50b99f6a1c1439eac Author: Lubos <tridosm@gmail.com> Date: Mon May 2 22:17:53 2022 +0200 OpenXR menuYaw support added commit de198fba0da8130af67cfa9224c484e007d3a897 Author: Simon <simonbrown77@googlemail.com> Date: Mon May 2 10:01:42 2022 +0100 Update version numbers and add openxr identifier commit b83f99fe5b8db293a652f22d7adea825bf6a6549 Merge: c623bf13 9c14728b Author: Simon <simonbrown77@googlemail.com> Date: Mon May 2 09:43:47 2022 +0100 Merge pull request #74 from lvonasek/OpenXR OpenXR left controller mapping fixed commit 9c14728bc98f037dff8d7825692463b44915babe Merge: 11a849b1 0695c7ac Author: Lubos <tridosm@gmail.com> Date: Sun May 1 19:41:45 2022 +0200 Merge branch 'master' into OpenXR commit 11a849b189b4a5a8ab9676cd2cfeaae826e09187 Author: Lubos <tridosm@gmail.com> Date: Sun May 1 19:09:12 2022 +0200 OpenXR controller mapping fixed commit 712584eae8dbcec3b10e0e39b2266f83487d4ecb Merge: df4bc0c0 c623bf13 Author: Luboš Vonásek <tridosm@gmail.com> Date: Sun May 1 19:04:45 2022 +0200 Merge branch 'DrBeef:OpenXR' into OpenXR commit c623bf1399406c24a1e9bf25fc54de758ac70c94 Merge: cb152467 e42a2f4e Author: Simon <simonbrown77@googlemail.com> Date: Sun May 1 14:10:23 2022 +0100 Merge pull request #72 from lvonasek/OpenXR OpenXR jitter fixed commit e42a2f4e0d4a0c48a266ef03b6599e70aadc1875 Author: Lubos <tridosm@gmail.com> Date: Sun May 1 14:34:38 2022 +0200 Compile fix commit acbff1e7364c40d9f1a0820a561be40237c94994 Author: Lubos <tridosm@gmail.com> Date: Sun May 1 13:59:41 2022 +0200 OpenXR camera view moved into renderer commit cb152467bacd5b7a92513b4279cf85a17f9c08e2 Merge: decc2d02 26071937 Author: Simon <simonbrown77@googlemail.com> Date: Sun May 1 10:20:40 2022 +0100 Merge pull request #69 from lvonasek/feature_openxr OpenXR integration commit 26071937c8b5053fe20e10d07fab5b9a695bfcc2 Author: Lubos <tridosm@gmail.com> Date: Sun May 1 11:17:50 2022 +0200 OpenXR frameskip integrated commit f735535dcef2675678e1731ec67f4f5b7537bd49 Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 22:57:48 2022 +0200 OpenXR attempt to fix flickering commit 0eb1d43b4aaa18550384d3689df9233bb293cbcc Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 21:28:26 2022 +0200 2D aspect ratio fixed commit 9d07c2760463062fa2afb52f533f8af4001c9576 Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 21:23:53 2022 +0200 Hud model rendering fixed commit 30c9b4eaa0c3ecf235c592de0e52771a7d79453c Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 17:03:54 2022 +0200 Release build fixed commit 405ca571ad31d6bbd99de96e87cb0564d5daa60b Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 14:10:27 2022 +0200 OpenXR foveation removed commit 61b3192bce97b48587cd360c0318c4708a9e1828 Author: Lubos <tridosm@gmail.com> Date: Sat Apr 30 14:02:21 2022 +0200 OpenXR projection matrix calculation from example code commit ecd50dbcb1b72baa1c730dbb900033febd4b81a8 Author: Lubos <tridosm@gmail.com> Date: Fri Apr 29 21:21:10 2022 +0200 OpenXR low framerate fixed commit f5a8429fc1c094eb07b6a6ac463405a5ec44c63b Author: Lubos <tridosm@gmail.com> Date: Fri Apr 29 19:21:29 2022 +0200 Solution for black rectangles in the scene commit 9ae93a5fe9d684d7d739e1a9217324d770c4712a Merge: 10548445 decc2d02 Author: Lubos <tridosm@gmail.com> Date: Fri Apr 29 14:58:35 2022 +0200 Merge branch 'master' into feature_openxr commit 10548445245439c1b245270fadc1a92f5be4650a Merge: 65e2031e 3cdf1858 Author: Lubos <tridosm@gmail.com> Date: Wed Apr 27 21:52:55 2022 +0200 Merge branch 'master' into feature_openxr commit 65e2031e954fe075189d1ab90eb6edce1b726731 Author: Lubos <tridosm@gmail.com> Date: Tue Apr 26 22:02:04 2022 +0200 OpenXR integration fixes commit c321b97894fa9dc240b82a89426a5b4516a6eb5b Author: Lubos <tridosm@gmail.com> Date: Mon Apr 25 16:48:09 2022 +0200 OpenXR multiview integrated commit 594716896626c4c2190dc620ed66bd69c858031d Author: Lubos <tridosm@gmail.com> Date: Sun Apr 24 20:25:19 2022 +0200 OpenXR minor fixes commit 249847930be0230b6d99008475b2f4c9bb1636f0 Author: Lubos <tridosm@gmail.com> Date: Sun Apr 24 18:06:02 2022 +0200 OpenXR use just one framebuffer commit b11122e36882e5c62511528a6f107821f0a8de24 Author: Lubos <tridosm@gmail.com> Date: Sat Apr 23 21:06:35 2022 +0200 OpenXR touch controllers completely implemented commit 0bf485664c41ffa742d703ec358c9c38d01b51cc Author: Lubos <tridosm@gmail.com> Date: Sat Apr 23 19:44:18 2022 +0200 OpenXR haptics and refreshrate fixed commit 4716387e5274674a9432bf3867fc05a2ac62b597 Author: Lubos <tridosm@gmail.com> Date: Sat Apr 23 15:54:07 2022 +0200 OpenXR input except buttons implemented commit 7bd1fe31c2e9321af2fdd7ffee42ef94c08b5fdc Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 21:18:49 2022 +0200 OpenXR input in progress commit 3c26e08f011d25a907d05926c073baa93c94692d Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 18:41:26 2022 +0200 Old code removed commit 4d2644cae27c031e5c5d0c487e87c8e6b66b4857 Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 18:32:42 2022 +0200 OpenXR fov fixed commit 501869a05128802049bb347eecb2c38d87391162 Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 17:56:14 2022 +0200 OpenXR motion tracking in game mode added commit b152d21ddc669a135c7b2113440124ddbc1672df Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 16:14:36 2022 +0200 OpenXR cylinder projection added commit 3e9c80679e7c0adbeb20a3aa14ca20c48422b54a Merge: 0de4a0d1 39f669dd Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 14:13:18 2022 +0200 Merge branch 'master' into feature_openxr commit 0de4a0d19645706b6579ef00714e6291432f6543 Author: Lubos <tridosm@gmail.com> Date: Fri Apr 22 13:45:22 2022 +0200 OpenXR tracking added init, first working rendering commit 8431b1aa83be613e4c3f6d1b771f5e80b28e798b Author: Lubos <tridosm@gmail.com> Date: Thu Apr 21 21:15:02 2022 +0200 OpenXR add missing foveation commit 4ff90d8ba07eeaa554943e72fb69d40eaed1dd1f Author: Lubos <tridosm@gmail.com> Date: Thu Apr 21 21:00:02 2022 +0200 OpenXR renderer cleanup commit d736af15bd22b3f8f38f6b4c4dc1e1b53ddc7dae Merge: 7b9d51ec fe180129 Author: Lubos <tridosm@gmail.com> Date: Thu Mar 31 17:47:45 2022 +0200 Merge branch 'master' into feature_openxr commit 7b9d51ec30570dde2c5159037a4ceac1882acf55 Author: Lubos <tridosm@gmail.com> Date: Thu Mar 31 17:47:36 2022 +0200 OpenXR renderer in progress commit e7a2229edc46ac2c9821c1fbf0ecada57ac1d31f Merge: abeaf046 bcf9287a Author: Lubos <tridosm@gmail.com> Date: Wed Mar 30 09:44:15 2022 +0200 Merge branch 'master' into feature_openxr commit abeaf046074997aa90d315565189f8977416bcc9 Author: Lubos <tridosm@gmail.com> Date: Tue Mar 29 19:57:47 2022 +0200 OpenXR initialization fixed commit f2fefbf7081ddcf8cd28272cea786f55e3260132 Author: Lubos <tridosm@gmail.com> Date: Tue Mar 29 17:13:48 2022 +0200 OpenXR initialization added commit 96bf69cb15c6953b8ad1a9907de15b2032301ac3 Author: Lubos <tridosm@gmail.com> Date: Tue Mar 29 12:56:37 2022 +0200 VR API removed
2022-05-07 13:34:37 +00:00
3. Download the Oculus OpenXR SDK from https://developer.oculus.com/downloads/package/oculus-openxr-mobile-sdk/
4. Extract the OpenXR folder to ./android/app/src/main/cpp/code/OpenXR/
5. Extract the 3rdParty/khronos/openxr/OpenXR-SDK folder to ./android/app/src/main/cpp/code/OpenXR-SDK/
2020-09-06 12:00:14 +00:00
### Building and running the build
The scripts assume that you installed everything in the default locations. In case you want to deviate from that, the paths are in ./android/run.(sh|bat) and in Makefile.local.
#### Linux
2022-03-04 15:23:57 +00:00
1. Update ANDROID_NDK path in Makefile.local
2022-03-18 13:49:56 +00:00
2. Run ./android/run.sh
#### MacOS
1. If you are not using the default Android Studio installation paths (~/Library/Android/sdk/ndk), update ANDROID_NDK path in Makefile.local
2. Run ./android/run.sh
#### Windows
2022-03-04 15:23:57 +00:00
1. Replace \<username\> with your windows username folder as it appears in C:\Users.
2. Open git bash and run ./android/run.bat.
2020-09-06 12:00:14 +00:00
# Original ioq3 README:
2006-11-09 14:51:24 +00:00
,---------------------------------------.
| _ _ ____ |
| (_)___ __ _ _ _ __ _| |_____|__ / |
| | / _ \/ _` | || / _` | / / -_)|_ \ |
| |_\___/\__, |\_,_\__,_|_\_\___|___/ |
| |_| |
| |
`--------- https://ioquake3.org --------'
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
* 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")
* PNG support
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
website for updated status.
2006-11-09 14:51:24 +00:00
More documentation including a Player's Guide and Sysadmin Guide is on:
2015-08-28 21:30:55 +00:00
http://wiki.ioquake3.org/
2006-11-09 14:51:24 +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:
http://discourse.ioquake.org
# 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>
# 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:
2009-04-13 02:04:26 +00:00
http://wiki.ioquake3.org/Building_ioquake3
2006-11-09 14:51:24 +00:00
For Mac OS X, building a Universal Binary
1. Install MacOSX SDK packages from XCode. For maximum compatibility,
install MacOSX10.4u.sdk and MacOSX10.3.9.sdk, and MacOSX10.2.8.sdk.
2006-11-09 14:51:24 +00:00
2. Change to the directory containing this README file.
3. Run './make-macosx-ub.sh'
4. Copy the resulting ioquake3.app in /build/release-darwin-ub to your
2006-11-09 14:51:24 +00:00
/Applications/ioquake3 folder.
Installation, for *nix
1. Set the COPYDIR variable in the shell to be where you installed Quake 3
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'.
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
The following variables may be set, either on the command line or in
2006-11-09 14:51:24 +00:00
Makefile.local:
```
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
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
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
```
2006-11-09 14:51:24 +00:00
The defaults for these variables differ depending on the target platform.
# Console
2006-11-09 14:51:24 +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
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
cl_mouseAccelStyle - Set to 1 for QuakeLive mouse acceleration
behaviour, 0 for standard q3
cl_mouseAccelOffset - Tuning the acceleration curve, see below
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
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.
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.
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
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
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
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
sv_dlRate - bandwidth allotted to PK3 file downloads
via UDP, in kbyte/s
2006-11-09 14:51:24 +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
com_standalone (read only) - If set to 1, quake3 is running in
standalone mode
com_basegame - Use a different base than baseq3. If no
original Quake3 or TeamArena pak files
are found, this will enable running in
standalone mode
com_homepath - Specify name that is to be appended to the
home path
com_legacyprotocol - Specify protocol version number for
legacy Quake3 1.32c protocol, see
"Network protocols" section below
(startup only)
com_maxfpsUnfocused - Maximum frames per second when unfocused
com_maxfpsMinimized - Maximum frames per second when minimized
com_busyWait - Will use a busy loop to wait for rendering
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
through which other processes can control
2014-09-05 09:30:33 +00:00
the server while it is running.
Nonfunctional on Windows.
com_gamename - Gamename sent to master server in
getservers[Ext] query and infoResponse
"gamename" infostring value. Also used
for filtering local network games.
com_protocol - Specify protocol version number for
current ioquake3 protocol, see
"Network protocols" section below
(startup only)
in_joystickNo - select which joystick to use
in_availableJoysticks - list of available Joysticks
in_keyboardDebug - print keyboard debug info
2006-11-09 14:51:24 +00:00
sv_dlURL - the base of the HTTP or FTP site that
holds custom pk3 files for your server
sv_banFile - Name of the file that is used for storing
the server bans
2006-11-09 14:51:24 +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
r_allowResize - make window resizable
r_ext_texture_filter_anisotropic - anisotropic texture filtering
r_zProj - distance of observer camera to projection
plane in quake3 standard units
r_greyscale - desaturate textures, useful for anaglyph,
supports values in the range of 0 to 1
r_stereoEnabled - enable stereo rendering for techniques
like shutter glasses (untested)
r_anaglyphMode - Enable rendering of anaglyph images
red-cyan glasses: 1
red-blue: 2
red-green: 3
green-magenta: 4
To swap the colors for left and right eye
just add 4 to the value for the wanted
color combination. For red-blue and
red-green you probably want to enable
r_greyscale
r_stereoSeparation - Control eye separation. Resulting
separation is r_zProj divided by this
value in quake3 standard units.
See also
http://wiki.ioquake3.org/Stereo_Rendering
for more information
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.
r_sdlDriver - read only, indicates the SDL driver
backend being used
r_noborder - Remove window decoration from window
managers, like borders and titlebar.
r_screenshotJpegQuality - Controls quality of jpeg screenshots
captured using screenshotJPEG
r_aviMotionJpegQuality - Controls quality of video capture when
cl_aviMotionJpeg is enabled
r_mode -2 - This new video mode automatically uses the
desktop resolution.
```
## New commands
```
2006-11-09 14:51:24 +00:00
video [filename] - start video capture (use with demo command)
stopvideo - stop video capture
stopmusic - stop background music
2011-02-10 19:37:30 +00:00
minimize - Minimize the game and show desktop
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-04 15:34:49 +00:00
print - print out the contents of a cvar
unset - unset a user created cvar
2006-11-09 14:51:24 +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.
bandel <range> - delete ban (either range or ban number)
exceptdel <range> - delete exception (either range or exception number)
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
net_restart - restart network subsystem to change latched settings
game_restart <fs_game> - Switch to another mod
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
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)
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
```
# README for Developers
## pk3dir
2013-02-11 23:58:24 +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
## 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
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
## Creating standalone games
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.
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?
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:
+set com_basegame <yournewbase>
2014-09-05 09:30:33 +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
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
+set com_homepath <homedirname>
to the command line. You can also control which game name to use when talking
to the master server:
+set com_gamename <gamename>
So clients requesting a server list will only receive servers that have a
matching game name.
Example line:
+set com_basegame basefoo +set com_homepath .foo
+set com_gamename foo
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.
## Standalone game licensing
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:
"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"
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.
## PNG support
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.
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:
texturetypes="tga jpg"
to
texturetypes="tga jpg png"
Restart GtkRadiant and PNG textures are now available.
## Building with MinGW for pre Windows XP
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.
# Contributing
2006-11-09 14:51:24 +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
The focus for ioq3 is to develop a stable base suitable for further development
and provide players with the same Quake 3 experience they've had for years.
2006-11-09 14:51:24 +00:00
We do have graphical improvements with the new renderer, but they are off by default.
See opengl2-readme.md for more information.
2006-11-09 14:51:24 +00:00
# Building Official Installers
2006-11-09 14:51:24 +00:00
We need help getting automated installers on all the platforms that ioquake3
2011-08-02 01:25:58 +00:00
supports. We don't necessarily care about all the installers being identical,
2006-11-09 14:51:24 +00:00
but we have some general guidelines:
* Please include the id patch pk3s in your installer, which are available
2007-12-04 06:55:16 +00:00
from http://ioquake3.org/patch-data/ subject to agreement to the id
2006-11-09 14:51:24 +00:00
EULA. Your installer shall also ask the user to agree to this EULA (which
is in the /web/include directory for your convenience) and subsequently
refuse to continue the installation of the patch pk3s and pak0.pk3 if they
do not.
* Please don't require pak0.pk3, since not everyone using the engine
plans on playing Quake 3 Arena on it. It's fine to (optionally) assist the
user in copying the file or tell them how.
* It is fine to just install the binaries without requiring id EULA agreement,
2011-08-02 01:25:58 +00:00
providing pak0.pk3 and the patch pk3s are not referred to or included in the
2006-11-09 14:51:24 +00:00
installer.
* Please include at least a libSDL2 so/dylib/dll on every platform.
2006-11-09 14:51:24 +00:00
* Please include an OpenAL so/dylib/dll, since every platform should be using
it by now.
* Please be prepared to alter your installer on the whim of the maintainers.
* Your installer will be mirrored to an "official" directory, thus making it
a done deal.
# Credits
2006-11-09 14:51:24 +00:00
Maintainers
* 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>
* Zachary J. Slater <zachary@ioquake.org>
* Zack Middleton <zturtleman@gmail.com>
2006-11-09 14:51:24 +00:00
Significant contributions from
* 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>