Skip to content

perf: Reduce Message Noise #3979

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

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open

perf: Reduce Message Noise #3979

wants to merge 12 commits into from

Conversation

MrGadget1024
Copy link
Collaborator

@MrGadget1024 MrGadget1024 commented Feb 9, 2025

Fixes #3828

High Ping frequency and TimeSnapshotMessage are only needed when NT's / PredictedRB's are actively used in the game

  • Prevents TimeSnapshotMessage sending when no NT's
  • Uses 2s Ping frequency when no NT's / PredictedRB's
  • NetworkTime has a static ulong highPingComponents
    • NTBase and NTHybrid increment / decrement via OnEnable / OnDisable
    • PredictedRigidbody increments / decrements via OnEnable / OnDisable
  • Tests updated to use DefaultPingInterval, now internal static instead of const

Tested with PlayerTest, Basic, BilliardsPredicted, and Room examples

  • PlayerTest works as expected using all NT prefabs
  • Basic example has no NT's, works as expected with low noise
  • BilliardsPredicted works as expected
  • Room example only uses NT in Game scene, not in Online scene
    • Logging shows the higher msg traffic in Game scene only, not in Online scene (correct)
    • Logging shows the reduced msg traffic when in Online Scene, even when switching back to Online scene from Game scene

High Ping frequency and TimeSnapshotMessage are only needed when NT's are actively used in the game
- Prevents TimeSnapshotMessage sending when no NT's
- Uses 2s Ping frequency when no NT's
- NetworkTime has a `static ulong activeNTs'
  - NTBase and NTHybrid increment / decrement via OnEnable / OnDisable
- Tests updated to use DefaultPingInterval, now internal static instead of const

Tested with PlayerTest, Basic, and Room examples
- PlayerTest works as expected using all NT prefabs
- Basic example has no NT's, works as expected with low noise
- Room example only uses NT in Game scene, not in Online scene
  - Logging shows the higher msg traffic in Game scene only, not in Online scene (correct)
  - Logging shows the reduced msg traffic when in Online Scene, even when switching back to Online scene from Game scene
@MrGadget1024 MrGadget1024 added enhancement New feature or request Awaiting Review labels Feb 9, 2025
@MrGadget1024 MrGadget1024 requested a review from miwarnec February 9, 2025 15:21
@realQuartzi
Copy link

Why is NetworkTime the class that is tracking the count of NetworkTransforms? Is it the only static class we have available at this time?
I personally do not see a problem with it, but it seems kind of weird to look at. otherwise lgtm

@MrGadget1024
Copy link
Collaborator Author

Why is NetworkTime the class that is tracking the count of NetworkTransforms?

A few reasons:

  • It's a neutral class that operates on both server and clients
  • Dependency chain accessibility from the Mirror.Components assembly
  • It has to know the count to return the correct PingInterval

Basically, any component (NT, PredictedRB, future others) has to tell NetworkTime they're alive, so the rest of Mirror uses the correct timing and sends the required messages.

@MrGadget1024 MrGadget1024 changed the title fix: Reduce Message Noise perf: Reduce Message Noise Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Review enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bandwidth Abuse
3 participants