[MUD-Dev] SMOG - small multiuser online game

Crosbie Fitch crosbie at cyberspaceengineers.org
Tue Feb 3 10:46:32 New Zealand Daylight Time 2004

From: Byron Ellacott

> This provides a solution for transferring the static data of a
> world around, but not a solution for the more immediate
> communication of those sixteen players.  If Player 1 says, "Hi!"
> and Player 2 is nearby, Player 2 should hear it.  It would be
> uncomfortable to wait for a filesharing network to propagate a
> snippet of conversation. :)

Yup, that's why I suggest using a FPS game as a basis, i.e. players
interact via the FPS, but the maps are distributed via the p2p

Remember that because of the spatial encoding system, there is
always a current interest expressed in files/maps related to the
player's vicinity.

Therefore, if at some time in the game you come to a "Auto-change
map to CentauriStation_ZZ251_AlphaPrime_NewZaire_Hoik_.x" point,
hopefully this file will have already downloaded. Especially, if
it's possible for maps to auto-express all the maps they reference
(could be appended as 'track listing' data if available), but
otherwise they'll have to only reference maps in proximity.

When you switch maps, you'll also end up with 0-16 other players (in
one of possibly umpteen shards - probably the 'lowest ping' shard
with free slots).

> And, if you can arrange a connection for Player 2 to hear Player 1
> in near-realtime, you can use that connection to transfer the
> static world data also.

Good point.

But, small steps man.

Let's walk first. (unless you have 5 million smackeroonies or so)

* * *

> A more difficult aspect of the problem is establishing an
> authoritative view of the world.  If Player 1 thinks they're at
> (244,321) but Player 2 thinks they're at (240,380), right where
> they planted a land mine, who is correct?  How do you resolve the
> difference?

Well, the trivial solution is to use an authoritative server. But,
because this is p2p, there ain't no such beastie, so you have to
distribute arbitration as well. But, that's a whole other story.

> Player 1 says they're at (244,321) ... well, majority rules.
> Player 1 is out of synch.

In any situation there's always one node best placed to arbitrate,
you might as well use that node than take time to get vote/agreement
from a majority.

> Second, you can get localised broadcasts.  As I move through the
> virtual world, I replace connections to more "distant" peers with
> connections to "closer" peers.  I thus hear about events from my
> closer peers sooner than from remote peers.  Add a short number of
> hops-to-live on each message, and they will naturally die out as
> they move too far away from their source.

So don't transmit events, transmit state.  And conspire to persuade
players to remain relatively local in the topologically similar
geography of the virtual world. (until we beat the speed of light)
MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list