website/speed_cheat.php

58 lines
3.0 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 &quot;time cheat&quot; 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 (&quot;cvars&quot;) 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 &quot;test release&quot; 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.