Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cheating



From: Jason Fosback <jason.fosback@mccaw.com>:
> > I disagree.  In any sort of a multiuser game where actions of one
> > player can influence another the decision of what should reside on
> > the server and what should reside on the client is critical.  Why
> > open up yourself to problems before they exist?  LOS calculations
> > are not so excrutiatingly intensive that they _must_ be farmed out
> > to the clients.  If my client gets object A, and thus prevents you
> > from getting object A, and my client was computer controlled, you'd
> > be upset.  Now, I may be able to get object A before you do because
> > I can see that "tile X" is really a destructable wall, or just
> > because I can see the staircase leading up to the area where object
> > A exists.
> 

> Okay, but if the LOS calculations are done on the server, you have to
> transmit EVERYTHING THAT'S VISIBLE, every time you move.

That's just not so.  Under the protocol I posted a few days ago the  
server is only required to send squares and items which have recently  
come into view (as well as noting which ones have left).

> At minimum, the server would have to transmit an   on-off packet
> which would represent squares that're visible and squares which
> aren't, along   with new squares that have come into view.  If the
> client is aware of the map, either having it   locally or via
> transmission, it has all the information about the map already.  The
> only thing the   server has to send is updates in x, y coordinates
> for items and monsters.  All LOS calculation   and displaying of the
> map is done by the client, vastly reducing the load on the server, as
> well   as transmission over the wire.

Again, I disagree.  We have been over this terrain three or four times  
already in the last few days, but I guess I'm the only one who actually  
reads all the articles (it helps in replying).  Having LOS done on the  
client side both costs you huge latency every time you enter or leave a  
map even if you only move a few squares in it and requires the constant  
transmission to the client the location of every single moving monster  
in the entire map even if the player is standing still.  While either  
algorithm will win in some cases, it is debatable which algorithm gives  
the better performance on average.  Also it is clear that if you adopt  
client-side LOS we have to drop the 1-2 kBytes/second and 100-200 ms  
roundtrip minimum as many monster-rich maps will definitly become  
unplayable.

In addition client-side LOS requires that the client set LOS policy.   
Under it would have been complete impossible to add items like the  
helmet of xray-vision (or different vision for different races or  
infravision) without changing every single client.  Client-side LOS  
buys you all of that _and_ the cheating problem.

> If there is a concern about cheaters, the sysadmin can delete a
> user's character, or someone   could implement a forbid-type thing
> for users and/or hosts.  Just don't allow cheaters to play,   it's
> that simple.  Sure, you couldn't always detect cheating, but no one
> really can all the time,   can they?

There is absolutely _no_ reliable way to detect client omniscience  
cheating unless the prepetrator actually comes out to admit it which is  
rather unlikely if there are any penalties (like you propose) for it.   
Even worse, Greshams Law applies here as well and cheating clients will  
drive out honest clients until LOS is completely gone from crossfire.   
If that is what you want, an argument can be made for it, but at least  
lets decide on it now before we spend lots of man-hours implementing  
LOS which will be discarded anyway.

> It may not be really compute-intensive, but it forces more reliance
> on the server to do things.    We live in a distributed computing
> environment with computers that are more than capable of   sharing
> the load of computation.  So, why limit yourself so much?  Especially
> intentionally.  It   just doesn't make sense to me.

For all the reasons listed above.  Off loading computation to the  
client is a nice concept and in general I'm all for it (and I've argued  
quite strenously for it in other contexts here), but for LOS it just  
won't fly.

	Carl Edman