[MUD-Dev] TECH: Trusting Network Clients

Vincent Archer archer at frmug.org
Thu Aug 29 13:22:25 CEST 2002


According to Freeman, Jeff:

>> in which the client is not in the hands of the enemy. You have a
>> game with a manageable amount of cheating. You can harness a
>> tenth of the power of all of the clients to fully police them
>> all.
 
> I'd be interesting in hearing more about what sort of
> implementation you're talking about here.

At Nevrax, we had this same idea. We called it the "road police",
seeing as the only thing we really have to trust the client on is
movement. Due to the vagaries of network, when people move in a 3D
environment, it's entirely possible that a couple of packets get
lost from time to time.

In that case, you have two choices: either the server has to
validate each step, in which case, a lag causes a "molasses" effect
(you get stuck in place), which is not good for the immersion, or
the server must accept all your movements and allow the client to
move freely, notifying him of where he is (which, for short lag
periods, is transparent).

In the latter case, all clients "that can" (loose term) check also
the movement updates they get from other clients. If the movements
fall outside of the "allowed envelope" (i.e. the shortest path
possible from A to B), the client reports the speed offender to the
server. A couple of violations and the client is assumed to use a
speed cheat.

I'd call it myself the "informer" method, but "road police" it was.

> I see it as sort of like the airline industry: They don't know who
> the terrorists are, so they search *all* the luggage.  If they
> could just search the terrorist's luggage and leave everyone else
> alone, they'd do that.  But they can't.  And there's no way to
> make it so that the good people's luggage keeps an eye out for the
> bad people's luggage, because luggage doesn't have eyes.  Ok, so
> that analogy broke-down.

My own metaphor for "the client is in the hand of the ennemy" is
that of a spy network. Your server is the country, which maintains a
large network of spies abroad, in hostile countries. The operatives
provide you information, and need themselves some information to do
their job.  However, the country may have counterintelligence at
work. So, any of your spies can have become a double agent. Maybe he
can notify you he's got caught ("hack detectors" built in the agent
code), maybe not.

So you need to trust what they say as little as possible, and do
cross-checking whenever possible. And you need to tell them as few
things as possible, for fear all of that data is going to land on
the ennemy's desk. And, if you're convinced he's no longer acting
for you, then you cut your ties.

> But anyway, I don't understand the concept of clients policing
> other clients.  Since all of the clients communicate with one
> another via the server, why wouldn't you just put the policing on
> the server?

Depend on what. If the checks are really CPU intensive, it might be
unpractical to check everyone everytime. So, you check only a couple
people some of the time, and your informers (the client PC, who have
CPU to spare) tell you who to watch.

--
	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