summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2014-06-17 17:46:42 +0100
committerTim Angus <tim@ngus.net>2014-06-17 17:46:42 +0100
commit7426441a5bc9c4eaf28a7f64a22df8bdaa71162c (patch)
tree5af7e3a82338b05529e83d8672fd8e03a2af4fe8
parent77c45fa12305eb8c977c5c7803f6cb1f24ce4ec4 (diff)
Remove ioq3 README.md
-rw-r--r--README.md786
1 files changed, 0 insertions, 786 deletions
diff --git a/README.md b/README.md
deleted file mode 100644
index 35b72fe3..00000000
--- a/README.md
+++ /dev/null
@@ -1,786 +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://icculus.org/gtkradiant/.
-
-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. Your
-distribution may have mingw32 packages available. On debian/Ubuntu, you need to
-install 'mingw-w64'. Thereafter cross compiling is simply a case running
-'PLATFORM=mingw32 ARCH=x86 make' in place of 'make'. ARCH may also be set to
-x86_64.
-
-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_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_CODEC_OPUS - enable Ogg Opus 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_INTERNAL_ZLIB - build and link against internal zlib
- USE_INTERNAL_JPEG - build and link against internal JPEG library
- USE_INTERNAL_OGG - build and link against internal ogg library
- USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
- USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
- DEBUG_CFLAGS - C compiler flags to use for building debug version
- COPYDIR - the target installation directory
- TEMPDIR - specify user defined directory for temp files
-```
-
-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
- togglemenu - causes escape key event for opening/closing menu, or
- going to a previous menu. works in binds, even in UI
-
- 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
-
-## pk3dir
-
-ioquake3 has a useful new feature for mappers. Paths in a game directory with
-the extension ".pk3dir" are treated like pk3 files. This means you can keep
-all files specific to your map in one directory tree and easily zip this
-folder for distribution.
-
-## 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.
-
-## Standalone game licensing
-
-While a lot of work has been put into ioquake3 that you can benefit from free
-of charge, it does not mean that you have no obligations to fulfill. Please be
-aware that as soon as you start distributing your game with an engine based on
-our sources we expect you to fully comply with the requirements as stated in
-the GPL. That includes making sources and modifications you made to the
-ioquake3 engine as well as the game-code used to compile the .qvm files for
-the game logic freely available to everyone. Furthermore, note that the "QIIIA
-Game Source License" prohibits distribution of mods that are intended to
-operate on a version of Q3 not sanctioned by id software:
-
- "with this Agreement, ID grants to you the non-exclusive and limited right
- to distribute copies of the Software ... for operation only with the full
- version of the software game QUAKE III ARENA"
-
-This means that if you're creating a standalone game, you cannot use said
-license on any portion of the product. As the only other license this code has
-been released under is the GPL, this is the only option.
-
-This does NOT mean that you cannot market this game commercially. The GPL does
-not prohibit commercial exploitation and all assets (e.g. textures, sounds,
-maps) created by yourself are your property and can be sold like every other
-game you find in stores.
-
-## 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>
-
-
-[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/6d196bd663b47049a25dcb8caef95949 "githalytics.com")](http://githalytics.com/ioquake/ioq3)