mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-25 21:31:34 +00:00
576 lines
28 KiB
Text
576 lines
28 KiB
Text
|
,---------------------------------------.
|
||
|
| _ _ ____ |
|
||
|
| (_)___ __ _ _ _ __ _| |_____|__ / |
|
||
|
| | / _ \/ _` | || / _` | / / -_)|_ \ |
|
||
|
| |_\___/\__, |\_,_\__,_|_\_\___|___/ |
|
||
|
| |_| |
|
||
|
| |
|
||
|
`---------- http://ioquake3.org --------'
|
||
|
|
||
|
The intent of this project is to provide a baseline Quake 3 which may be used
|
||
|
for further development and baseq3 fun.
|
||
|
Some of the major features currently implemented are:
|
||
|
|
||
|
* SDL backend
|
||
|
* OpenAL sound API support (multiple speaker support and better sound
|
||
|
quality)
|
||
|
* Full x86_64 support on Linux
|
||
|
* VoIP support, both in-game and external support through Mumble.
|
||
|
* 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
|
||
|
* Support for various esoteric operating systems
|
||
|
* cl_guid support
|
||
|
* HTTP/FTP download redirection (using cURL)
|
||
|
* Multiuser support on Windows systems (user specific game data
|
||
|
is stored in "%APPDATA%\Quake3")
|
||
|
* PNG support
|
||
|
* Many, many bug fixes
|
||
|
|
||
|
The map editor and associated compiling tools are not included. We suggest you
|
||
|
use a modern copy from http://www.qeradiant.com/.
|
||
|
|
||
|
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
|
||
|
web-site for updated status.
|
||
|
|
||
|
|
||
|
--------------------------------------------- Compilation and installation -----
|
||
|
|
||
|
For *nix
|
||
|
1. Change to the directory containing this readme.
|
||
|
2. Run 'make'.
|
||
|
|
||
|
For Windows,
|
||
|
1. Please refer to the excellent instructions here:
|
||
|
http://wiki.ioquake3.org/Building_ioquake3
|
||
|
|
||
|
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.
|
||
|
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
|
||
|
/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.
|
||
|
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. A
|
||
|
script is available to build a cross compilation environment from
|
||
|
http://www.libsdl.org/extras/win32/cross/build-cross.sh. The gcc/binutils
|
||
|
version numbers that the script downloads may need to be altered.
|
||
|
Alternatively, your distribution may have mingw32 packages available. On
|
||
|
debian/Ubuntu, these are mingw32, mingw32-runtime and mingw32-binutils. Cross
|
||
|
compiling is simply a case of using './cross-make-mingw.sh' in place of 'make',
|
||
|
though you may find you need to change the value of the variables in this
|
||
|
script to match your environment.
|
||
|
|
||
|
The following variables may be set, either on the command line or in
|
||
|
Makefile.local:
|
||
|
|
||
|
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_CLIENT_SMP - build the 'ioquake3-smp' client binary
|
||
|
BUILD_GAME_SO - build the game shared libraries
|
||
|
BUILD_GAME_QVM - build the game qvms
|
||
|
BUILD_STANDALONE - build binaries suited for stand-alone games
|
||
|
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_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
|
||
|
COPYDIR - the target installation directory
|
||
|
|
||
|
The defaults for these variables differ depending on the target platform.
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------ Console -----
|
||
|
|
||
|
New cvars
|
||
|
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
|
||
|
|
||
|
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
|
||
|
s_alDriver - which OpenAL library to use
|
||
|
s_alDevice - which OpenAL device to use
|
||
|
s_alAvailableDevices - list of available OpenAL devices
|
||
|
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
|
||
|
s_muteWhenUnfocused - mute sound when window is unfocused
|
||
|
|
||
|
com_ansiColor - enable use of ANSI escape codes in the tty
|
||
|
com_altivec - enable use of altivec on PowerPC systems
|
||
|
com_standalone - Run in standalone mode
|
||
|
com_maxfpsUnfocused - Maximum frames per second when unfocused
|
||
|
com_maxfpsMinimized - Maximum frames per second when minimized
|
||
|
|
||
|
in_joystickNo - select which joystick to use
|
||
|
in_keyboardDebug - print keyboard debug info
|
||
|
|
||
|
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.
|
||
|
|
||
|
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 (SDL only)
|
||
|
r_ext_texture_filter_anisotropic - anisotropic texture filtering
|
||
|
r_zProj - distance of observer camera to projection
|
||
|
plane in quake3 standard units
|
||
|
r_greyscale - render black and white images
|
||
|
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
|
||
|
To swap the colors for left and right eye
|
||
|
just add 3 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.
|
||
|
|
||
|
New commands
|
||
|
video [filename] - start video capture (use with demo command)
|
||
|
stopvideo - stop video capture
|
||
|
stopmusic - stop background music
|
||
|
|
||
|
print - print out the contents of a cvar
|
||
|
unset - unset a user created cvar
|
||
|
|
||
|
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
|
||
|
|
||
|
net_restart - restart network subsystem to change latched settings
|
||
|
game_restart <fs_game> - Switch to another mod
|
||
|
|
||
|
------------------------------------------------------------ Miscellaneous -----
|
||
|
|
||
|
Using shared libraries instead of qvm
|
||
|
To force Q3 to use shared libraries instead of qvms run it with the following
|
||
|
parameters: +set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0
|
||
|
|
||
|
Using Demo Data Files
|
||
|
Copy demoq3/pak0.pk3 from the demo installer to your baseq3 directory. The
|
||
|
qvm files in this pak0.pk3 will not work, so you have to use the native
|
||
|
shared libraries or qvms from this project. To use the new qvms, they must be
|
||
|
put into a pk3 file. A pk3 file is just a zip file, so any compression tool
|
||
|
that can create such files will work. The shared libraries should already be
|
||
|
in the correct place. Use the instructions above to use them.
|
||
|
|
||
|
Please bear in mind that you will not be able to play online using the demo
|
||
|
data, nor is it something that we like to spend much time maintaining or
|
||
|
supporting.
|
||
|
|
||
|
QuakeLive mouse acceleration (patch and this text written by TTimo from id)
|
||
|
I've been using an experimental mouse acceleration code for a while, and
|
||
|
decided to make it available to everyone. Don't be too worried if you don't
|
||
|
understand the explanations below, this is mostly intended for advanced
|
||
|
players:
|
||
|
To enable it, set cl_mouseAccelStyle 1 (0 is the default/legacy behavior)
|
||
|
|
||
|
New style is controlled with 3 cvars:
|
||
|
|
||
|
sensitivity
|
||
|
cl_mouseAccel
|
||
|
cl_mouseAccelOffset
|
||
|
|
||
|
The old code (cl_mouseAccelStyle 0) can be difficult to calibrate because if
|
||
|
you have a base sensitivity setup, as soon as you set a non zero acceleration
|
||
|
your base sensitivity at low speeds will change as well. The other problem
|
||
|
with style 0 is that you are stuck on a square (power of two) acceleration
|
||
|
curve.
|
||
|
|
||
|
The new code tries to solve both problems:
|
||
|
|
||
|
Once you setup your sensitivity to feel comfortable and accurate enough for
|
||
|
low mouse deltas with no acceleration (cl_mouseAccel 0), you can start
|
||
|
increasing cl_mouseAccel and tweaking cl_mouseAccelOffset to get the
|
||
|
amplification you want for high deltas with little effect on low mouse deltas.
|
||
|
|
||
|
cl_mouseAccel is a power value. Should be >= 1, 2 will be the same power curve
|
||
|
as style 0. The higher the value, the faster the amplification grows with the
|
||
|
mouse delta.
|
||
|
|
||
|
cl_mouseAccelOffset sets how much base mouse delta will be doubled by
|
||
|
acceleration. The closer to zero you bring it, the more acceleration will
|
||
|
happen at low speeds. This is also very useful if you are changing to a new
|
||
|
mouse with higher dpi, if you go from 500 to 1000 dpi, you can divide your
|
||
|
cl_mouseAccelOffset by two to keep the same overall 'feel' (you will likely
|
||
|
gain in precision when you do that, but that is not related to mouse
|
||
|
acceleration).
|
||
|
|
||
|
Mouse acceleration is tricky to configure, and when you do you'll have to
|
||
|
re-learn your aiming. But you will find that it's very much forth it in the
|
||
|
long run.
|
||
|
|
||
|
If you try the new acceleration code and start using it, I'd be very
|
||
|
interested by your feedback.
|
||
|
|
||
|
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:
|
||
|
|
||
|
#ifdef Q3_VM
|
||
|
typedef int intptr_t;
|
||
|
#else
|
||
|
#include <stdint.h>
|
||
|
#endif
|
||
|
|
||
|
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.
|
||
|
|
||
|
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_standalone 1 +set fs_game <yourgamedir>
|
||
|
|
||
|
in any links/scripts you install for your users to start the game. Note that
|
||
|
the com_standalone setting is rendered ineffective, if the binary detects pk3
|
||
|
files in the directory "baseq3", so you cannot use that one as game dir.
|
||
|
|
||
|
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.
|
||
|
|
||
|
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 fulfil. 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.
|
||
|
|
||
|
cl_guid Support
|
||
|
cl_guid is a cvar which is part of the client's USERINFO string. Its value
|
||
|
is a 32 character string made up of [a-f] and [0-9] characters. This
|
||
|
value is pseudo-unique for every player. Id's Quake 3 Arena client also
|
||
|
sets cl_guid, but only if Punkbuster is enabled on the client.
|
||
|
|
||
|
If cl_guidServerUniq is non-zero (the default), then this value is also
|
||
|
pseudo-unique for each server a client connects to (based on IP:PORT of
|
||
|
the server).
|
||
|
|
||
|
The purpose of cl_guid is to add an identifier for each player on
|
||
|
a server. This value can be reset by the client at any time so it's not
|
||
|
useful for blocking access. However, it can have at least two uses in
|
||
|
your mod's game code:
|
||
|
1) improve logging to allow statistical tools to index players by more
|
||
|
than just name
|
||
|
2) granting some weak admin rights to players without requiring passwords
|
||
|
|
||
|
Using HTTP/FTP Download Support (Server)
|
||
|
You can enable redirected downloads on your server even if it's not
|
||
|
an ioquake3 server. You simply need to use the 'sets' command to put
|
||
|
the sv_dlURL cvar into your SERVERINFO string and ensure sv_allowDownloads
|
||
|
is set to 1
|
||
|
|
||
|
sv_dlURL is the base of the URL that contains your custom .pk3 files
|
||
|
the client will append both fs_game and the filename to the end of
|
||
|
this value. For example, if you have sv_dlURL set to
|
||
|
"http://ioquake3.org", fs_game is "baseq3", and the client is
|
||
|
missing "test.pk3", it will attempt to download from the URL
|
||
|
"http://ioquake3.org/baseq3/test.pk3"
|
||
|
|
||
|
sv_allowDownload's value is now a bitmask made up of the following
|
||
|
flags:
|
||
|
1 - ENABLE
|
||
|
4 - do not use UDP downloads
|
||
|
8 - do not ask the client to disconnect when using HTTP/FTP
|
||
|
|
||
|
Server operators who are concerned about potential "leeching" from their
|
||
|
HTTP servers from other ioquake3 servers can make use of the HTTP_REFERER
|
||
|
that ioquake3 sets which is "ioQ3://{SERVER_IP}:{SERVER_PORT}". For,
|
||
|
example, Apache's mod_rewrite can restrict access based on HTTP_REFERER.
|
||
|
|
||
|
Using HTTP/FTP Download Support (Client)
|
||
|
Simply setting cl_allowDownload to 1 will enable HTTP/FTP downloads
|
||
|
assuming ioquake3 was compiled with USE_CURL=1 (the default).
|
||
|
like sv_allowDownload, cl_allowDownload also uses a bitmask value
|
||
|
supporting the following flags:
|
||
|
1 - ENABLE
|
||
|
2 - do not use HTTP/FTP downloads
|
||
|
4 - do not use UDP downloads
|
||
|
|
||
|
When ioquake3 is built with USE_CURL_DLOPEN=1 (default on some platforms),
|
||
|
it will use the value of the cvar cl_cURLLib as the filename of the cURL
|
||
|
library to dynamically load.
|
||
|
|
||
|
Multiuser Support on Windows systems
|
||
|
On Windows, all user specific files such as autogenerated configuration,
|
||
|
demos, videos, screenshots, and autodownloaded pk3s are now saved in a
|
||
|
directory specific to the user who is running ioquake3.
|
||
|
|
||
|
On NT-based such as Windows XP, this is usually a directory named:
|
||
|
"C:\Documents and Settings\%USERNAME%\Application Data\Quake3\"
|
||
|
|
||
|
Windows 95, Windows 98, and Windows ME will use a directory like:
|
||
|
"C:\Windows\Application Data\Quake3"
|
||
|
in single-user mode, or:
|
||
|
"C:\Windows\Profiles\%USERNAME%\Application Data\Quake3"
|
||
|
if multiple logins have been enabled.
|
||
|
|
||
|
In order to access this directory more easily, the installer may create a
|
||
|
Shortcut which has its target set to:
|
||
|
"%APPDATA%\Quake3\"
|
||
|
This Shortcut would work for all users on the system regardless of the
|
||
|
locale settings. Unfortunately, this environment variable is only
|
||
|
present on Windows NT based systems.
|
||
|
|
||
|
You can revert to the old single-user behaviour by setting the fs_homepath
|
||
|
cvar to the directory where ioquake3 is installed. For example:
|
||
|
ioquake3.exe +set fs_homepath "c:\ioquake3"
|
||
|
Note that this cvar MUST be set as a command line parameter.
|
||
|
|
||
|
SDL Keyboard Differences
|
||
|
ioquake3 clients have different keyboard behaviour compared to the original
|
||
|
Quake3 clients.
|
||
|
|
||
|
* "Caps Lock" and "Num Lock" can not be used as normal binds since they
|
||
|
do not send a KEYUP event until the key is pressed again.
|
||
|
|
||
|
* SDL > 1.2.9 does not support disabling dead key recognition. In order to
|
||
|
send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or
|
||
|
sometimes the same character again) after the character to send it on
|
||
|
many international keyboard layouts.
|
||
|
|
||
|
* The SDL client supports many more keys than the original Quake3 client.
|
||
|
For example the keys: "Windows", "SysReq", "ScrollLock", and "Break".
|
||
|
For non-US keyboards, all of the so called "World" keys are now supported
|
||
|
as well as F13, F14, F15, and the country-specific mode/meta keys.
|
||
|
|
||
|
On many international layouts the default console toggle keys are also dead
|
||
|
keys, meaning that dropping the console potentially results in
|
||
|
unintentionally initiating the keying of a dead key. Futhermore SDL 1.2's
|
||
|
dead key support is broken by design and Q3 doesn't support non-ASCII text
|
||
|
entry, so the chances are you won't get the correct character anyway.
|
||
|
|
||
|
If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This
|
||
|
is a space delimited list of key names that will toggle the console. The key
|
||
|
names are the usual Q3 names e.g. "~", "`", "c", "BACKSPACE", "PAUSE",
|
||
|
"WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal
|
||
|
number. Some example values for cl_consoleKeys:
|
||
|
|
||
|
"~ ` 0x7e 0x60" Toggle on ~ or ` (the default)
|
||
|
"WINDOWS" Toggle on the Windows key
|
||
|
"c" Toggle on the c key
|
||
|
"0x43" Toggle on the C character (Shift-c)
|
||
|
"PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys
|
||
|
|
||
|
Note that when you elect a set of console keys or characters, they cannot
|
||
|
then be used for binding, nor will they generate characters when entering
|
||
|
text. Also, in addition to the nominated console keys, Shift-ESC is hard
|
||
|
coded to always toggle the console.
|
||
|
|
||
|
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 -----
|
||
|
|
||
|
Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
|
||
|
mailing list (quake3-subscribe@icculus.org) and submit your patch there. The
|
||
|
best case scenario is that you submit your patch to bugzilla, and then post the
|
||
|
URL to the mailing list.
|
||
|
|
||
|
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. As
|
||
|
such ioq3 does not have any significant graphical enhancements and none are
|
||
|
planned at this time. However, improved graphics and sound patches will be
|
||
|
accepted as long as they are entirely optional, do not require new media and
|
||
|
are off by default.
|
||
|
|
||
|
|
||
|
--------------------------------------------- Building Official Installers -----
|
||
|
|
||
|
We need help getting automated installers on all the platforms that ioquake3
|
||
|
supports. We don't neccesarily care about all the installers being identical,
|
||
|
but we have some general guidelines:
|
||
|
|
||
|
* Please include the id patch pk3s in your installer, which are available
|
||
|
from http://ioquake3.org/patch-data/ subject to agreement to the id
|
||
|
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,
|
||
|
providing pak0.pk3 and the patch pk3s are not refered to or included in the
|
||
|
installer.
|
||
|
|
||
|
* Please include at least an SDL so/dylib/dll on every platform.
|
||
|
|
||
|
* Please include an OpenAL so/dylib/dll, since every platform should be using
|
||
|
it by now.
|
||
|
|
||
|
* Please contact the mailing list when you've made your installer.
|
||
|
|
||
|
* 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 -----
|
||
|
|
||
|
Maintainers
|
||
|
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>
|
||
|
|
||
|
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>
|