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

Re: client server part 1



Mark Wedel writes:
>  I don't see how using absolute map coordinates enable the client to cheat.  Information

One thing about absolute cordinates. If player is using client that
leaves all the map information to the screen then it may look quite
fanny because quite many maps have multiple "floors" in one file. Also
player can quess that there cannot be any secret doors to that way
because it is so close to zero etc.

If the protocol uses relative cordinates then the server would need
some way to tell the client when player is moved to new map, so it may
discard (or save to local disk) the old "seen" stuff. If the server
also identifies different maps differently the client may save some
kind of memory of the old map for example saving overall information
about walls and floors to local disk and showing them as grayed out on
the screen. 

> And if data would block, what do we do?  Buffer the data for a future
> write?  This would be a pain.  32K is a pretty big buffer - it
> should only be a problem if we have really poor net
> connectivity.  No matter what, in some case, there is some point where
> the server just can not send data to a client that is so slow.

If the buffer fills up, just clear it and send "RESET" command to
client and mark connection to be in reset-state. When client receives
"RESET" it will send "REFRESH" command to server that will send
current map- and object-info to client and clear the reset-state. Then
server start sending new stuff to client again. This way other players
aren't slowed down, but the player that is behind slow link, just
misses some screen updates. If the connection is doing RESET/REFRESH
all the time then the player quite soon notices that his/her link is
too slow. If it is doing only when something big happens (like several
area effect spells fired again and again), then the things will clear
out when the situation is over. Player can send commands to server all
the time, but the effects of those command cannot be seen because
server isn't sending any updates.

I thing RESET / REFRESH would be good anyway, so when player notices
that there is some garbage on screen (bug somewhere) he/she may hit
refresh button and get all data again, or if client notices that it
has messed up its info it may get it again. This can also be used in
error recovery. 
-- 
Tero.Kivinen@hut.FI              	     Work : +358-0-451 4032
Magnus Enckellin kuja 9 K 19, 02610, Espoo   Home : +358-0-502 1573