The
question of the hour is... "Can a player cheat by
altering their clock, or adding time to their
clock?" And the answer is...
NO!!
Altering the clock cannot
occur. There are
several reasons for this, but to truly understand them, there
are a few concepts that you must first understand:
NOTE:
YOU MUST READ THIS ENTIRE DOCUMENT IF YOU REALLY WANT TO
UNDERSTAND THE ISSUE AT HAND.
1.
The Basics of Internet Communications
Here are a few basic terms
which are
important to know for understanding Internet
Communications and the clock phenomenon in ChessRally
you're about to learn about:
- Host -
A Host is the term used for a device on a network,
in this case, the Internet. The term
"host" is sometimes used interchangeably
with "node", but for the purpose of this
document, we will refer to only the term
"host". A host can be a computer
(like the one your using now), a router (a device
that directs traffic), a mainframe, etc. All
such devices are referred to as "hosts",
regardless of their purpose. If the device can
communicate on the network (Internet), it is called a "host".
- Client
- A client is a host that is making a connection to
a server.
- Server
- A server is a host that "listens" for
incoming clients, and when a client tries to connect
to the server, the server "hears" the
connection request and honors it or refuses it.
Whether Client or Server, both devices are
ultimately called "hosts" (above) and once
the connection is established are generally on
"equal terms".
- Packet
- A packet is a small chunk of data, usually 2
kilobytes or less in size. When you send an
email, for example, the email is deconstructed into many
packets, and each packet is transmitted from one
host to another, until all packets arrive at the
destination, where the packets are reconstructed
into your email transmission.
- Traffic
- Traffic is the whole of the packets zipping around
the network going between hosts. Sometimes, if
you notice the network seems slower than usual, this
is called "a lot of traffic". This
is just like driving a car... when there are lots of
cars out, there's "a lot of
traffic". Same concept. Different
objects.
- IP -
"Internet Protocol". IP is referred
to as a "transport protocol" and it is the
foundation of Internet communications. All
data that goes over the Internet is formatted in IP
packets.
- IP Address
- An IP Address is a number assigned to a unique
host on the Internet. The format for the
number is in four parts, an A field, a B field, a C
field, and a D field, all put together by periods,
so it is in the format of A.B.C.D. For
example, 123.24.145.12. Each field number can
range from 0 to 255. If you log onto the
Internet through a dial-up, your Internet Service
Provider will assign your computer an IP
address temporarily until you drop your
connection. Temporary IP addresses are called
"dynamic IP addresses". Public
servers on the Internet almost always have a unique
IP address for that computer alone, and these
addresses are called "static IP
addresses".
- TCP/IP
- "Transfer Control Protocol / Internet Protcol".
TCP/IP is a "gussied up" version of IP,
and has features built into it to manage the data
stream, so every single packet sent is ensured that
it will arrive at the destination, is intact, and is
in the right order in relation to other packets
involved in the transmission.
- Application
Protocol - An application protocol is the actual
data sent between hosts in a format that each other
understands. For example, the application
protocol of the web is HTTP (Hyper Text Transfer
Protocol). With HTTP, the client makes a
request of the server for a specific document.
The server replies with either the document or an
error. It's a very simple application
protocol. Other application protocols are FTP,
Telnet, etc. For ChessRally, we have designed
our own application protocol called CRP (ChessRally
Protocol). All of these application protocols
are transmitted over the Internet via IP (typically
TCP/IP).
- Message
- This is a term specific to the ChessRally
Protocol. Each group of data sent from one
host to another is called a
"message". Do not confuse this with
the end-user game terms "chat message" and
"private message", which are human to
human messages. In the world of
"ChessRally Under-The-Hood", a message is
a "transmission" containing a complete CRP
item.
It is important
to note that the Internet is comprised of millions of
hosts, all sending data back and forth over IP.
Because of the sheer magnitude of the number of hosts,
it is not practical (really, it's impossible) to
directly wire every host to every other host.
Instead, the hosts are only connected to their
"peer group" (usually a LAN), and a host on
the peer group (typically a router) is the
"interface" to the other hosts for other peer
groups. There are many levels to this topology (a
topology is a physical design of a network). As a
result of this topology, when a host wants to send data
to/from another host very far away, the data must pass
through a series of hosts until it reaches the
destination. If you do a "trace route" to
another host (The "tracert" command in your
Windows Command Prompt) it will show you what hosts your
data passes through to get to the destination.
Each step along the way is generally called a
"hop".
This is quite
significant, because "hopping around" slows
down the flow of data, which is incredibly important to
understanding the whole clock phenomenon. You
could send a 3 packets of data to another host, and the
1st might take 4 seconds to get to the destination, 2nd
might take 1 second, and the 3rd might take 40
seconds. This happens because the state of the
Internet and all the hosts is constantly changing, and
traffic is constantly fluctuating, causing 3 different
packets all coming from one host and going to the same
host to arrive at different times. Also, the three
packets in that example, may actually travel along
different routes. If a host that accepts packet
one suddenly gets busy, the packet may be redirected to
another host which can handle the traffic. In
doing so, the packets may all take dramatically
different routes, but they will all eventually arrive at the same
destination.
Therefore, when
your computer (the client) is connected to a ChessRally
Room Server (the server) and you're playing a
game. Each of your moves may take arbitrarily
longer and shorter times to arrive at your opponent's
computer. Vice Versa.
2.
The Basics of Internet Synchronization
Since the
Internet is by design very slow (at least in terms of
electronics), synchronization becomes a problem.
On the Internet today, there cannot be true
real time activities. We can simulate real
time, but due to the lack of speed across the Internet
and the lack of consistency, true real time
cannot yet exist. (And if anyone claims otherwise,
they're either trying to sell you something, or simply
don't know any better.)
For multimedia
on the Internet, the solution is buffering.
I'm sure you've watched a video clip or two, or at least
listened to an audio clip or two. When you do,
you'll notice that your media playing software will wait
a few seconds (sometimes as long as a minute or more)
before playing the media while it "buffers"
the data. Buffering is simply keeping a big chunk
of the data in store for easy access, then while you use
the stored (buffered) data, more data comes in to keep
the buffer full. Basically, it's a form of
intentional time delay, in order to keep your multimedia
running smoothly. This way, if the network gets
slow, you still have some unplayed media stored up,
which keeps playing until the buffer runs out... and the
idea is that the temporary slowness or outage will be
resolved and the buffer will be filled again before it
runs out.
All
synchronization on the Internet utilizes some form of
"time delay" because of the volatile nature of
the Internet. The same goes for ChessRally.
3.
The Clock Problem
For timed games
in ChessRally, buffering as such is not an option.
However, we still needed a way to ensure that each
player got the same exact amount of time for their moves
so the game would be fair. Also, according
to the FIDE Laws of Chess for computer play,
"network transmission time" must be accounted
for and not counted against either player, since while
data is in transit, it is really neither player's turn.
So, a couple of
options were considered...
A.
We could run the clocks from the server, which would
work, but the clocks on the client end would tick in a
VERY offbeat way... making people think the clock was
buggy, even though it would technically be
accurate. For example, consider the following
diagram:
Accurate
clock time displayed over time:
1
2 3
4 5
6 7 8
+-----+-----+-----+-----+-----+-----+-----+>>
(time in seconds)
Server
controlled clock time displayed over time
(possible results of network delay):
1
2
3
4 5
6 7 8
+-----+-----+-----+-----+-----+-----+-----+>>
(time in seconds)
As you can see
from the diagram, the server controlled clock would
appear "off" and "jumpy", although
the actual time represented would generally be
accurate. We didn't feel this was good because
most users would thing the game was "buggy" as
a result. So, we scrapped that idea. (Note
also that the above example is merely an example... the
fact is that it could be a little "neater"
than that, or it could be way, way worse... it depends
on network conditions, etc.)
B.
We could run the clocks from a central time server,
synchronizing the clocks at the beginning of a game, so
each players PC was in tune with the other. This
sounds great at first, but would open the game up to
cheating very easily, since it is so easy to change
one's own system clock. So, we scrapped that idea
very, very quickly.
C.
(Addendum, June 2005) We did also consider taking
approach "A", above, and then "smoothing
out" the clock results with a player's PC for
perceptual consistency. This would yield perfect
LOOKING clocks, but would not account for
time-in-transit, making it possible for someone to cheat
on time by lagging their connection to the Internet
while waiting for an opponent's move... and no one would
be the wiser, since the clocks would always LOOK
right... never mind the fact that it would make the
games incredibly unfair time-wise. This is
actually the approach that most chess sites and online
chess software venues take. They do it because
people don't complain about it if the clocks LOOK
right. However, this is also in direct violation
with the FIDE (World Chess Federation) handbook, which
requires that time-in-transit of networked games must be
accounted for, with neither player penalized for
it. The approach of such sites and services is
"what the user doesn't know can't hurt
them". We're a bit more honest than that, but
the downside is using the most accurate clocks is that
time-in-transit makes them LOOK wrong, and your total
game time will ALWAYS be more (sometimes MUCH more) than
the two player clocks combined, since it contains not
only player move time, but time-in-transit as
well. We are working on a new system which will
provide better estimation, in order to appease the many
players that simply do not understand why their opponent
seemed to have been given more time (even though, under
the hood, they did NOT) and assumed someone was
cheating. In v2.5, we made it so that the clock as
perceived by the one player would wait for an
acknowledgement from the other player's computer, and to
DELAY the starting of one's perceptual clock.
Unfortunately, in some cases, the acknowledgement (a
tiny packet) gets lost en route, and the clock never
starts... which makes EVERYONE believe "cheater
cheater!!!", while it not be the case.
Hopefully, in 2.6, we will be able to devise a new clock
system which will maintain the incredible accuracy of
the current clocks, but with much more "natural
looking" clock values so as not to alarm
anyone. In any case... up until (& including)
version 2.5, we have used a different solution...
4.
The Solution
To make it as
fair as possible, so each player gets exactly the time
they deserve, not a millisecond more, and not a
millisecond less... we came up with the idea for a
"decentralized" clock, where each player's own
computer manages his/her own respective playing
clock. This might sound at first like it leaves
the game open to cheating, but it really doesn't... each
player's clock is governed not by the system clock, but
by the High Performance Counter (HPC), which is accurate to
nanoseconds. The player's time is merely
"marked" at the beginning of their turn, then
a second "mark" is taken from the end of their
turn, and the difference is calculated to generate the
appropriate number seconds (accurate to the microsecond)
and that value is used as their "move
time". The clock that you see is being
updated by a standard timer, and is just an
estimate. The REAL clock is true to itself,
regardless of what shows on your display. In order
for someone to hypothetically cheat, they'd have to
somehow manipulate the values that the HPC timer
gets. However, this kind of counter can not
be tampered with. The HPC is based on
Processor (CPU) cycles, and not on a 24 hour
clock. Even if a player was an "uber
hacker" and smart enough to trigger the timer
manually (which in truth is quite impossible, but
hypothetically...), such manual triggering would increase
the clock count, shortening their time.
The reason it's not possible is because CPU cycle
tracking and the instruction pointer inside the CPU are
co-dependant, so if someone COULD mess with it, they'd
cause a system crash (or possibly even catastrophic
system failure) on their own computer.
Naturally, each
player's turn ONLY begins when their opponent's turn
ends, and their own turn ends when they move a piece
(and slap their clock button, which in ChessRally, is
the "Finish Turn" button, unless you have
"Single Step Turn Completion" enabled, then
you don't have to press "Finish Turn".)
On the Internet however, a player does not know when
their opponent's turn has ended until the "move
message" arrives from their opponent's computer, so
there is a piece of time that is "unaccounted
for" while the move message is transmitted between
hosts... and sometimes this "time in transit"
is quite significant - it can range from 40 milliseconds
all the way up to 4 minutes if both of the players are
on connections where routing to the game server is
extremely slow, or heavily obstructed. During this "time in transit", it
is neither player's turn since the opponent has already
finished their turn (from their perspective), but from
the player's perspective, the opponent still has the
move, since the "move message" has not yet
arrived. For that player, their own turn has not
yet begun. So, we have "dead time"
between the instant one player finished their turn and
the instant their opponent received it, thus starting their
turn.
To make sure the
system was fair, the move message is comprised of both a
player's move (piece, location, capture info, etc.), and
the exact time (in microseconds) it took to make that
move, from the time the player's computer received their
opponent's move message to the time the player completes
his/her own move. (Their own move is then
transmitted over the Internet as a move message to their
opponent.) Each copy of ChessRally then adds up
the time-of-move for each move of the game and
calculates each players clock accordingly. Both
player's clocks are handled in this same exact fashion.
For example, in
a 5 minute game (which is 300 seconds [and no time
bonus]), if "White Client" made 3 moves in the
game, and the moves took 1.234 seconds, 3.721 seconds,
and 0.781 seconds, respectively, and "Black
Client" made 2 moves in the game (it's black's turn
now, and so far, the move clock is at 0.456), which are
timed at 3.108 seconds and 1.583 seconds, respectively,
those times are added up by the game client (your copy
of ChessRally) and subtracted from the 5 minute
limit. Here's how that works:
Move |
White
Time |
Black
Time |
. |
1 |
1.234 |
3.108 |
. |
2 |
3.721 |
1.583 |
. |
3 |
+
0.781 |
+
0.456 |
<-Current |
. |
------------ |
------------ |
. |
Clock
Used-> |
5.736 |
5.147 |
. |
. |
. |
. |
. |
. |
White
Clock |
Black
Clock |
. |
Total
Clock |
300.000 |
300.000 |
. |
Clock
Used |
-
5.736 |
-
5.147 |
. |
. |
------------ |
------------ |
. |
Remaining-> |
294.264 |
294.853 |
. |
. |
. |
. |
. |
Clock
Shows->
(Rounded) |
00:04:54 |
00:04:55 |
. |
When an opponent
has the move, the player's computer does not yet not
what the "time-in-transit" was, and it will
not know that value until the opponent replies. So
when a player's copy of ChessRally doesn't know what the
exact value of the opponent's clock is, it shows the
clock as if the opponent received it immediately.
This seemed better than just freezing the opponent's
clock until they reply with a move, although it is a
rough estimate of what the opponent's clock really is.
In the case of
the above example, since it is Black's turn, on White's
computer, it shows MERELY AN ESTIMATE of
Black's clock based on the best available data.
However, this may be ahead of Black's actual clock by
anywhere from 0.5 seconds to 6 seconds (and on up to 30-60
in extreme cases). So, when Black finishes the
move, and White receives the move message, the clock for
the Black player on White's computer reads
"SYNC" for a moment, and then shows the corrected,
adjusted time. This is what gives the
appearance of one's opponent's clock getting extra
time. However, it is not actually getting
extra time at all. Your copy of ChessRally
is just adding the real actual time of the move to the
game, discarding the excess since it belongs to
"dead" network transmission time, and not to
any particular player's move.
PLEASE
NOTE: Your own clock will never need to be
synchronized on your own PC, since your own PC is
already in synch with your copy of the game. There
is no network transmission time to consider. This
is why your opponent's clock may seem to add time, but
your own clock does not. It is also why your own
player clock never reads "SYNC".
To further
illustrate the point, follow this timeline (top to
bottom) and watch what takes place during a game.
First, the White Client sends their move to the server,
starting the estimated Black Client's clock as it
appears on White Client's computer. (MM = Move
Message)
Actual
White Client's
Server Black
Client's
Seconds
Computer
Computer
00:00
+-------+-------+
+----+ +-------+-------+
|
Black | White | MM |
| | Black | White |
|
Clock | Clock | >> |
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
01:00 | 01:00 |
| | | 01:00 |
01:00 |
+-------+-------+
+----+ +-------+-------+
00:01
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock | | MM
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:59 | 01:00 |
| | | 01:00 |
01:00 |
+-------+-------+
+----+ +-------+-------+
00:02
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | MM | Black | White |
|
Clock | Clock |
| | >> | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:58 | 01:00 |
| | | 01:00 |
01:00 |
+-------+-------+
+----+ +-------+-------+
At this point,
the Black Client (right) has received White's Move
Message (MM), and so the Black Client's clock starts on
his/her own PC. (Note that the Black Clock on
White Client's Computer (left) is purely an estimate
since it doesn't know when the move will be received by
the Black Client's Computer, and is different than what
shows up on Black's own clock for him/herself.) It
is now officially Black's turn.
00:03
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:57 | 01:00 |
| | | 01:00 |
01:00 |
+-------+-------+
+----+ +-------+-------+
For the sake of
example, we're going to say Black took about 3 seconds
to take their move, so we're skipping to the point where
Black finishes his/her turn. Note also that
Black's "time of move" (3 seconds) is sent
with his/her move message. Also note that the
Black Clock on White Client's Computer is off now by
about 3 seconds as a result of network transmission
time, and that since Black is done with his/her move,
the White Clock on Black Client's Computer begins to
count down.
00:06
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:54 | 01:00 |
| | | 00:57 |
01:00 |
+-------+-------+
+----+ +-------+-------+
00:07
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | MM | Black | White |
|
Clock | Clock |
| | << | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:53 | 01:00 |
| | | 00:57 |
00:59 |
+-------+-------+
+----+ +-------+-------+
00:08
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock | | MM
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:52 | 01:00 |
| | | 00:57 |
00:58 |
+-------+-------+
+----+ +-------+-------+
00:09
+-------+-------+
+----+ +-------+-------+
|
Black | White | MM |
| | Black | White |
|
Clock | Clock | << |
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:51 | 01:00 |
| | | 00:57 |
00:57 |
+-------+-------+
+----+ +-------+-------+
OK, at this
point, notice that Black Clock on White Client's
Computer reads "SYNC". This is to alert
the White Client that the Black Clock as it appears on
White Client's Computer is being adjusted for the
correct "time of move" for Black, which was 3
seconds, not 10 seconds.
00:10
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
SYNC! | 01:00 |
| | | 00:57 |
00:56 |
+-------+-------+
+----+ +-------+-------+
Note that the
Black Clock on White Client's Computer is now adjusted
to read the correct clock for Black. Also, White's
clock is counting down, and notice the difference
between the clocks on the two clients.
00:11
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:57 | 00:59 |
| | | 00:57 |
00:55 |
+-------+-------+
+----+ +-------+-------+
OK, White takes
4 seconds to complete the move. However, due to unforeseen
network difficulties, the move message takes a very long
time to get to black. (Also, remember that Black's
Clock on White Client's Computer begins right away since
it doesn't know how long it will take to get to Black
Client - And that White Clock on Black Client's computer
is STILL running down, since it doesn't yet know that
white has moved.)
00:15
+-------+-------+
+----+ +-------+-------+
|
Black | White |MM |
| | Black | White |
|
Clock | Clock |>> |
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:57 | 00:55 |
| | | 00:57 |
00:51 |
+-------+-------+
+----+ +-------+-------+
00:20
+-------+-------+
+----+ +-------+-------+
|
Black | White | MM |
| | Black | White |
|
Clock | Clock | >> |
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:52 | 00:55 |
| | | 00:57 |
00:46 |
+-------+-------+
+----+ +-------+-------+
00:25
+-------+-------+
+----+ +-------+-------+
|
Black | White | MM |
| | Black | White |
|
Clock | Clock | >> |
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:47 | 00:55 |
| | | 00:57 |
00:41 |
+-------+-------+
+----+ +-------+-------+
00:30
+-------+-------+
+----+ +-------+-------+
|
Black | White | MM|
| | Black | White |
|
Clock | Clock | >>|
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:42 | 00:55 |
| | | 00:57 |
00:36 |
+-------+-------+
+----+ +-------+-------+
00:35
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock | | MM
| | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:37 | 00:55 |
| | | 00:57 |
00:31 |
+-------+-------+
+----+ +-------+-------+
00:40
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| |MM | Black | White |
|
Clock | Clock |
| |>> | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:32 | 00:55 |
| | | 00:57 |
00:26 |
+-------+-------+
+----+ +-------+-------+
00:50
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | MM | Black | White |
|
Clock | Clock |
| | >> | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:22 | 00:55 |
| | | 00:57 |
00:16 |
+-------+-------+
+----+ +-------+-------+
01:00
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | MM | Black | White |
|
Clock | Clock |
| | >> | Clock | Clock |
+-------+-------+
| |
+-------+-------+
|
00:12 | 00:55 |
| | | 00:57 |
00:06 |
+-------+-------+
+----+ +-------+-------+
At this point,
White Clock on Black Client's Computer has gone down to
zero, but it is not really at zero, it's just taking
forever for the Move Message to get to the Black
Client's Computer... so the White Clock on Black
Client's Computer goes to 00:00 and hovers there.
(Note that this does not end the game, as ending the
game by time expiration is claimed ONLY by the player's
computer who runs out of time.)
01:10
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | MM| Black | White |
|
Clock | Clock |
| | >>| Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:02 | 00:55 |
| | | 00:57 |
00:00 |
+-------+-------+
+----+ +-------+-------+
01:11
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:01 | 00:55 |
| | | 00:57 |
SYNC! |
+-------+-------+
+----+ +-------+-------+
Here, we have a classic
example of what people are seeing that makes them think
cheating is going on. The White Clock on Black
Client's Computer has JUMPED FROM 00:00 to 00:55!!
However, if you were following all this, you'd know this
was normal, expected behavior... after all, it
only did take White Client 4 seconds to make their
move... it just took a really long time to get to Black.
01:12
+-------+-------+
+----+ +-------+-------+
|
Black | White |
| | | Black |
White |
|
Clock | Clock |
| | | Clock |
Clock |
+-------+-------+
| |
+-------+-------+
|
00:00 | 00:55 |
| | | 00:57 |
00:55 |
+-------+-------+
+----+ +-------+-------+
So, let me restate
all this clearly and concisely... EACH PLAYER'S CLOCK IS
GOVERNED BY THEIR OWN PC IN A "NON-CHEATABLE"
WAY. EACH PLAYER'S OPPONENT'S CLOCK ON THEIR OWN
COMPUTER IS EITHER THE TIME FROM ALL THE OPPONENT'S
MOVES ADDED UP, OR AN ESTIMATE OF THE OPPONENT'S
TIME (IF IT IS CURRENTLY THE OPPONENT'S TURN).
The clocks are 100% accurate and fair this
way. Any visual discrepancies due to poor network
conditions are merely visual...
that is, it's an issue of perception, and it doesn't
really affect the game.
5.
Not convinced? Still think your opponent is
cheating the clock? Then consider the following
Q&A:
Q: Isn't the
Internet pretty much instantaneous for me? I'm on
a very fast connection! When I type a message in
ChessRally, it pops it RIGHT away. So the clocks
should be instantaneous too, right?
A:
Depends. As far as throughput is concerned,
broadband is great. (Cable, DSL, etc.) This
is not an issue of throughput/bandwidth, however, but an
issue of latency. Latency is the
time it takes for the data to get from one place to
another. Throughput/bandwidth, is how much data
can be pushed over the connection at one time. For
example, if you have a broadband connection to a server
on the planet Mars. (OK, clearly this is
hypothetical) To download a file, it might take a
couple of hours for the file to get to your computer,
BUT once it starts coming in, it comes in all at once
because you have a lot of bandwidth. To
make that example more realistic, you may find that
clicking on the download for ChessRally 2 takes a few
seconds to popup the download screen, but once you begin
downloading, it's quick. Well, the few seconds to
popup the download screen is because it took a few
seconds for the first bits of data to get to your
computer... that's latency. And latency
is the cause of the clock phenomenon. As far as
typing a chat message in ChessRally, if your connection
to the server is pretty solid with only a few hosts in
between you and the server, then sure, it might seem
fairly instantaneous... but two things: 1. Your opponent
may not be so lucky, and 2. The Internet is very
volatile. One message may be instantaneous, and
another might take a minute or two. Ideally, they
are all very, very quick, but that's not always the
case.
Q: Isn't it
possible for someone to cheat by adding time as if it
where a time bonus game?
A: No,
absolutely not. The bonus time functionality
(adding seconds per completed move) is calculated locally
on your own computer only. It is not
transmitted with the move messages. There is no
messaging interface for "notifying" of bonus
time. It is simply calculated after both player's
clocks have been calculated on your own PC. It is not
part of an actual player's clock time, but an
"after thought", added once the clock has been
calculated. Taking the above example of how
ChessRally calculates the clocks, I'll now illustrate
how bonus time is added:
Move |
White
Time |
Black
Time |
. |
1 |
1.234 |
3.108 |
. |
2 |
3.721 |
1.583 |
. |
3 |
+
0.781 |
+
0.456 |
<-Current |
. |
------------ |
------------ |
. |
Clock
Used-> |
5.736 |
5.147 |
. |
. |
. |
. |
. |
. |
White
Remain |
Black
Remain |
. |
Total
Clock |
300.000 |
300.000 |
. |
Clock
Used |
-
5.736 |
-
5.147 |
. |
. |
------------ |
------------ |
. |
Remaining-> |
294.264 |
294.853 |
. |
. |
. |
. |
. |
. |
White
Bonus |
Black
Bonus |
. |
Bonus
Time |
05.000 |
5.000 |
. |
Comp.
Moves |
x
3 |
x
2 |
. |
. |
------------ |
------------ |
. |
Total
Bonus-> |
15.000 |
10.000 |
|
. |
. |
. |
. |
. |
White
Clock |
Black
Clock |
. |
Remaining |
294.264 |
294.853 |
. |
Bonus |
+
15.000 |
+
10.000 |
. |
. |
------------ |
------------ |
. |
Clocks-> |
309.264 |
304.853 |
|
. |
. |
. |
. |
Clock
Shows->
(Rounded) |
00:05:09 |
00:05:05 |
. |
.Q:
I'm still not convinced. How can I tell if someone
is cheating on time?
A: Well, simply
put, in order to make the clock go up from
a previous confirmed value when their is no bonus
time (or in excess of the bonus time, if one is
present), then one of the time-of-moves for one of a
players move MUST BE NEGATIVE. For example,
if a player's moves take 2, 1, 3, then 4 seconds, their
expended time is 10 seconds. If on their next
move, it is 0 seconds (possible if < 0.5 seconds, and
happens with experienced blitz players or people with a
"fast mouse hand"), in any case, if it is 0
seconds on the next move, the expended time is 10
seconds, and the clock stays the same. If the new
time of move is > 0 (lets' say 2 seconds), then the
expended time is 12 seconds, causing the time remaining
on the clock to go down by 2 seconds. THE ONLY
WAY TO GET THE CLOCK TO "GIVE" TIME THAT IT
SHOULDN'T IS TO HAVE A TIME OF MOVE LESS THAN 0.
For example, if the time of move was -2 seconds, then
the total expended time would be 8 seconds, so the clock
would appear to go up. IF YOU DO NOT SEE A
NEGATIVE NUMBER FOR A TIME OF MOVE IN THE MOVE HISTORY,
THE PERSON DID NOT CHEAT.
|