[MUD-Dev] Quake II has gone GPL
Vincent Archer
archer at frmug.org
Fri Jan 18 10:17:41 CET 2002
According to Frank Crowell:
> From: "Nicholas E. Walker" <new at gnu.org>
>> I am a free software bigot. I am also a good software bigot. If
>> you keep the hit-points or item list of my character stored in my
>> client, then I can and may change it, with or without the source
>> code. "If you want it done right, do it yourself." comes to mind
>> for when thinking about designing a system. I don't mean to
>> imply that any programmer will ever do anything right. If you
>> want something done securely, you should do it in a secure place.
> A lot of that information is on the server (tucked away in some
> database or secure object) and not on the client. The basic
> problem with current mud worlds -- all of them-- is that the
> character is private to that mud. This is a subject for another
> thread. But anyway, it fairly hard to edit your character when is
> really defined outside your system.
At first, this would seem fairly obvious. But, of course, that
depends on exactly how much your client does vs your server.
Two examples:
For economical reasons, Everquest's client does a LOT of
processing. The results of that processing is sent to the server,
who uses it to update its own states. After some validation
checks. Some.
Everquest has these items that are flagged NODROP (bad choice of
words, they're in fact NOTRADE; other games use NODROP to indicate
items that do not drop from your inventory when you die). If an
item is NODROP, you can't give it to another player.
Of course people found out that, if you edited the item status in
the client, and cleared the NODROP flag, well, suddendly, the
client would allow you to trade that item. Because the checks were
done only on the "can or cannot put item in trade window" code of
the client. No need (well, no apparent need) to do verification
twice.
Another thing that is common to these 3D games is the fact that
movement is continuous, not discrete. It's thus totally impossible
to send your movement commands to the server, and wait for the
resulting coordinate upgrade to come back: the resulting physics
for a character are totally alien to your personal experience
(people start moving only after a while, resist a lot direction
changes and can't be stopped easily. This works for a space
simulation, but not for a walking simulation).
So the client process your movement, and sends a string of
position updates to the server.
Well, given the vagaries of the Internet, it's perfectly possible
for a client to stop sending updates for a bunch of seconds, then
resume connection. It's therefore "better" to assume that you can
get discontinuous updates.
And suddendly Joe Cheater has discovered two different variables
in his client.
The first one is simple: running_speed. The speed at which the
client assumes Joe can run in any direction. Touch that variable,
and suddendly Joe goes twice faster than a galloping horse. No
monster can catch him, if the combat goes bad, he runs away faster
than a speeding bullet. It's no longer Joe, it's the Flash :)
The second set is even better: character_x & character_y. Now
suddendly Joe's no longer speeding around as a red blur, he can
instantaneously teleport to any place (within the zone). No need
for a boring walk, here I go.
I discovered a milder form of this by accident. I was jumped by a
bunch of monster during a packet congestion storm on my local
network. I started to run, the monster stayed in place bashing me -
since from the server POV, I wasn't moving yet. Packet storm
subsided, the updates from the client managed to get in... and
suddendly, I was "warped" away from the ennemies.
With the head start I got, I survived. Had I ran under normal
circumstances, they would have killed me easily.
Those two examples show why "the character is on the server, there's
not much players can do" isn't exactly right. There's a lot of
cheating that can go in the client.
--
Vincent Archer Email: archer at frmug.org
All men are mortal. Socrates was mortal. Therefore, all men are Socrates.
(Woody Allen)
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev
More information about the mud-dev-archive
mailing list