sync area partitioning

Started by
4 comments, last by hplus0603 11 years, 6 months ago
What are you guys using to partition areas into sync areas based on players? i need to partition my players.. so that basically i prepare sync data for these areas and just pust the updates to people in one areas, now what are the most popular approaches?

Thanks.

Projects: Top Down City: http://mathpudding.com/

Advertisement
What you call "sync areas," most games call "zones."

Another popular approach (for MMOs) is to send updates for players that are further away, but still visible, less often.

If you have a large outdoors area, you may want to slice it into blocks, and send update data for all neighboring blocks plus the block the player is in.
enum Bool { True, False, FileNotFound };
I asked for a suggestion on which algorythm to use to partition the world into these zones based on where players are, i understand the concept but not what algorythm is generally used to calculate these zones.

Projects: Top Down City: http://mathpudding.com/

For continuous worlds: Grids, hash grids, or quad trees.

Or, if you have separate zones, just say: "One server process == one level geometry == one area." Worked for EverQuest, and for City of Heroes, and a lot of other games.
enum Bool { True, False, FileNotFound };
Has anyone considered a implementation of this? the graphics look promising:

http://www.sciencedirect.com/science/article/pii/S0305054801000338

1-s2.0-S0305054801000338-gr1.gif

Projects: Top Down City: http://mathpudding.com/

Yes, I did a lot of work on Voroni based partitioning. It's a mechanism that works OK for statically partitioned maps, but any attempt to build reactive systems (that "move capacity") based on that mechanism is unlikely to be very successful. The reason is that the Voroni cells change shape in not entirely local ways as you introduce or move nodes around (as each cell depends on all the other cells around it.)

Also, finding the cell for a particular point is O(sqrt(num-nodes)) in Voronoi maps, but O(log(num-nodes)) in quad trees, and O(1) for grids and hash grids.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement