summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md667
1 files changed, 351 insertions, 316 deletions
diff --git a/README.md b/README.md
index a50026df..cf0f53e0 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ renamed to id-readme.txt so as to prevent confusion. Please refer to the
web-site for updated status.
---------------------------------------------- Compilation and installation -----
+# Compilation and installation
For *nix
1. Change to the directory containing this readme.
@@ -73,6 +73,7 @@ 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
@@ -108,13 +109,16 @@ Makefile.local:
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 -----
+# Console
-New cvars
+## 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
@@ -271,8 +275,11 @@ New cvars
cl_aviMotionJpeg is enabled
r_mode -2 - This new video mode automatically uses the
desktop resolution.
+```
+
+## New commands
-New commands
+```
video [filename] - start video capture (use with demo command)
stopvideo - stop video capture
stopmusic - stop background music
@@ -307,132 +314,150 @@ New commands
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:
---------------------------------------------------------- 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.
+Note that this cvar MUST be set as a command line parameter.
+
+## SDL Keyboard Differences
- * "Caps Lock" and "Num Lock" can not be used as normal binds since they
+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
+ * 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.
+ * 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.
+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:
+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
@@ -440,75 +465,79 @@ SDL Keyboard Differences
"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.
+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)
-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)
+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:
+New style is controlled with 3 cvars:
- sensitivity
- cl_mouseAccel
- cl_mouseAccelOffset
+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 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:
+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.
+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_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).
+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.
+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.
+If you try the new acceleration code and start using it, I'd be very
+interested by your feedback.
----------------------------------------------------- README for Developers -----
+# 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.
+## pk3dir
-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).
+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.
- Add the following code snippet to q_shared.h:
+## 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;
@@ -516,165 +545,168 @@ pk3dir
#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.
+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 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
-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.
+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?
+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:
+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
+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:
-
+
+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
+So clients requesting a server list will only receive servers that have a
+matching game name.
+
+Example line:
- 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.
+ +set com_basegame basefoo +set com_homepath .foo
+ +set com_gamename foo
- 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:
+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
+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
+ 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.
+## 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:
+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
+to
texturetypes="tga jpg png"
- Restart GtkRadiant and PNG textures are now available.
+Restart GtkRadiant and PNG textures are now available.
+
+## Building with MinGW for pre Windows XP
-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.
+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 -----
+# 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
@@ -689,7 +721,7 @@ accepted as long as they are entirely optional, do not require new media and
are off by default.
---------------------------------------------- Building Official Installers -----
+# 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,
@@ -722,25 +754,28 @@ but we have some general guidelines:
* Your installer will be mirrored to an "official" directory, thus making it
a done deal.
------------------------------------------------------------------- Credits -----
+
+# 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>
+
+ * 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/f88af076b5015c62b699968f6772c3a5 "githalytics.com")](http://githalytics.com/ioquake/ioq3)
+
+ * 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/f88af076b5015c62b699968f6772c3a5 "githalytics.com")](http://githalytics.com/ioquake/ioq3)