mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-27 06:13:01 +00:00
254 lines
12 KiB
Text
254 lines
12 KiB
Text
,------------------------------------------------------------------------------.
|
|
| _ _ __ _ ____ |
|
|
| (_)__ __ _ _| |_ _ ___ ___ _ _ __ _ / /_ _ _ _ __ _| |_____|__ / |
|
|
| | / _/ _| || | | || (_-<_/ _ \ '_/ _` |/ / _` | || / _` | / / -_)|_ \ |
|
|
| |_\__\__|\_,_|_|\_,_/__(_)___/_| \__, /_/\__, |\_,_\__,_|_\_\___|___/ |
|
|
| |___/ |_| |
|
|
| |
|
|
`------------------------------------------ http://icculus.org/quake3 ---------'
|
|
|
|
The intent of this project is to provide a baseline Quake 3 which may be used
|
|
for further development. Some of the major features currently implemented are:
|
|
|
|
* SDL backend for unix-like operating systems
|
|
* OpenAL sound API support (multiple speaker support and better sound
|
|
quality)
|
|
* Full x86_64 support on Linux
|
|
* 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 (see
|
|
http://icculus.org/quake3/?page=status)
|
|
* 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, using MinGW
|
|
1. Download and install MinGW and MSys from http://www.mingw.org/.
|
|
2. Download http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz
|
|
and untar it into your MinGW directory (usually C:\MinGW).
|
|
3. Open an MSys terminal, and follow the instructions for compiling on *nix.
|
|
|
|
For Windows, using MSVC
|
|
1. Run Visual Studio and open the quake3.sln file in the code/win32/msvc
|
|
directory.
|
|
2. Build.
|
|
3. Copy the resultant Quake3.exe to your quake 3 directory, make a backup if
|
|
you want to keep your original. If you wish to use native libraries, copy
|
|
the resultant dlls to your baseq3 directory.
|
|
|
|
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. After you
|
|
have successfully run this script cross compiling is simply a case of using
|
|
'./cross-make-mingw.sh' in place of 'make'.
|
|
|
|
If the make based build system is being used (i.e. *nix or MinGW), the
|
|
following variables may be set, either on the command line or in
|
|
Makefile.local:
|
|
|
|
OPTIMIZE - use this for custom CFLAGS
|
|
DEFAULT_BASEDIR - extra path to search for baseq3 and such
|
|
BUILD_SERVER - build the 'ioq3ded' server binary
|
|
BUILD_CLIENT - build the 'ioquake3' client binary
|
|
BUILD_CLIENT_SMP - build the 'ioquake3-smp' client binary
|
|
BUILD_GAME_SO - build the game shared libraries
|
|
BUILD_GAME_QVM - build the game qvms
|
|
USE_SDL - use the SDL backend where available
|
|
USE_OPENAL - use OpenAL where available
|
|
USE_OPENAL_DLOPEN - link with OpenAL at runtime
|
|
USE_CODEC_VORBIS - enable Ogg Vorbis support
|
|
USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
|
|
USE_CCACHE - use ccache compiler caching tool
|
|
COPYDIR - the target installation directory
|
|
|
|
The defaults for these variables differ depending on the target platform.
|
|
|
|
|
|
------------------------------------------------------------------ Console -----
|
|
|
|
New cvars
|
|
cl_autoRecordDemo - record a new demo on each map change
|
|
cl_aviFrameRate - the framerate to use when capturing video
|
|
cl_aviMotionJpeg - use the mjpeg codec when capturing video
|
|
|
|
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_alRolloff - the value of AL_ROLLOFF_FACTOR for each
|
|
source
|
|
s_alMaxSpeakerDistance - ET_SPEAKERS beyond this distance are
|
|
culled
|
|
s_alDriver - which OpenAL library to use
|
|
|
|
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
|
|
|
|
ttycon_ansicolor - enable use of ANSI escape codes in the tty
|
|
r_GLlibCoolDownMsec - wait for some milliseconds to close GL
|
|
library
|
|
com_altivec - enable use of altivec on PowerPC systems
|
|
s_backend - read only, indicates the current sound
|
|
backend
|
|
in_shiftedKeys - non-SDL Linux only. Enables binding to
|
|
shifted keys
|
|
cl_consoleHistory - read only, stores the console history
|
|
cl_platformSensitivity - read only, indicates the mouse input
|
|
scaling
|
|
r_ext_texture_filter_anisotropic - anisotropic texture filtering
|
|
|
|
New commands
|
|
video [filename] - start video capture (use with demo command)
|
|
stopvideo - stop video capture
|
|
|
|
|
|
------------------------------------------------------------ Miscellaneous -----
|
|
|
|
Using shared libraries instead of qvm
|
|
To force Q3 to use shared libraries instead of qvms run it with the following
|
|
parameters: +set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0
|
|
|
|
Using Demo Data Files
|
|
Copy demoq3/pak0.pk3 from the demo installer to your baseq3 directory. The
|
|
qvm files in this pak0.pk3 will not work, so you have to use the native
|
|
shared libraries or qvms from this project. To use the new qvms, they must be
|
|
put into a pk3 file. A pk3 file is just a zip file, so any compression tool
|
|
that can create such files will work. The shared libraries should already be
|
|
in the correct place. Use the instructions above to use them.
|
|
|
|
Please bear in mind that you will not be able to play online using the demo
|
|
data, nor is it something that we like to spend much time maintaining or
|
|
supporting.
|
|
|
|
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. See http://www.quakesrc.org/forums/viewtopic.php?t=5665 (if it
|
|
still exists when you read this) for more details.
|
|
|
|
|
|
------------------------------------------------------------- Contributing -----
|
|
|
|
Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
|
|
mailing list (quake3-subscribe@icculus.org) and submit your patch there. The
|
|
best case scenario is that you submit your patch to bugzilla, and then post the
|
|
URL to the mailing list. If you're too lazy for either method, then it would be
|
|
better if you emailed your patches to zakk@icculus.org directly than not at
|
|
all.
|
|
|
|
The focus for ioq3 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 icculus.org/
|
|
quake3 supports. We don't neccesarily care about all the installers being
|
|
identical, but we have some general guidelines:
|
|
|
|
* Please include the id patch pk3s in your installer, which are available
|
|
from http://icculus.org/quake3/?page=getdata subject to agreement to the id
|
|
EULA. Your installer shall also ask the user to agree to this EULA (which
|
|
is in the /web/include directory for your convenience) and subsequently
|
|
refuse to continue the installation of the patch pk3s and pak0.pk3 if they
|
|
do not.
|
|
|
|
* Please don't require pak0.pk3, since not everyone using the engine
|
|
plans on playing Quake 3 Arena on it. It's fine to (optionally) assist the
|
|
user in copying the file or tell them how.
|
|
|
|
* It is fine to just install the binaries without requiring id EULA agreement,
|
|
providing pak0.pk3 and the patch pk3s are not refered to or included in the
|
|
installer.
|
|
|
|
* Please include at least an SDL so/dylib on every platform but Windows
|
|
(which doesn't use it yet).
|
|
|
|
* Please include an OpenAL so/dylib/dll, since every platform should be using
|
|
it by now.
|
|
|
|
* We'll bump the version to 1.34 as soon as we get enough people who can
|
|
demonstrate a competent build for Windows and Mac.
|
|
|
|
* Please contact the mailing list and/or zakk@timedoctor.org after 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
|
|
Aaron Gyes <floam at sh dot nu>
|
|
Ludwig Nussel <ludwig.nussel@suse.de>
|
|
Ryan C. Gordon <icculus@icculus.org>
|
|
Tim Angus <tim@ngus.net>
|
|
Zachary J. Slater <zakk@timedoctor.org>
|
|
|
|
Significant contributions from
|
|
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>
|