Region-based interest management
- Square tile algorithm with variable width, height and tile size is implemented
- Easily replaceable with other region algorithms (hexagonal, etc. see http://gram.cs.mcgill.ca/papers/boulanger-06-comparing.pdf)
Items (Avatars, NPCs, shared game objects)
- Clients can spawn, destroy and move items.
- Items can have properties that are readable by other clients and changeable by the owner.
- Item properties have a revision number: Clients that lose sight of an item for some time can compare the revision to determine if they need to receive updated properties.
Interest automatically received.
- Interest areas have two interest thresholds. Regions that enter the inner radius become visible; regions that leave the outer become invisible. This optimization reduces frequent visibility changes.
Invisible item, out of range
- Invisible item enters outer interest area
- Invisible item enters inner interest area and becomes visible
- Visible item leaves inner interest area
- Visible item leaves outer interest area and becomes invisible
Interest areas can be resized: Adjusting the view distance in proportion to the amount of seen items can be beneficial
- To improve the performance in crowded areas or
- To show distant items in areas with low population.
Interest areas can be attached to any item: Whenever the item moves the interest area follows and changes the interest accordingly. This is especially useful to move the interest area with the own avatar.
- Detached interest areas can be moved freely. This is beneficial for camera flights.
Clients can have multiple interest areas to show different parts of the world at the same time.
Manual interest management: Clients can manually (un-)declare interest in items.
Custom events can be sent through items to two possible targets:
- The item owner
- All clients that are interested in the item (item subscriber)
Optimized position updates: Clients send updates only when they move.
- Duplicate user recognition: A subsequent user connection resets the previous connection.