[MUD-Dev] DGN/TECH: Implementing server side spatial partitiong was:(exploiting/hacking in MMOGs - sources of info?)

William Leader leader at k2wrpg.org
Wed Sep 29 03:38:19 CEST 2004


Daniel.Harman at barclayscapital.com wrote:

> Completely distrusting the client side strikes me as a far harder
> problem as it becomes entirely dependant upon the quality of ones
> client working set partitioning algorithm, on the server. That
> makes it pretty hard to not broadcast updates to the client for
> entities hidden through walls etc. I don't think this is by any
> means solved yet, but given that spatial partitioning is a
> reasonably well explored problem space, there seems a reasonable
> chance that brute force is the only answer.

I think tools like *cough* ShowEQ *cough* clearly demonstrate that not
trusting the client is the only answer.

As far as how to implement the partitioning algorithm, I do have and Idea
about that I imagine that most server currently spew out a constant stream
of data about players, mob, objects, ground spawns, etc. I bet these are
usually broadcast packets (but that will have to change). Instead you take
the current servers, and pipe all that data to a Line-Of-Sight (LOS) proxy
server.

The LOS server has the 3d map loaded in memory (no textures, just planes).
For each packet that comes in, it does a line of sight check between the
player's location and the location of the object in the packet. If the
client can't see it, it changes the packet to tell the client the object has
disappeared. Worst cast the client still knows the last known position, but
that's not unrealistic. This setup allows all the partitioning 3d
calculation work, can be unloaded onto a separate processor. The client gets
only what they need. They know what was behind door number 1 last time they
looked, but there is no what to know what is there now, or was there before
is still there.

Personally I have a feeling that the LOS code could easily be put together
by a client programmer that is decent with 3d. It may even be possible to
use a high-end video card's acceleration abilities to speed things up
faster. Adding this second server could also be strapped onto most existing
servers without encumbering the code more, or causing massive changes to the
existing servers. I think the only change needed to existing servers would
be to have it stop broadcasting and send position updates only to the LOS
server.
_______________________________________________
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