Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: redesign of area of interest #743

Closed
wants to merge 8 commits into from
Closed

perf: redesign of area of interest #743

wants to merge 8 commits into from

Commits on Mar 27, 2021

  1. perf: redesign of area of interest

    The AOI system we inherited from Mirror is poorly designed.
    It's API requires O(n^2) algorithms,  it is highly complex, and it is not flexible enough.
    
    This PR implements AOI in a completely different way.
    The NetworkIdentity objects no longer track visibility, and neither do NetworkPlayer.
    
    When the server spawns an object, all it does it raise the Spawned event,
    the AOI system will subscribe to this event,  and then show that object to all the relevant players.
    Likewise,  when a player joins,  the AOI will listen for the event and show the relevant objects to the
    newly created player.
    
    In this fashion, we decouple AOI policy from NetworkIdentity and NetworkPlayers. The AOI system can keep the
    relationship between them in any way that is suitable.
    
    In this PR, I implement the simplest InterestManager called GlobalInterestManager.
    This Interest Manager will just show all objects to all players.
    
    Implement the class InterestManager to create any policy desired.  I expect to create a Spatial Hashing interest Manager
    
    BREAKING CHANGE: Removed NetworkVisibility, extend InterestManager and attach to the ServerObjectManager instead.
    paulpach committed Mar 27, 2021
    Configuration menu
    Copy the full SHA
    6cc2f55 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cd5fab0 View commit details
    Browse the repository at this point in the history
  3. perf: remove linq allocation

    paulpach committed Mar 27, 2021
    Configuration menu
    Copy the full SHA
    93c9f29 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f68864d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    559528b View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    f4fe323 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    bcd7088 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    29c5afa View commit details
    Browse the repository at this point in the history