mirror of
https://git.code.sf.net/p/quake/website
synced 2024-11-26 22:20:54 +00:00
9e6f75ccbd
PHP 7 doesn't like the old short tags we were using (it's possible to re-enable them, but won't be for version 8, so we might as well switch now), and the old MySQL APIs are now gone entirely, replaced with something different. This should make everything work at least as well as it used to. Also, one file used to be checked in with CRLF line endings. ??
57 lines
3 KiB
PHP
57 lines
3 KiB
PHP
<?php // Preamble
|
|
$pageName = "Speed/Time Cheat Protection";
|
|
require "parts/preamble.php"; // Load most of document
|
|
?>
|
|
<H4>How does it work?</H4>
|
|
<P>The "time cheat" relies on the client lying to the server
|
|
about how much time has passed since the last packet was sent. Knowing
|
|
this, detecting the time cheat is simple. For a period of say, 30 seconds,
|
|
the QuakeForge server adds up the times from all the movement packets
|
|
received from a specific client. If the client says that more then 30
|
|
seconds have passed in 30 seconds, a red flag is raised.
|
|
|
|
<H4>Are there any problems with this?</H4>
|
|
<P>Sadly, the Windows QuakeWorld clients before 2.33 had a bug in keeping
|
|
track of time (This is not really a bug in QuakeWorld, but Windows 95 and
|
|
98). The longer Windows is up, the faster time will seem to pass. While
|
|
there is not a noticeable speed boost from this until it has been up for
|
|
more then a day or so, it is detectable even after the system has been up
|
|
only a few hours.
|
|
|
|
<p>This, along with other factors including lag and packet loss, can cause
|
|
the time reported by the client to be over the time the server expects.
|
|
|
|
<H4>What can I do as a server admin?</H4>
|
|
<P>QuakeForge's cheat detection is adjustible within the server, so that
|
|
administrators can decide what settings work best. Here are descriptions
|
|
of some of the config variables ("cvars") that you can use to
|
|
configure time cheat detection on your server.
|
|
|
|
<P><STRONG>sv_timekick</STRONG>: This cvar controls the number of times a
|
|
player has to be caught "cheating" before they get kicked. sv_timekick
|
|
shows up in serverinfo if it is changed from the default. If
|
|
sv_timekick is less than 1, speed cheat detection is disabled. Default
|
|
is 3.
|
|
|
|
<P><STRONG>sv_timekick_fuzz</STRONG>: This cvar affects how strict the
|
|
protection is. The higher the number, the more "fuzz" gets applied,
|
|
and the less strict the detection code is. Raise this if your players
|
|
are being kicked for packet loss and lag. The values of this cvar are
|
|
in tenths of a percent. Default is 10, giving a fuzz factor of about
|
|
1 percent.
|
|
|
|
<P><STRONG>sv_timekick_interval</STRONG>: This cvar controls how often, in
|
|
seconds, the time tally is counted. Lowering this value increases the
|
|
chance of false positives, but helps to minimize the amount of damage
|
|
a time-cheating player can cause. Default is 30 seconds.
|
|
|
|
<H4>What can I do as a player?</H4>
|
|
<P>Obviously, we suggest using one of QuakeForge's QuakeWorld-compatible
|
|
clients (available in the <A href="/files.php">Downloads Section</A> of our
|
|
web site), none of which exhibit this problem. If you don't want to use
|
|
QuakeForge, you can use
|
|
<A href="http://www.quakeworld.net/files/quakeworld/qw233-0005.zip">QuakeWorld 2.33-005</A>,
|
|
the last "test release" before id Software released the source.
|
|
You can also use any of the QuakeWorld-compatible clients released by the
|
|
other engine projects, but of course we can't verify that any of them do
|
|
not exhibit the problem or even if they work.
|