mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2025-02-16 09:11:11 +00:00
fixed "bug" where you can select opposite buttons for the same function like left and right arrow for turn left. now you can define only one button for the selected funktion.
This commit is contained in:
parent
4a2cd6fbe4
commit
942efa707b
13 changed files with 13 additions and 5233 deletions
|
@ -1,281 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
3150
engine/ChangeLog
3150
engine/ChangeLog
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
|||
http://wiki.ioquake3.org/NotToDo
|
739
engine/README
739
engine/README
|
@ -1,739 +0,0 @@
|
|||
,---------------------------------------.
|
||||
| _ _ ____ |
|
||||
| (_)___ __ _ _ _ __ _| |_____|__ / |
|
||||
| | / _ \/ _` | || / _` | / / -_)|_ \ |
|
||||
| |_\___/\__, |\_,_\__,_|_\_\___|___/ |
|
||||
| |_| |
|
||||
| |
|
||||
`---------- 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_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
|
||||
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_MUMBLE - enable Mumble support
|
||||
USE_VOIP - enable built-in VoIP support
|
||||
USE_INTERNAL_SPEEX - build internal speex library instead of dynamically
|
||||
linking against system libspeex
|
||||
USE_FREETYPE - enable FreeType support for rendering fonts
|
||||
USE_OLD_VM64 - use Ludwig Nussel's old JIT compiler implementation
|
||||
for x86_64
|
||||
USE_INTERNAL_ZLIB - build and link against internal zlib
|
||||
USE_INTERNAL_JPEG - build and link against internal JPEG library
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
|
||||
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_alInputDevice - which OpenAL input device to use
|
||||
s_alAvailableInputDevices - list of available OpenAL input 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
|
||||
sv_dlRate - bandwidth allotted to PK3 file downloads
|
||||
via UDP, in kbyte/s
|
||||
|
||||
com_ansiColor - enable use of ANSI escape codes in the tty
|
||||
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
|
||||
com_pipefile - Specify filename to create a named pipe
|
||||
through which other processes can control
|
||||
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
|
||||
|
||||
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 - 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
|
||||
video [filename] - start video capture (use with demo command)
|
||||
stopvideo - stop video capture
|
||||
stopmusic - stop background music
|
||||
minimize - Minimize the game and show desktop
|
||||
|
||||
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
|
||||
|
||||
which <filename/path> - print out the path on disk to a loaded item
|
||||
|
||||
execq <filename> - quiet exec command, doesn't print "execing file.cfg"
|
||||
|
||||
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")
|
||||
|
||||
tell <client num> <msg> - send message to a single client (new to server)
|
||||
|
||||
|
||||
--------------------------------------------------------- README for Users -----
|
||||
|
||||
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.
|
||||
|
||||
Help! Ioquake3 won't give me an fps of X anymore when setting com_maxfps!
|
||||
Ioquake3 now uses the select() system call to wait for the rendering of the
|
||||
next frame when com_maxfps was hit. This will improve your CPU load
|
||||
considerably in these cases. However, not all systems may support a
|
||||
granularity for its timing functions that is required to perform this waiting
|
||||
correctly. For instance, ioquake3 tells select() to wait 2 milliseconds, but
|
||||
really it can only wait for a multiple of 5ms, i.e. 5, 10, 15, 20... ms.
|
||||
In this case you can always revert back to the old behaviour by setting the
|
||||
cvar com_busyWait to 1.
|
||||
|
||||
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.
|
||||
|
||||
On a sidenote, downloading via UDP has been improved and yields higher data
|
||||
rates now. You can configure the maximum bandwidth for UDP downloads via the
|
||||
cvar sv_dlRate. Due to system-specific limits the download rate is capped
|
||||
at about 1 Mbyte/s per client, so curl downloading may still be faster.
|
||||
|
||||
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. Furthermore 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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------- README for Developers -----
|
||||
|
||||
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_basegame <yournewbase>
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Network protocols
|
||||
There are now two cvars that give you some degree of freedom over the reported
|
||||
protocol versions between clients and servers: "com_protocol" and
|
||||
"com_legacyprotocol".
|
||||
The reason for this is that some standalone games increased the protocol
|
||||
number even though nothing really changed in their protocol and the ioquake3
|
||||
engine is still fully compatible.
|
||||
|
||||
In order to harden the network protocol against UDP spoofing attacks a new
|
||||
network protocol was introduced that defends against such attacks.
|
||||
Unfortunately, this protocol will be incompatible to the original quake3 1.32c
|
||||
which is the latest official release from id.
|
||||
Luckily, ioquake3 has backwards compatibility, on the client as well as on the
|
||||
server. This means ioquake3 players can play on old servers just as ioquake3
|
||||
servers are able to service old clients.
|
||||
|
||||
The cvar "com_protocol" denotes the protocol version for the new hardened
|
||||
protocol, whereas the "com_legacyprotocol" cvar denotes the protocol version
|
||||
for the legacy protocol.
|
||||
If the value for "com_protocol" and "com_legacyprotocol" is identical, then
|
||||
the legacy protocol is always used. If "com_legacyprotocol" is set to 0, then
|
||||
support for the legacy protocol is disabled.
|
||||
|
||||
Mods that use a standalone engine obviously do not require dual protocol
|
||||
support, and it is turned off if the engine is compiled with STANDALONE per
|
||||
default. If you desire backwards compatibility to older versions of your
|
||||
game you can still enable it in q_shared.h by defining
|
||||
LEGACY_PROTOCOL.
|
||||
|
||||
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
|
||||
|
||||
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 (http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.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 necessarily 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 referred 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
|
||||
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>
|
||||
|
||||
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>
|
|
@ -1 +0,0 @@
|
|||
http://wiki.ioquake3.org/Ioquake3_Road_Map
|
|
@ -319,24 +319,15 @@ static bind_t g_bindings[] =
|
|||
{"+right", "turn right", ID_RIGHT, ANIM_TURNRIGHT, K_RIGHTARROW, -1, -1, -1},
|
||||
{"+strafe", "sidestep / turn", ID_STRAFE, ANIM_IDLE, K_ALT, -1, -1, -1},
|
||||
*/
|
||||
|
||||
/*
|
||||
{"+forward", "accelerate", ID_ACCEL, ANIM_WALK, K_UPARROW, -1, -1, -1},
|
||||
{"+back", "brake", ID_BRAKE, ANIM_BACK, K_DOWNARROW, -1, -1, -1},
|
||||
*/
|
||||
{"+forward", "accelerate", ID_ACCEL, ANIM_WALK, K_UPARROW, -1, -1},
|
||||
{"+back", "brake", ID_BRAKE, ANIM_BACK, K_DOWNARROW, -1, -1},
|
||||
{"+button14", "handbrake", ID_HANDBRAKE, ANIM_BACK, K_SPACE, -1, -1, -1},
|
||||
{"+speed", "turbo", ID_TURBO, ANIM_TURBO, K_SHIFT, -1, -1, -1},
|
||||
{"+moveup", "up", ID_MOVEUP, ANIM_JUMP, 'x', -1, -1, -1},
|
||||
{"+movedown", "down", ID_MOVEDOWN, ANIM_CROUCH, 'c', -1, -1, -1},
|
||||
{"+hud", "show HUD", ID_SHOWHUD2, 0, 'q', -1, -1, -1},
|
||||
{"+left", "turn left", ID_LEFT, ANIM_TURNLEFT, K_LEFTARROW, -1, -1},
|
||||
{"+right", "turn right", ID_RIGHT, ANIM_TURNRIGHT, K_RIGHTARROW, -1, -1},
|
||||
/*
|
||||
{"+left", "turn left", ID_LEFT, ANIM_TURNLEFT, K_LEFTARROW, -1, -1, -1},
|
||||
{"+right", "turn right", ID_RIGHT, ANIM_TURNRIGHT, K_RIGHTARROW, -1, -1, -1},
|
||||
*/
|
||||
{"+button12", "rear attack", ID_REARATTACK, ANIM_REARATTACK, K_KP_INS, -1, -1, -1},
|
||||
// END
|
||||
{"+lookup", "look up", ID_LOOKUP, ANIM_LOOKUP, K_PGDN, -1, -1, -1},
|
||||
|
@ -808,7 +799,7 @@ static void Controls_DrawKeyBinding( void *self )
|
|||
int b2;
|
||||
qboolean c;
|
||||
char name[32];
|
||||
char name2[32];
|
||||
// char name2[32];
|
||||
|
||||
a = (menuaction_s*) self;
|
||||
|
||||
|
@ -825,14 +816,15 @@ static void Controls_DrawKeyBinding( void *self )
|
|||
trap_Key_KeynumToStringBuf( b1, name, 32 );
|
||||
Q_strupr(name);
|
||||
|
||||
b2 = g_bindings[a->generic.id].bind2;
|
||||
if (b2 != -1)
|
||||
{
|
||||
trap_Key_KeynumToStringBuf( b2, name2, 32 );
|
||||
Q_strupr(name2);
|
||||
// b2 = g_bindings[a->generic.id].bind2;
|
||||
// if (b2 != -1)
|
||||
// {
|
||||
// trap_Key_KeynumToStringBuf( b2, name2, 32 );
|
||||
// Q_strupr(name2);
|
||||
|
||||
strcat( name, " or " );
|
||||
strcat( name, name2 );
|
||||
// strcat( name, " or " );
|
||||
strcat( name );
|
||||
// strcat( name, name2 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define BASETA "missionpack"
|
||||
|
||||
#ifndef PRODUCT_VERSION
|
||||
#define PRODUCT_VERSION "v0.0.0.4 r151"
|
||||
#define PRODUCT_VERSION "v0.0.0.4 r153"
|
||||
#endif
|
||||
|
||||
#define Q3_VERSION PRODUCT_NAME " " PRODUCT_VERSION
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
Quake III Arena GPL source release
|
||||
==================================
|
||||
|
||||
This file contains the following sections:
|
||||
|
||||
LICENSE
|
||||
GENERAL NOTES
|
||||
|
||||
LICENSE
|
||||
=======
|
||||
|
||||
See COPYING.txt for the GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Some source code in this release is not covered by the GPL:
|
||||
|
||||
IO on .zip files using portions of zlib
|
||||
-----------------------------------------------------------------------------
|
||||
lines file(s)
|
||||
4299 code/qcommon/unzip.c
|
||||
4546 libs/pak/unzip.cpp
|
||||
Copyright (C) 1998 Gilles Vollant
|
||||
zlib is Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
standard C library replacement routines
|
||||
-----------------------------------------------------------------------------
|
||||
lines file(s)
|
||||
1324 code/game/bg_lib.c
|
||||
Copyright (c) 1992, 1993
|
||||
The Regents of the University of California. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
ADPCM coder/decoder
|
||||
-----------------------------------------------------------------------------
|
||||
lines file(s)
|
||||
330 code/client/snd_adpcm.c
|
||||
Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The
|
||||
Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the names of Stichting Mathematisch
|
||||
Centrum or CWI not be used in advertising or publicity pertaining to
|
||||
distribution of the software without specific, written prior permission.
|
||||
|
||||
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
||||
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
|
||||
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
JPEG library
|
||||
-----------------------------------------------------------------------------
|
||||
code/jpeg-6
|
||||
libs/jpeg6
|
||||
Copyright (C) 1991-1995, Thomas G. Lane
|
||||
|
||||
Permission is hereby granted to use, copy, modify, and distribute this
|
||||
software (or portions thereof) for any purpose, without fee, subject to these
|
||||
conditions:
|
||||
(1) If any part of the source code for this software is distributed, then this
|
||||
README file must be included, with this copyright and no-warranty notice
|
||||
unaltered; and any additions, deletions, or changes to the original files
|
||||
must be clearly indicated in accompanying documentation.
|
||||
(2) If only executable code is distributed, then the accompanying
|
||||
documentation must state that "this software is based in part on the work of
|
||||
the Independent JPEG Group".
|
||||
(3) Permission for use of this software is granted only if the user accepts
|
||||
full responsibility for any undesirable consequences; the authors accept
|
||||
NO LIABILITY for damages of any kind.
|
||||
|
||||
These conditions apply to any software derived from or based on the IJG code,
|
||||
not just to the unmodified library. If you use our work, you ought to
|
||||
acknowledge us.
|
||||
|
||||
NOTE: unfortunately the README that came with our copy of the library has
|
||||
been lost, so the one from release 6b is included instead. There are a few
|
||||
'glue type' modifications to the library to make it easier to use from
|
||||
the engine, but otherwise the dependency can be easily cleaned up to a
|
||||
better release of the library.
|
||||
|
||||
|
||||
GENERAL NOTES
|
||||
=============
|
||||
|
||||
A short summary of the file layout:
|
||||
|
||||
code/ Quake III Arena source code ( renderer, game code, OS layer etc. )
|
||||
code/bspc bot routes compiler source code
|
||||
lcc/ the retargetable C compiler ( produces assembly to be turned into qvm bytecode by q3asm )
|
||||
q3asm/ assembly to qvm bytecode compiler
|
||||
q3map/ map compiler ( .map -> .bsp ) - this is the version that comes with Q3Radiant 200f
|
||||
q3radiant/ Q3Radiant map editor build 200f ( common/ and libs/ are support dirs for radiant )
|
||||
|
||||
While we made sure we were still able to compile the game on Windows, GNU/Linux
|
||||
and Mac, this build didn't get any kind of extensive testing so it may not work
|
||||
completely right. Whenever an id game is released under GPL, several projects
|
||||
start making the source code more friendly to nowaday's compilers and
|
||||
environements. If you are picking up this release weeks/months/years after we
|
||||
uploaded it, you probably want to look around on the net for cleaned up
|
||||
versions of this codebase as well.
|
|
@ -1,54 +0,0 @@
|
|||
##########################################################
|
||||
# Info about the MD4 format supported by the ioQ3 engine #
|
||||
##########################################################
|
||||
|
||||
All models included with the original version of Quake3 from id soft are in
|
||||
the MD3 format. Animations in this format are realized by saving the position
|
||||
of every vertex in each frame which can make these files pretty large.
|
||||
|
||||
ID started work on a newer format, the MD4 format which they never finished.
|
||||
This format uses a skeleton with all vertices "attached" to their bones.
|
||||
Because only the position of the bones must be stored for each frame and the
|
||||
number of bones is not very high this format is more efficient when
|
||||
doing animations.
|
||||
|
||||
Raven software "finished" this format originally started by ID and included
|
||||
it in their game EliteForce. They called their model format "MDR" which is
|
||||
the name I have used throughout the sourcecode and I will continue using in
|
||||
this readme. Since the code on how to handle those MDR files was released
|
||||
under a GPL licence a long time ago, I was able to implement this format for
|
||||
Quake3 and do some efficiency improvements.
|
||||
To enable the support for this model format, go to qcommon/qfiles.h,
|
||||
remove the comment slashes for #define RAVENMD4 and then compile the engine.
|
||||
|
||||
Including finished MDR models in your projects is easy: just load the model
|
||||
files in your cgame code as you would normally load an MD3 model. The engine
|
||||
will expect the models to have a ".mdr" suffix.
|
||||
The rest is pretty much the same: Selecting the current animation frame,
|
||||
adding a skin to the model, etc..
|
||||
You can check out the original eliteforce game sourcecode if you want to
|
||||
have examples on using the md4s. The source can be got at:
|
||||
http://eliteforce2.filefront.com/
|
||||
You can also get reference MDR files there, just go to the model/skin
|
||||
section there and pick something to download.
|
||||
|
||||
Now here comes the tricky part:
|
||||
Creating files with this format. There are tools to create these kinds of
|
||||
MDR files, like a plugin for Milkshape.
|
||||
|
||||
A pretty good overview about MDR file creation is available at
|
||||
http://synapse.vgfort.com/
|
||||
You can find some tools for creating MDR files there.
|
||||
|
||||
On a sidenote:
|
||||
There is an independent implementation of the MD4 file format available
|
||||
here:
|
||||
http://gongo.quakedev.com/
|
||||
At this time, ioquake3 has no support for these models though that may
|
||||
change in the future. Nevertheless, he has got a tool for skeletal
|
||||
animations that can possibly be hooked into the MDR format with some
|
||||
modifications.
|
||||
|
||||
|
||||
Good luck!
|
||||
- Thilo Schulz
|
|
@ -1,606 +0,0 @@
|
|||
Rend2
|
||||
<insert ascii art here>
|
||||
|
||||
Rend2 is an alternate renderer for ioquake3. It aims to implement modern
|
||||
features and technologies into the id tech 3 engine, but without sacrificing
|
||||
compatibility with existing Quake 3 mods.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
FEATURES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
- Compatible with most vanilla Quake 3 mods.
|
||||
- HDR Rendering, and support for HDR lightmaps
|
||||
- Tone mapping and auto-exposure.
|
||||
- Cascaded shadow maps.
|
||||
- Multisample anti-aliasing.
|
||||
- Texture upsampling.
|
||||
- Advanced materials support.
|
||||
- Advanced shading and specular methods.
|
||||
- sRGB support.
|
||||
- LATC and BPTC texture compression support.
|
||||
- Screen-space ambient occlusion.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
COMPILATION
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
For *nix/MinGW:
|
||||
|
||||
1. Download an appropriate version of the ioq3 source code. For version 32 of
|
||||
Rend2, r2328 should do, though the latest may work as well. For
|
||||
details on how to do this, see http://ioquake3.org/get-it/source-codes/ .
|
||||
|
||||
2. Copy the patch file (for v32, vbos-glsl-31a.diff) into the directory you put
|
||||
the ioq3 source code. There should be a README in that directory.
|
||||
|
||||
3. Run 'patch -p0 <vbos-glsl-31a.diff' then 'make'.
|
||||
|
||||
Compiling on different platforms and with different compilers hasn't been
|
||||
tested. The MSVC project file should work, but it hasn't been tested.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
INSTALLATION
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
For *nix:
|
||||
|
||||
1. This should be identical to installing ioq3. Check their README for more
|
||||
details.
|
||||
|
||||
|
||||
For Win32:
|
||||
|
||||
1. Have a Quake 3 install, fully patched.
|
||||
|
||||
2. Copy the following files into Quake 3's install directory:
|
||||
|
||||
ioquake3.x86.exe
|
||||
renderer_opengl1_x86.dll
|
||||
renderer_rend2_x86.dll
|
||||
|
||||
These can be found in build/release-mingw32-x86 after compiling, or bug
|
||||
someone to release binaries.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
RUNNING
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
1. Start ioquake3. (ioquake3.x86.exe on Win32)
|
||||
|
||||
2. Open the console (default key ~) and type '/cl_renderer rend2; vid_restart'
|
||||
|
||||
3. Enjoy.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
CVARS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Cvars for simple rendering features:
|
||||
r_ext_compressed_textures - Automatically compress textures.
|
||||
0 - No texture compression. (default)
|
||||
1 - DXT/LATC texture compression if
|
||||
supported.
|
||||
2 - BPTC texture compression if supported.
|
||||
|
||||
r_ext_framebuffer_multisample - Multisample Anti-aliasing.
|
||||
0 - None. (default)
|
||||
1-16 - Some.
|
||||
17+ - Too much!
|
||||
|
||||
r_ssao - Enable screen-space ambient occlusion.
|
||||
Currently eats framerate and has some
|
||||
visible artifacts.
|
||||
0 - No. (default)
|
||||
1 - Yes.
|
||||
|
||||
r_softOverbright - Enable software overbrighting. This enables
|
||||
overbrighting even in a window. Is disabled
|
||||
when r_toneMap 1 and r_hdr 1.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
Cvars for HDR and tonemapping:
|
||||
r_hdr - Do scene rendering in a framebuffer with
|
||||
high dynamic range. (Less banding, and
|
||||
exposure changes look much better)
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_cameraExposure - Cheat. Alter brightness, in powers of two.
|
||||
-2 - 4x as dark.
|
||||
0 - Normal. (default)
|
||||
0.5 - Sqrt(2)x as bright.
|
||||
2 - 4x as bright.
|
||||
|
||||
r_postProcess - Enable post-processing.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_toneMap - Enable tone mapping. Requires
|
||||
r_hdr and r_postProcess.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_forceToneMap - Cheat. Override built-in and map tonemap
|
||||
settings and use cvars r_forceToneMapAvg,
|
||||
r_forceToneMapMin, and r_forceToneMapMax.
|
||||
0 - No. (default)
|
||||
1 - Yes.
|
||||
|
||||
r_forceToneMapAvg - Cheat. Map average scene luminance to this
|
||||
value, in powers of two. Requires
|
||||
r_forceToneMap.
|
||||
-2.0 - Dark.
|
||||
-1.0 - Kinda dark. (default).
|
||||
2.0 - Too bright.
|
||||
|
||||
r_forceToneMapMin - Cheat. After mapping average, luminance
|
||||
below this level is mapped to black.
|
||||
Requires r_forceToneMap.
|
||||
-5 - Not noticeable.
|
||||
-3.25 - Normal. (default)
|
||||
0.0 - Too dark.
|
||||
|
||||
r_forceToneMapMin - Cheat. After mapping average, luminance
|
||||
above this level is mapped to white.
|
||||
Requires r_forceToneMap.
|
||||
0.0 - Too bright.
|
||||
1.0 - Normal. (default).
|
||||
2.0 - Washed out.
|
||||
|
||||
r_autoExposure - Do automatic exposure based on scene
|
||||
brightness. Hardcoded to -2 to 2 on maps
|
||||
that don't specify otherwise. Requires
|
||||
r_hdr, r_postprocess, and r_toneMap.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_forceAutoExposure - Cheat. Override built-in and map auto
|
||||
exposure settings and use cvars
|
||||
r_forceAutoExposureMin and
|
||||
r_forceAutoExposureMax.
|
||||
0 - No. (default)
|
||||
1 - Yes.
|
||||
|
||||
r_forceAutoExposureMin - Cheat. Set minimum exposure to this value,
|
||||
in powers of two. Requires
|
||||
r_forceAutoExpsure.
|
||||
-3.0 - Dimmer.
|
||||
-2.0 - Normal. (default)
|
||||
-1.0 - Brighter.
|
||||
|
||||
r_forceAutoExposureMax - Cheat. Set maximum exposure to this value,
|
||||
in powers of two. Requires
|
||||
r_forceAutoExpsure.
|
||||
1.0 - Dimmer.
|
||||
2.0 - Normal. (default)
|
||||
3.0 - Brighter.
|
||||
|
||||
r_srgb - Treat all input textures as sRGB, and do
|
||||
final rendering in a sRGB framebuffer. Only
|
||||
required if assets were created with it in
|
||||
mind.
|
||||
0 - No. (default)
|
||||
1 - Yes.
|
||||
|
||||
Cvars for advanced material usage:
|
||||
r_normalMapping - Enable normal mapping for materials that
|
||||
support it, and also specify advanced
|
||||
shading techniques.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
2 - Yes, and use Oren-Nayar reflectance
|
||||
model.
|
||||
3 - Yes, and use tri-Ace's Oren-Nayar
|
||||
reflectance model.
|
||||
|
||||
r_specularMapping - Enable specular mapping for materials that
|
||||
support it, and also specify advanced
|
||||
specular techniques.
|
||||
0 - No.
|
||||
1 - Yes, and use tri-Ace. (default)
|
||||
2 - Yes, and use Blinn-Phong.
|
||||
3 - Yes, and use Cook-Torrance.
|
||||
4 - Yes, and use Torrance-Sparrow.
|
||||
|
||||
r_deluxeMapping - Enable deluxe mapping. (Map is compiled
|
||||
with light directions.) Even if the map
|
||||
doesn't have deluxe mapping compiled in,
|
||||
an approximation based on the lightgrid
|
||||
will be used.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_parallaxMapping - Enable parallax mapping for materials that
|
||||
support it.
|
||||
0 - No. (default)
|
||||
1 - Yes.
|
||||
|
||||
Cvars for image interpolation and generation:
|
||||
r_imageUpsample - Use interpolation to artifically increase
|
||||
the resolution of all textures. Looks good
|
||||
in certain circumstances.
|
||||
0 - No. (default)
|
||||
1 - 2x size.
|
||||
2 - 4x size.
|
||||
3 - 8x size, etc
|
||||
|
||||
r_imageUpsampleMaxSize - Maximum texture size when upsampling
|
||||
textures.
|
||||
1024 - Default.
|
||||
2048 - Really nice.
|
||||
4096 - Really slow.
|
||||
8192 - Crash.
|
||||
|
||||
r_imageUpsampleType - Type of interpolation when upsampling
|
||||
textures.
|
||||
0 - None. (probably broken)
|
||||
1 - Bad but fast (default,
|
||||
FCBI without second derivatives)
|
||||
2 - Okay but slow (normal FCBI)
|
||||
|
||||
r_genNormalMaps - Naively generate normal maps for all
|
||||
textures.
|
||||
0 - Don't. (default)
|
||||
1 - Do.
|
||||
|
||||
Cvars for the sunlight and cascaded shadow maps:
|
||||
r_forceSun - Cheat. Force sunlight and shadows, using sun
|
||||
position from sky material.
|
||||
0 - Don't. (default)
|
||||
1 - Do.
|
||||
2 - Sunrise, sunset.
|
||||
|
||||
r_forceSunMapLightScale - Cheat. Scale map brightness by this factor
|
||||
when r_forceSun 1.
|
||||
0.5 - Default
|
||||
|
||||
r_forceSunLightScale - Cheat. Scale sun brightness by this factor
|
||||
when r_forceSun 1.
|
||||
0.5 - Default
|
||||
|
||||
r_forceSunAmbientScale - Cheat. Scale sun ambient brightness by this
|
||||
factor when r_forceSun 1.
|
||||
0.2 - Default
|
||||
|
||||
r_sunShadows - Enable sunlight and cascaded shadow maps for
|
||||
it on maps that support it.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_shadowFilter - Enable filtering shadows for a smoother
|
||||
look.
|
||||
0 - No.
|
||||
1 - Some. (default)
|
||||
2 - Much.
|
||||
|
||||
r_shadowMapSize - Size of each cascaded shadow map.
|
||||
256 - 256x256, ugly, probably shouldn't
|
||||
go below this.
|
||||
512 - 512x512, passable.
|
||||
1024 - 1024x1024, good. (default)
|
||||
2048 - 2048x2048, extreme.
|
||||
4096 - 4096x4096, indistinguishable from
|
||||
2048.
|
||||
|
||||
Cvars that you probably don't care about or shouldn't mess with:
|
||||
r_mergeMultidraws - Optimize number of calls to
|
||||
glMultiDrawElements().
|
||||
0 - Don't.
|
||||
1 - Do some. (default)
|
||||
2 - Do more than necessary (eats CPU).
|
||||
|
||||
r_mergeLeafSurfaces - Merge surfaces that share common materials
|
||||
and a common leaf. Speeds up rendering.
|
||||
0 - Don't.
|
||||
1 - Do. (default)
|
||||
|
||||
r_recalcMD3Normals - Recalculate the normals when loading an MD3.
|
||||
Fixes normal maps in some cases but looks
|
||||
ugly in others.
|
||||
0 - Don't. (default)
|
||||
1 - Do.
|
||||
|
||||
r_depthPrepass - Do a depth-only pass before rendering.
|
||||
Speeds up rendering in cases where advanced
|
||||
features are used. Required for
|
||||
r_sunShadows.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_normalAmbient - Split map light into ambient and directed
|
||||
portions when doing deluxe mapping. Not
|
||||
very useful.
|
||||
0 - Don't. (default).
|
||||
0.3 - 30% ambient, 70% directed.
|
||||
1.0 - 100% ambient.
|
||||
|
||||
r_mergeLightmaps - Merge the small (128x128) lightmaps into
|
||||
2 or fewer giant (4096x4096) lightmaps.
|
||||
Easy speedup.
|
||||
0 - Don't.
|
||||
1 - Do. (default)
|
||||
|
||||
r_shadowCascadeZNear - Near plane for shadow cascade frustums.
|
||||
4 - Default.
|
||||
|
||||
r_shadowCascadeZFar - Far plane for shadow cascade frustums.
|
||||
3072 - Default.
|
||||
|
||||
r_shadowCascadeZBias - Z-bias for shadow cascade frustums.
|
||||
-256 - Default.
|
||||
|
||||
|
||||
Cvars that have broken bits:
|
||||
r_dlightMode - Change how dynamic lights look.
|
||||
0 - Quake 3 style dlights, fake
|
||||
brightening. (default)
|
||||
1 - Actual lighting, no shadows.
|
||||
2 - Light and shadows. (broken)
|
||||
|
||||
r_pshadowDist - Virtual camera distance when creating shadow
|
||||
maps for projected shadows. Deprecated.
|
||||
|
||||
cg_shadows - Old shadow code. Deprecated.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
MATERIALS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Rend2 supports .mtr files, which are basically the same as .shader files, and
|
||||
are located in the same place, but override existing .shader files if they
|
||||
exist. This is to allow maps and mods to use the new material features without
|
||||
breaking the map when using the old renderer.
|
||||
|
||||
Here's an example of a material stored in one, showing off some new features:
|
||||
|
||||
textures/abandon/grass
|
||||
{
|
||||
qer_editorimage textures/abandon/grass.jpg
|
||||
{
|
||||
map textures/abandon/grass3_256_d.jpg
|
||||
rgbgen identity
|
||||
}
|
||||
{
|
||||
stage normalparallaxmap
|
||||
map textures/abandon/grass3_1024_n.png
|
||||
}
|
||||
{
|
||||
stage specularmap
|
||||
map textures/abandon/grass3_256_s.png
|
||||
specularReflectance 0.12
|
||||
specularExponent 16
|
||||
}
|
||||
{
|
||||
map $lightmap
|
||||
blendfunc GL_DST_COLOR GL_ZERO
|
||||
}
|
||||
}
|
||||
|
||||
The first thing to notice is that this is basically the same as old Quake 3
|
||||
shader files. The next thing to notice are the new keywords. Here is what
|
||||
they mean:
|
||||
|
||||
stage <type>
|
||||
- State how this imagemap will be used by Rend2:
|
||||
diffuseMap - Standard, same as no stage entry
|
||||
normalMap - Image will be used as a normal map
|
||||
normalParallaxMap - Image will be used as a normal map with
|
||||
alpha treated as height for parallax mapping
|
||||
specularMap - Image will be used as a specular map with
|
||||
alpha treated as shininess.
|
||||
|
||||
specularReflectance <value>
|
||||
- State how metallic this material is. Metals typically have a high
|
||||
specular and a low diffuse, so this is typically high for them, and low
|
||||
for other materials, such as plastic. For typical values for various
|
||||
materials, see http://refractiveindex.info , pick a material, then scroll
|
||||
down to the reflection calculator and look up its reflectance. Default
|
||||
is 0.04, since most materials aren't metallic.
|
||||
|
||||
specularExponent <value>
|
||||
- State how shiny this material is. Note that this is modulated by the
|
||||
alpha channel of the specular map, so if it were set to 16, and the alpha
|
||||
channel of the specular map was set to 0.5, then the shininess would be
|
||||
set to 8. Default 256.
|
||||
|
||||
An important note is that normal and specular maps influence the diffuse map
|
||||
declared before them, so materials like this are possible:
|
||||
|
||||
textures/terrain/grass
|
||||
{
|
||||
qer_editorimage textures/terrain/grass.jpg
|
||||
|
||||
{
|
||||
map textures/terrain/rock.jpg
|
||||
}
|
||||
{
|
||||
stage normalparallaxmap
|
||||
map textures/terrain/rock_n.png
|
||||
}
|
||||
{
|
||||
stage specularmap
|
||||
map textures/terrain/rock_s.jpg
|
||||
}
|
||||
{
|
||||
map textures/terrain/grass.jpg
|
||||
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
alphaGen vertex
|
||||
}
|
||||
{
|
||||
stage normalparallaxmap
|
||||
map textures/terrain/grass_n.png
|
||||
}
|
||||
{
|
||||
stage specularmap
|
||||
map textures/terrain/grass_s.png
|
||||
specularReflectance 0.12
|
||||
}
|
||||
{
|
||||
map $lightmap
|
||||
blendfunc GL_DST_COLOR GL_ZERO
|
||||
}
|
||||
}
|
||||
|
||||
Though note due to the complexity of lighting, dynamic light (including
|
||||
sunlight with cascaded shadow maps) currently only works 100% on materials like
|
||||
this, where the second diffuse map doesn't have its own alpha, and only
|
||||
uses vertex alpha. YMMV.
|
||||
|
||||
Another addition to materials is working normal/specular maps on vertex lit
|
||||
surfaces. To enable this, make your material look like this:
|
||||
|
||||
textures/vehicles/car
|
||||
{
|
||||
qer_editorimage textures/vehicles/car.jpg
|
||||
|
||||
{
|
||||
map textures/vehicles/car.jpg
|
||||
rgbGen vertexLit
|
||||
}
|
||||
{
|
||||
stage normalparallaxmap
|
||||
map textures/vehicles/car_n.jpg
|
||||
}
|
||||
{
|
||||
stage specularmap
|
||||
map textures/vehicles/car_s.jpg
|
||||
}
|
||||
}
|
||||
|
||||
Note the new keyword, 'vertexLit' after rgbGen. This is analogous to
|
||||
'rgbGen vertex', except a light direction will be determined from the lightgrid
|
||||
and used with the normal and specular maps. 'exactVertexLit' exists as well,
|
||||
and is the equivalent for 'exactVertex'.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
DYNAMIC SUNLIGHT AND CASCADED SHADOW MAPS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This adds a new keyword to sky materials, q3gl2_sun. The syntax is:
|
||||
|
||||
q3gl2_sun <red> <green> <blue> <intensity> <degrees> <mapLightScale>
|
||||
<ambientLightScale>
|
||||
|
||||
Note the first six parameters are the same as in q3map_sun or q3map_sunExt,
|
||||
and the last two indicate scaling factors for the map brightness and an ambient
|
||||
light of the same color as the sun.
|
||||
|
||||
There are currently two ways to use this in your own (and other people's) maps.
|
||||
|
||||
1. Create your map as normal and add a 'q3gl2_sun' line after your
|
||||
'q3map_sun' line in your sky material, like so:
|
||||
|
||||
textures/skies/bluesky
|
||||
{
|
||||
qer_editorimage textures/skies/bluesky.jpg
|
||||
|
||||
surfaceparm nomarks
|
||||
surfaceparm noimpact
|
||||
surfaceparm nolightmap
|
||||
surfaceparm sky
|
||||
q3map_sunExt 240 238 200 100 195 35 3 16
|
||||
q3gl2_sun 240 238 200 50 195 35 3 0.5 0.2
|
||||
q3map_skylight 50 16
|
||||
q3map_lightimage $whiteimage
|
||||
|
||||
skyparms env/bluesky - -
|
||||
}
|
||||
|
||||
The advantages with this method are that your map will continue to work
|
||||
with the old renderer with the sunlight baked into the lightmap, and it
|
||||
can be used with existing maps without recompilation. The downside is
|
||||
artifacts like doubled shadows and uneven shadow edges.
|
||||
|
||||
2. Use 'q3gl2_sun' instead of 'q3map_sun' or 'q3map_sunExt', like so:
|
||||
|
||||
textures/skies/bluesky
|
||||
{
|
||||
qer_editorimage textures/skies/bluesky.jpg
|
||||
|
||||
surfaceparm nomarks
|
||||
surfaceparm noimpact
|
||||
surfaceparm nolightmap
|
||||
surfaceparm sky
|
||||
q3gl2_sun 240 238 200 50 195 35 3 0.5 0.2
|
||||
q3map_skylight 50 16
|
||||
q3map_lightimage $whiteimage
|
||||
|
||||
skyparms env/bluesky - -
|
||||
}
|
||||
|
||||
The advantages with this method are that you don't get the artifacts that
|
||||
characterize the other method, and your map compiles a lot faster without
|
||||
the sunlight bouncing calculations. The downsides are that your map will
|
||||
not display properly with the old renderer, and you lose the bounced light
|
||||
that compiling the map with q3map_sun* in it would have.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
TONE MAPPING AND AUTO EXPOSURE
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This adds a new keyword to sky materials, q3gl2_tonemap. The syntax is:
|
||||
|
||||
q3gl2_tonemap <toneMapMin> <toneMapAvg> <toneMapMax <autoExposureMin>
|
||||
<autoExposureMax>
|
||||
|
||||
Each of these settings corresponds to a matching cvar, so you can view and
|
||||
adjust the effect before settling on fixed settings.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
THANKS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
I'd like to take this part of the readme to thank the numerous people who
|
||||
contributed thoughts, ideas, and whole swaths of code to this project.
|
||||
|
||||
- Id Software, for creating Quake 3 and releasing its source code under a
|
||||
GPL license, without which this project would not be possible.
|
||||
|
||||
- Zachary 'Zakk' Slater, Thilo Schulz, Tim Angus, and the rest of the
|
||||
ioquake3 team and contributors, for improving massively upon the raw Quake
|
||||
3 source, and accepting my and gimhael's modular renderer patch.
|
||||
|
||||
- Robert 'Tr3B' Beckebans and the other contributors to XReaL, for letting me
|
||||
liberally copy code from you. :)
|
||||
|
||||
- Andrew 'Black Monk' Prosnik, Andrei 'Makro' Drexler, Tomi 'T.T.I.' Isoaho,
|
||||
Richard 'JBravo' Allen, Walter 'Johnny Rocket' Somol, and the rest of the
|
||||
Boomstick Studios, for contributing code, feature requests, and testing.
|
||||
|
||||
- Yoshiharu Gotanda, Tatsuya Shoji, and the rest of tri-Ace's R&D Department,
|
||||
for creating the tri-Ace shading equations and posting their derivations in
|
||||
simple English.
|
||||
|
||||
- Matthias 'gimhael' Bentrup, for random ideas and bits of code.
|
||||
|
||||
- Evan 'megatog615' Goers, for testing, ideas, and bugging me just enough
|
||||
that I'd write documentation. :)
|
||||
|
||||
- The folks at #ioquake3, who don't seem to mind when I suddenly drop a
|
||||
screenshot and insist on talking about it. :)
|
||||
|
||||
- And lots of various other random people, who posted on forums, blogs, and
|
||||
Wikipedia, who helped in small but numerous ways.
|
||||
|
||||
If I missed you in this section, feel free to drop me a line and I'll add you.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
CONTACT
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
My name is James Canete, and I wrote most of this readme. Also, a renderer.
|
||||
|
||||
If you wish to get in touch with me, try my GMail at use.less01 (you should be
|
||||
able to solve this), or look for SmileTheory in #ioquake3 on irc.freenode.net.
|
|
@ -1,33 +0,0 @@
|
|||
Q3Rally Version History
|
||||
|
||||
|
||||
Q3Rally v0.0.0.3 (xx.xx.xxxx)
|
||||
|
||||
- Removed "Show Q3Rally Only" option, after last revision we only get q3rally servers.
|
||||
- Fixed requesting servers for a specific gametype (uses a dpmaster feature)
|
||||
- Fixed gamename shown in server browser (only race and race DM were correct)
|
||||
- Added support for five master servers in q3_ui (ported from ioq3)
|
||||
- Removed Mplayer stuff from q3_ui (was removed from ioq3)
|
||||
- Updated server browser to say UDP6 instead of IPX for ipv6 servers (ported from ioq3)
|
||||
- Removed out of date game binaries (they probably shouldn't be in svn at all).
|
||||
- Removed cvar ui_browserShowRallyOnly (no longer used after r77)
|
||||
- Added target_gravity from EntityPlus
|
||||
- Created function for GAMES_* to GT_*, it's only done in one place now. (ported from Turtle Arena r1517)
|
||||
- Unified version (mostly), update VERSION in Makefile and PRODUCT_VERSION in q_shared.h. Sets version everywhere instead of just qvms.
|
||||
- Modified 'not finished game' message in cg_rally_hud.c to be better English
|
||||
- Added CVAR_SYSTEMINFO to cvars that need it.
|
||||
- Changed SpecifyServer Menu to Q3Rally style, removed OpenArena graphics
|
||||
- Run scripts now run build command for you.
|
||||
- Run scripts now create links to game logic instead of telling user to copy them.
|
||||
- Use quake3-like gameversion. Fixes mismatch when server/client aren't both using qvm or dll/so.
|
||||
- prepared for own bots with custom skills.
|
||||
|
||||
Q3Rally v0.0.0.2 (26.07.2011)
|
||||
|
||||
- Updated func_rotating to EntityPlus Style
|
||||
- Updated func_train to EntityPlus style
|
||||
- Updates Func_door-rotating to EntityPlus Style
|
||||
|
||||
Q3Rally v0.0.0.1 (02.04.2011)
|
||||
|
||||
- First stable standalone version
|
|
@ -1,202 +0,0 @@
|
|||
ioquake3 VoIP support documentation.
|
||||
Last updated 6/25/2008 by Ryan C. Gordon.
|
||||
|
||||
There are two ways to use VoIP in ioquake3. You can either use Mumble as an
|
||||
external program, for which ioq3 now supplies some basic hooks, or you can
|
||||
use the new built-in VoIP support.
|
||||
|
||||
Mumble is here: http://mumble.sourceforge.net/ ... ioquake3 can supply it
|
||||
with your in-game position, but everything else is whatever features Mumble
|
||||
offers outside of the game. To use it, start Mumble before you start ioq3,
|
||||
and run the game with +set cl_useMumble 1. This should work on at least
|
||||
Linux, Mac OS X, and Windows, and probably other platforms Mumble supports
|
||||
in the future.
|
||||
|
||||
The built-in stuff offers tighter in-game integration, works on any platform
|
||||
that ioquake3 supports, and doesn't require anything more than a recent build
|
||||
of the game. The rest of this document is concerned with the built-in VoIP
|
||||
support.
|
||||
|
||||
|
||||
Quick start for servers:
|
||||
- run a recent build of ioquake3.
|
||||
- Make sure your network settings are set to broadband.
|
||||
|
||||
Quick start for clients:
|
||||
- run a recent build of ioquake3.
|
||||
- Make sure your network settings are set to broadband.
|
||||
- +set s_useOpenAL 1
|
||||
- \bind q "+voiprecord"
|
||||
- Hook up a microphone, connect to a VoIP-supporting server.
|
||||
- hold down 'q' key and talk.
|
||||
|
||||
|
||||
Cvars you can set:
|
||||
|
||||
sv_voip: set to "1" (the default) to enable server-side VoIP support. Set to
|
||||
"0" to disable. Without this, all VoIP packets are refused by the
|
||||
server, which means no one gets to use in-game VoIP.
|
||||
|
||||
cl_voip: set to "1" (the default) to enable client-side VoIP support. Set to "0"
|
||||
to disable. Without this, you will neither be able to transmit voice nor
|
||||
hear other people.
|
||||
|
||||
s_alCapture: set to "1" (the default) to have the audio layer open an OpenAL
|
||||
capture device. Without this set on sound startup, you'll never
|
||||
get bits from the microphone. This means you won't transmit, but
|
||||
you can still hear other people.
|
||||
|
||||
cl_voipSendTarget: a string: "all" to broadcast to everyone, "none" to send
|
||||
to no one, "attacker" to send to the last person that hit
|
||||
you, "crosshair" to send to the people currently in your
|
||||
crosshair, "spatial" to talk to all people in hearing
|
||||
range or a comma-separated list of client numbers, like
|
||||
"0,7,2,23" ... an empty string is treated like "spatial".
|
||||
You can also use a mixed string like
|
||||
"0, spatial, 2, crosshair".
|
||||
This is reset to "spatial" when connecting to a new server.
|
||||
Presumably mods will manage this cvar, not people, but
|
||||
keybind could be useful for the general cases. To send to
|
||||
just your team, or the opposing team, or a buddy list, you
|
||||
have to set a list of numbers.
|
||||
|
||||
cl_voipUseVAD: set to "1" to automatically send audio when the game thinks you
|
||||
are talking, "0" (the default) to require the user to manually
|
||||
start transmitting, presumably with a keybind.
|
||||
|
||||
cl_voipVADThreshold: only used if cl_voipUseVAD is "1" ... a value between
|
||||
0.0 and 1.0 that signifies the volume of recorded audio
|
||||
that the game considers to be speech. You can use this
|
||||
to trim out breathing or perhaps the sound of your
|
||||
fingers tapping the keyboard and only transmit audio
|
||||
louder than that. You will have to experiment to find the
|
||||
value that works best for your hardware and play style.
|
||||
The default is "0.25", with "0.0" being silence and "1.0"
|
||||
being pretty-darn-loud.
|
||||
|
||||
cl_voipSend: when set to "1", the game will capture audio from the microphone
|
||||
and transmit it, when "0", the game will not. The game can
|
||||
optimize for the "0" case (perhaps turning off audio recording).
|
||||
Lots of things set this on and off, including cl_voipUseVAD, so
|
||||
you probably should not touch this directly without knowing what
|
||||
you're doing, but perhaps mods can make use of it.
|
||||
|
||||
cl_voipGainDuringCapture: This is the volume ("gain") of audio coming out of
|
||||
your speakers while you are recording sound for
|
||||
transmission. This is a value between 0.0 and 1.0,
|
||||
zero being silence and one being no reduction in
|
||||
volume. This prevents audio feedback and echo and
|
||||
such, but if you're listening in headphones that
|
||||
your mic won't pick up, you don't need to turn down
|
||||
the gain. Default is 0.2 (20% of normal volume). You
|
||||
ABSOLUTELY want to make your speakers quiet when you
|
||||
record, if the microphone might pick it up!
|
||||
|
||||
cl_voipShowMeter: Set to "1" (the default) to show a volume meter as you are
|
||||
recording from the microphone, so you can see how well the
|
||||
game can "hear" you. Set to "0" to disable the display of
|
||||
the meter.
|
||||
|
||||
cl_voipCaptureMult: Multiply recorded audio by this value after denoising.
|
||||
Defaults to 2.0 to _double_ the volume of your voice.
|
||||
This is to make you more audible if denoising eats away
|
||||
too much data. Set this to 1.0 to get no change, less to
|
||||
be quieter.
|
||||
|
||||
|
||||
|
||||
Console commands:
|
||||
|
||||
voip ignore <clientnum>
|
||||
Turn off incoming voice from player number <clientnum>. This will refuse to
|
||||
play any incoming audio from that player, and instruct the server to stop
|
||||
sending it, to save bandwidth. Use unignore to reenable. This is reset to
|
||||
unignored when (re)connecting to a server.
|
||||
|
||||
voip unignore <clientnum>
|
||||
Turn on incoming voice from player number <clientnum>. This will start
|
||||
playing audio from this player again if you've previously done a "voip
|
||||
ignore", and instruct the server to start sending her voice packets to
|
||||
you again.
|
||||
|
||||
voip muteall
|
||||
Turn off all incoming voice. This will refuse to play any incoming audio,
|
||||
and instruct the server to stop sending it, to save bandwidth. Use
|
||||
unmuteall to reenable. This is reset to unmuted when (re)connecting to
|
||||
a server.
|
||||
|
||||
voip unmuteall
|
||||
Turn on incoming voice. This will start playing audio again if you've
|
||||
previously done a "voip muteall", and instruct the server to start
|
||||
sending voice packets to you again.
|
||||
|
||||
voip gain <clientnum> <gain>
|
||||
Sets the volume ("gain") for player number <clientnum> to <gain> ...
|
||||
A gain of 0.0 is silence, and 2.0 doubles the volume. Use this if someone
|
||||
is too quiet or too loud.
|
||||
|
||||
|
||||
|
||||
|
||||
Actions:
|
||||
|
||||
+voiprecord: The action you should bind to a key to record. This basically
|
||||
toggles cl_voipSend on and off. You don't need this if you're
|
||||
using cl_voipUseVAD, since that'll just record all the time and
|
||||
decide what parts of the recording are worth sending.
|
||||
|
||||
|
||||
|
||||
More detailed/technical info:
|
||||
|
||||
By default, all of this is enabled. You can build with or without VoIP
|
||||
support explicitly with USE_VOIP=[1|0] on the make command line.
|
||||
|
||||
You currently must use OpenAL to speak, as we have ALC_EXT_capture support
|
||||
in place to pull data from the microphone. If you are using the SDL backend,
|
||||
you can still hear people, but not speak.
|
||||
|
||||
There is no in-game UI to speak of: we encourage mods to add some. Largely
|
||||
they will just need to set cvars and run console commands for choosing
|
||||
voice targets and ignoring people, etc.
|
||||
|
||||
This requires patched builds to be useful, but remains network compatible with
|
||||
legacy quake3 clients and servers. Clients and servers both report in their
|
||||
info strings whether they support VoIP, and won't send VoIP data to those not
|
||||
reporting support. If a stray VoIP packet makes it to a legacy build, it will
|
||||
be ignored without incident.
|
||||
|
||||
VoIP packets are saved in demo files! You will be able to playback what you
|
||||
heard and what you said on VoIP-compatible clients. Legacy clients can also
|
||||
play demo files with VoIP packets in them, but just won't play the voice
|
||||
track. For VoIP-supported builds, it's nice to have a record of the
|
||||
trash-talk.
|
||||
|
||||
Data is processed using the Speex narrowband codec, and is cross-platform.
|
||||
Bigendian and littleendian systems can speak to each other, as can 32 and
|
||||
64-bit platforms.
|
||||
|
||||
Bandwidth: VoIP data is broken up into 20 millisecond frames (this is a Speex
|
||||
requirement), and we try to push up to 12 Speex frames in one UDP packet
|
||||
(about a quarter of a second of audio)...we're using the narrowband codec:
|
||||
8000Hz sample rate. In practice, a client should send about 2 kilobytes per
|
||||
second more when speaking, spread over about four bursts per second, plus a
|
||||
few bytes of state information. For comparison, this is less than the server
|
||||
sends when downloading files to the client without an http redirect. The
|
||||
server needs to rebroadcast the packet to all clients that should receive it
|
||||
(which may be less than the total connected players), so servers should
|
||||
assume they'll need to push (number of players speaking at once times number
|
||||
of people that should hear it) * 2 kilobytes per second. It shouldn't be a
|
||||
problem for any client or server on a broadband connection, although it may
|
||||
be painful for dialup users (but then again, everything is. They can just
|
||||
disable the cvar). The game will refuse to enable VoIP support if your have
|
||||
your network settings lower than "Cable/xDSL/LAN", just in case.
|
||||
|
||||
The initial VoIP work was done by Ryan C. Gordon <icculus@icculus.org>, and
|
||||
he can be contacted with technical questions, if the ioq3 mailing list or
|
||||
forums aren't helpful.
|
||||
|
||||
// end of voip-README.txt ...
|
||||
|
||||
|
||||
|
|
@ -861,10 +861,10 @@ q3rallycode
|
|||
1=engine\code\q3_ui\ui_rally_controls.c
|
||||
[Selected Project Files]
|
||||
Main=
|
||||
Selected=engine\code\q3_ui\ui_rally_controls.c
|
||||
Selected=engine\code\qcommon\q_shared.h
|
||||
[engine\code\qcommon\q_shared.h]
|
||||
TopLine=40
|
||||
Caret=39,58
|
||||
[engine\code\q3_ui\ui_rally_controls.c]
|
||||
TopLine=316
|
||||
Caret=81,335
|
||||
TopLine=800
|
||||
Caret=24,826
|
||||
|
|
Loading…
Reference in a new issue