[MUD-Dev] Net protocols for MUDing (was: Moore's Law sucks)

Adam Wiggins nightfall at user1.inficad.com
Sun Mar 1 15:10:17 CET 1998


[Chris Gray:]
> [Vadim Tkachenko:]
> :That's what I'm saying - don't make anything appear as final until all
> :the conflicts and lags are resolved - in the above example, the ship
> :wouldn't appear to explode and then cancel, but will just have some
> :sparks around it for a while, which will cease if it turns out there
> :were no actual damages.
> 
> So the server would have to evaluate all possible paths from each instant
> (based on all possible inputs from all players that have not yet been
> received), and if any of them yielded different results, indicate so
> on the displays of all non-lagged clients? Expensive! Complicated!

No, the server doesn't process anything it hasn't received.  We're assuming
here that the server is considered, for all purposes, 100% correct all the
time.  (At least, if we lay aside my crazy ideas about packet insertation
into the time line.)

The clients do all the same processing as the server, the difference is that
they only have a small subset of the total objects from the server game world
in memory to process through - those directly nearby the player.  They may
determine that a collision has occurred between two ships and cause sparking,
"collision imminent" warnings to the pilots, etc - but will not destroy any
ships or display any actual collisions until the server sends the event.
How you want to implement this sort of actuality masquerading depends on your
theme.  For instance, naval battles circa 1800 would work well, because the
ships move slowly and are difficult to turn, thus lagging connections and even
dropped packets would have little effect on how the game looks to the player.
The only difference might be that two colliding ships seem to merge together
for a moment until the actual collision message is received, at which point
the cracking timbers sound begins and whatever animations are going to take
place actually occur.

So here's a question to you, Chris, and all those that have remained silent
on this thus far: which do you prefer - a client whose speed is directly
proportional to the speed of your internet connection so that you can rely
on every client always being 100% "correct", or one which runs at its own
framerate (hopefully 30fps or better) attempting to display what data it has
about the world as best it can, resulting in some inconsistencies (or perhaps
many if your connection is very unstable)?  I know which one I'd choose, but
I wonder how many people feel the same?  Or perhaps there should be some sort
of consistency sliders in the options screen which change how much prediction
it does on its own, and how much it relies on the server for?

Adam




More information about the mud-dev-archive mailing list