Skip to content

High latency / ping spikes with NGO, Distributed Authority topology #3669

@KadaXuanwu

Description

@KadaXuanwu

Description

When using Multiplayer Services v1.1.8 and Netcode for GameObjects 2.5.0 with Distributed Authority topology, clients sometimes experience very high latency (300ms+) on certain server(s), while other times the RTT is normal (~40ms).
The issue occurs both when playing with friends over the internet and when testing locally with Multiplayer Play Mode.

This currently happens on "europe-west4"

I understand that sometimes servers can be overloaded, but my main problem is that the method
QosService.Instance.GetSortedRelayQosResultsAsync()
puts europe-west4 as the best region with ~27ms latency, even though when I create the lobby:
SessionOptions options = new SessionOptions {...}.WithDistributedAuthorityNetwork("europe-west4");
I have a RTT of 300ms in most cases.

I only see that the lobby is super laggy after creating it.
I can't expect players to open and close lobbies until they found a good server. I need to know that beforehand, so that I can select the best server to connect to before creating the lobby.

Reproduce Steps

A bit hard to reproduce consistently as I don't know when the servers work correctly and when they don't. But at the time of posting, try connecting to "europe-west4" with Distributed Authority topology a few times.

Actual Outcome

The method
QosService.Instance.GetSortedRelayQosResultsAsync()
returning a sorted list of lowest latency servers that is in theory correct, but when connecting to a server, they sometimes have a very high latency (300ms+), which I don't see in advance

Expected Outcome

I expect to have a method in Distributed Authority topology that tells me in advance if a server has issues, so that I can connect to another one.

Screenshots

Screenshot of Runtime Network Stats Monitor of when the issue occured in an ongoing game.
Image

Environment

  • OS: Windows 11 Pro
  • Unity Version: 6000.2.3f1 (same issue with 6000.1.15f1)
  • Netcode Version: Netcode for GameObjects 2.5.0
  • Netcode Topology: Distributed Authority

Additional Context

I also didn't find a way to change the server after creating the lobby. If that's possible somehow, I could use this approach instead.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions