[MUD-Dev] DGN/TECH: Implementing server side spatial partitiong

James Turner zakalawe at mac.com
Sun Oct 3 21:49:41 CEST 2004


On 30 Sep 2004, at 19:02, John Buehler wrote:

> An alternative is to have the server drive the character movement
> instead of the client.  Then the server can send the visibility
> information lockstep with the movement.  Not to mention making it
> possible to do things such as accurate collision detection between
> moving objects.

I don't know how widespread this approach is in the commercial
arena, but this is exactly the approach we use for WorldForge, and
it works very well. We have two operations, 'appear' and
'disappear', which we send to the client as the server's idea of
what it can see changes. We have tested this down to the level of
walking past a window and getting appears for items visible through
it. This requires a moderately complex physical world model on the
server (to make the visibility queries), but you probably already
need that for physics anyway.

It's worth pointing out these appear and disappear ops dominate our
network traffic, but we have explicit support for batching them
together, so minimise the impact of sudden view changes (walking
round a corner in a city, etc).

> This changes the player operation of the character, of
> course. Instead of players driving a character around in the model
> of Everquest, they would issue directives to the character and
> hope that the character does what they want, in the model of
> Diablo.

Fortunately our entire protocol works that way, and coupled with the
server's detailed knowledge of 'what the client can see', we're
hoping the architecture should be fairly cheat-resistant (important
since all the source is open).

> It also takes one more degree of control out of the client,
> further reducing the hacking that players can commit.

Indeed.

James Turner
--
That which does not kill me has poor aim
_______________________________________________
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