Skip to content

Commit

Permalink
Revert protocol 69 pending further discussion (#4962)
Browse files Browse the repository at this point in the history
  • Loading branch information
Thilo Schulz committed Apr 27, 2011
1 parent 88693f9 commit d34c6b7
Show file tree
Hide file tree
Showing 12 changed files with 181 additions and 442 deletions.
252 changes: 106 additions & 146 deletions README
Expand Up @@ -214,15 +214,9 @@ New cvars
ipv6 servers on the local network
net_mcastiface - outgoing interface to use for scan

oldprotocol - when encountering a server/client that
only supports the version configured in
this cvar, ioquake3 will use the old and
less secure protocol from quake3 1.32c.
protocol - Allow changing protocol version
(startup only)

protocol - Allow changing protocol version that is
sent to the server (startup only)

r_allowResize - make window resizable (SDL only)
r_ext_texture_filter_anisotropic - anisotropic texture filtering
r_zProj - distance of observer camera to projection
Expand Down Expand Up @@ -283,8 +277,7 @@ New commands

which <filename/path> - print out the path on disk to a loaded item


--------------------------------------------------------- README for Users -----
------------------------------------------------------------ Miscellaneous -----

Using shared libraries instead of qvm
To force Q3 to use shared libraries instead of qvms run it with the following
Expand Down Expand Up @@ -312,109 +305,6 @@ Help! Ioquake3 won't give me an fps of X anymore when setting com_maxfps!
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.

Using HTTP/FTP Download Support (Client)
Simply setting cl_allowDownload to 1 will enable HTTP/FTP downloads
assuming ioquake3 was compiled with USE_CURL=1 (the default).
like sv_allowDownload, cl_allowDownload also uses a bitmask value
supporting the following flags:
1 - ENABLE
2 - do not use HTTP/FTP downloads
4 - do not use UDP downloads

When ioquake3 is built with USE_CURL_DLOPEN=1 (default on some platforms),
it will use the value of the cvar cl_cURLLib as the filename of the cURL
library to dynamically load.

Multiuser Support on Windows systems
On Windows, all user specific files such as autogenerated configuration,
demos, videos, screenshots, and autodownloaded pk3s are now saved in a
directory specific to the user who is running ioquake3.

On NT-based such as Windows XP, this is usually a directory named:
"C:\Documents and Settings\%USERNAME%\Application Data\Quake3\"

Windows 95, Windows 98, and Windows ME will use a directory like:
"C:\Windows\Application Data\Quake3"
in single-user mode, or:
"C:\Windows\Profiles\%USERNAME%\Application Data\Quake3"
if multiple logins have been enabled.

In order to access this directory more easily, the installer may create a
Shortcut which has its target set to:
"%APPDATA%\Quake3\"
This Shortcut would work for all users on the system regardless of the
locale settings. Unfortunately, this environment variable is only
present on Windows NT based systems.

You can revert to the old single-user behaviour by setting the fs_homepath
cvar to the directory where ioquake3 is installed. For example:
ioquake3.exe +set fs_homepath "c:\ioquake3"
Note that this cvar MUST be set as a command line parameter.

SDL Keyboard Differences
ioquake3 clients have different keyboard behaviour compared to the original
Quake3 clients.

* "Caps Lock" and "Num Lock" can not be used as normal binds since they
do not send a KEYUP event until the key is pressed again.

* SDL > 1.2.9 does not support disabling dead key recognition. In order to
send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or
sometimes the same character again) after the character to send it on
many international keyboard layouts.

* The SDL client supports many more keys than the original Quake3 client.
For example the keys: "Windows", "SysReq", "ScrollLock", and "Break".
For non-US keyboards, all of the so called "World" keys are now supported
as well as F13, F14, F15, and the country-specific mode/meta keys.

On many international layouts the default console toggle keys are also dead
keys, meaning that dropping the console potentially results in
unintentionally initiating the keying of a dead key. Futhermore SDL 1.2's
dead key support is broken by design and Q3 doesn't support non-ASCII text
entry, so the chances are you won't get the correct character anyway.

If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This
is a space delimited list of key names that will toggle the console. The key
names are the usual Q3 names e.g. "~", "`", "c", "BACKSPACE", "PAUSE",
"WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal
number. Some example values for cl_consoleKeys:

"~ ` 0x7e 0x60" Toggle on ~ or ` (the default)
"WINDOWS" Toggle on the Windows key
"c" Toggle on the c key
"0x43" Toggle on the C character (Shift-c)
"PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys

Note that when you elect a set of console keys or characters, they cannot
then be used for binding, nor will they generate characters when entering
text. Also, in addition to the nominated console keys, Shift-ESC is hard
coded to always toggle the console.

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
Expand Down Expand Up @@ -460,9 +350,6 @@ QuakeLive mouse acceleration (patch and this text written by TTimo from id)
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
Expand Down Expand Up @@ -519,7 +406,7 @@ Creating standalone games

+set com_homepath <homedirname>

to the command line. You can also control which kind of messages to send to
to the command line. Then you can control which kind of messages to send to
the master server:

+set sv_heartbeat <heartbeat> +set sv_flatline <flatline>
Expand Down Expand Up @@ -569,36 +456,6 @@ Creating standalone games
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: "protocol" and "oldprotocol".
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 fix a vulnerability in the network protocol as outlined in

http://aluigi.altervista.org/papers/q3noclient.txt

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 "protocol" denotes the protocol version for the new hardened
protocol, whereas the "oldprotocol" cvar denotes the protocol version for the
legacy protocol.
If the value for "oldprotocol" and "protocol" is identical, then the legacy
protocol is always used. If oldprotocol 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. You can enable it in q_shared.h if desired by defining
PROTOCOL_SUPPORT_OLD.

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
Expand All @@ -617,6 +474,109 @@ cl_guid Support
than just name
2) granting some weak admin rights to players without requiring passwords

Using HTTP/FTP Download Support (Server)
You can enable redirected downloads on your server even if it's not
an ioquake3 server. You simply need to use the 'sets' command to put
the sv_dlURL cvar into your SERVERINFO string and ensure sv_allowDownloads
is set to 1

sv_dlURL is the base of the URL that contains your custom .pk3 files
the client will append both fs_game and the filename to the end of
this value. For example, if you have sv_dlURL set to
"http://ioquake3.org", fs_game is "baseq3", and the client is
missing "test.pk3", it will attempt to download from the URL
"http://ioquake3.org/baseq3/test.pk3"

sv_allowDownload's value is now a bitmask made up of the following
flags:
1 - ENABLE
4 - do not use UDP downloads
8 - do not ask the client to disconnect when using HTTP/FTP

Server operators who are concerned about potential "leeching" from their
HTTP servers from other ioquake3 servers can make use of the HTTP_REFERER
that ioquake3 sets which is "ioQ3://{SERVER_IP}:{SERVER_PORT}". For,
example, Apache's mod_rewrite can restrict access based on HTTP_REFERER.

Using HTTP/FTP Download Support (Client)
Simply setting cl_allowDownload to 1 will enable HTTP/FTP downloads
assuming ioquake3 was compiled with USE_CURL=1 (the default).
like sv_allowDownload, cl_allowDownload also uses a bitmask value
supporting the following flags:
1 - ENABLE
2 - do not use HTTP/FTP downloads
4 - do not use UDP downloads

When ioquake3 is built with USE_CURL_DLOPEN=1 (default on some platforms),
it will use the value of the cvar cl_cURLLib as the filename of the cURL
library to dynamically load.

Multiuser Support on Windows systems
On Windows, all user specific files such as autogenerated configuration,
demos, videos, screenshots, and autodownloaded pk3s are now saved in a
directory specific to the user who is running ioquake3.

On NT-based such as Windows XP, this is usually a directory named:
"C:\Documents and Settings\%USERNAME%\Application Data\Quake3\"

Windows 95, Windows 98, and Windows ME will use a directory like:
"C:\Windows\Application Data\Quake3"
in single-user mode, or:
"C:\Windows\Profiles\%USERNAME%\Application Data\Quake3"
if multiple logins have been enabled.

In order to access this directory more easily, the installer may create a
Shortcut which has its target set to:
"%APPDATA%\Quake3\"
This Shortcut would work for all users on the system regardless of the
locale settings. Unfortunately, this environment variable is only
present on Windows NT based systems.

You can revert to the old single-user behaviour by setting the fs_homepath
cvar to the directory where ioquake3 is installed. For example:
ioquake3.exe +set fs_homepath "c:\ioquake3"
Note that this cvar MUST be set as a command line parameter.

SDL Keyboard Differences
ioquake3 clients have different keyboard behaviour compared to the original
Quake3 clients.

* "Caps Lock" and "Num Lock" can not be used as normal binds since they
do not send a KEYUP event until the key is pressed again.

* SDL > 1.2.9 does not support disabling dead key recognition. In order to
send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or
sometimes the same character again) after the character to send it on
many international keyboard layouts.

* The SDL client supports many more keys than the original Quake3 client.
For example the keys: "Windows", "SysReq", "ScrollLock", and "Break".
For non-US keyboards, all of the so called "World" keys are now supported
as well as F13, F14, F15, and the country-specific mode/meta keys.

On many international layouts the default console toggle keys are also dead
keys, meaning that dropping the console potentially results in
unintentionally initiating the keying of a dead key. Futhermore SDL 1.2's
dead key support is broken by design and Q3 doesn't support non-ASCII text
entry, so the chances are you won't get the correct character anyway.

If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This
is a space delimited list of key names that will toggle the console. The key
names are the usual Q3 names e.g. "~", "`", "c", "BACKSPACE", "PAUSE",
"WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal
number. Some example values for cl_consoleKeys:

"~ ` 0x7e 0x60" Toggle on ~ or ` (the default)
"WINDOWS" Toggle on the Windows key
"c" Toggle on the c key
"0x43" Toggle on the C character (Shift-c)
"PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys

Note that when you elect a set of console keys or characters, they cannot
then be used for binding, nor will they generate characters when entering
text. Also, in addition to the nominated console keys, Shift-ESC is hard
coded to always toggle the console.

PNG support
ioquake3 supports the use of PNG (Portable Network Graphic) images as
textures. It should be noted that the use of such images in a map will
Expand Down

0 comments on commit d34c6b7

Please sign in to comment.