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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions