2000-04-14 14:31:06 +00:00
|
|
|
<?PHP
|
|
|
|
$sitename = "The QuakeForge Project";
|
|
|
|
$pagename = "Speed Cheat Detection";
|
|
|
|
require("parts/library.php"); // Load function library
|
|
|
|
include("parts/head.php"); // Load the HEAD and open BODY
|
|
|
|
include("parts/topstrip.php"); // Display top strip
|
|
|
|
include("parts/titletable.php"); // Display main title w/ logos
|
|
|
|
?>
|
|
|
|
<TABLE width="100%" cellspacing=0 cellpadding=0 border=0>
|
|
|
|
<TR valign="top">
|
|
|
|
<?php
|
|
|
|
include("parts/menu.php"); // Import left-side menus
|
|
|
|
tableSpacer( 1, 9, 1, "black"); // Separate content from menus
|
|
|
|
?>
|
|
|
|
<TD width="100%">
|
|
|
|
<?php
|
|
|
|
$focused = "none"; // name of focused icon
|
|
|
|
include( "parts/topmain.php" ); // Display content top table
|
|
|
|
?>
|
|
|
|
<h3>How does it work?</h3>
|
|
|
|
<P>
|
|
|
|
The speed cheat works by the client lying to the server
|
|
|
|
about how much time has passed since the last packet
|
2000-04-14 14:33:39 +00:00
|
|
|
was sent. Therefore, the cheat detection is simple.
|
|
|
|
For a period of say, 30 seconds, QuakeForge 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.
|
2000-04-14 14:31:06 +00:00
|
|
|
<h3>Are there any problems with this?</h3>
|
|
|
|
<p>
|
|
|
|
Sadly the Windows QuakeWorld clients before 2.33 had a
|
|
|
|
bug in keeping track of time. 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 and several other factors can cause the time
|
|
|
|
reported by the client to be over the time the server
|
|
|
|
expects. Lag and packet loss are some of these factors.
|
|
|
|
<h3>Well, what can I do?</h3>
|
2000-04-14 14:34:34 +00:00
|
|
|
<p>
|
2000-04-14 14:31:06 +00:00
|
|
|
Recongnizing these concerns, we decided to make the
|
|
|
|
cheat detection adjustible for server admins. Here are
|
|
|
|
descriptions of some of the cvars that you can use to
|
|
|
|
configure cheat detection on your server.
|
|
|
|
<p>
|
|
|
|
<em>sv_timekick</em>: 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>
|
|
|
|
<em>sv_timekick_fuzz</em>: This cvar affects how strict
|
|
|
|
the protection is. The higher the number, the more
|
|
|
|
"fuzz" is applied, and the less strict the detection
|
|
|
|
code is. Raise this if your players are being kicked for
|
|
|
|
packet loss and lag. Default is 10, giving a fuzz factor
|
|
|
|
of about 1 percent.
|
|
|
|
<p>
|
|
|
|
<em>sv_timekick_interval</em>: 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 speedcheating
|
|
|
|
player can cause. Default is 30 seconds.
|
|
|
|
</TD>
|
|
|
|
<?php
|
|
|
|
tableSpacer( 1, 9, 1, "black");
|
|
|
|
?>
|
|
|
|
</TR>
|
|
|
|
<TR>
|
|
|
|
<TD COLSPAN="4">
|
|
|
|
<?php
|
|
|
|
include("parts/copyright.php");
|
|
|
|
?>
|
|
|
|
</TD>
|
|
|
|
</TR>
|
|
|
|
</TABLE>
|