Direkt beim Betreten einer Zone schickt der Server Spawn-Meldungen für die NPCs in der Umgebung, aber der Client lädt noch die Karte und verwirft sie.
Warum Server sendet direkt nach dem Betreten Spawn-Meldungen für Objekte in der Umgebung → Folge Client lädt noch, es gibt noch keinen Message-Handler, die Meldungen werden verworfen → Auf dem Bildschirm Server betrachtet sie als gesendet und schickt sie nicht erneut. Der NPC bleibt unsichtbar, bis man den Sichtbereich verlässt und zurückkommt
Client: nach dem Laden „bereit“ melden oder während des Ladens empfangene Pakete zwischenspeichern und danach verarbeiten. Server: Umgebungsdaten erst nach Empfang von „bereit“ senden.
Größenordnungen
Laden zwei Clients auf demselben PC gleichzeitig oder ist der ladende Client ein Hintergrundfenster, teilen sie sich CPU und Datenträger und werden zusätzlich gedrosselt, sodass das Laden dort ein Vielfaches länger dauern kann. Auch wenn der Server das Betreten schneller verarbeitet, tritt derselbe Bug zutage.
Im Graphen
Nur einzelne Ausreißer · Ladezeit pro Client, während des Ladens verworfene Nachrichten
Wo nachsehen
Anzahl und Art der Nachrichten, die der Client während des Ladens empfangen und verworfen hat, sowie den Zeitpunkt des Ladeendes mit dem Zeitpunkt vergleichen, zu dem der Server die Spawn-Meldungen gesendet hat. Laden zwei Clients auf demselben PC gleichzeitig oder liegt der ladende Client im Hintergrund, lässt es sich leicht nachstellen
Spricht dafür
Der Server hat die Spawn-Meldung für den unsichtbaren NPC gesendet, sie kam vor dem Ladeende an, und in dieser Zeit ist die Zahl der verworfenen Nachrichten gestiegen. Tritt nur beim Client mit der längeren Ladezeit auf
Spricht dagegen
Spawn-Meldung kam nach dem Ladeende an und der NPC ist trotzdem unsichtbar: „Verlorener Basis-Snapshot“ oder „Verwechslung durch wiederverwendete Objekt-IDs“. Server hat die Meldung für diesen NPC gar nicht gesendet: „Reihenfolgefehler bei der Sichtbereichsregistrierung“ oder „Unterschiede bei Kanal, Instanz oder Phasing“
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Quellen
NetworkConfig class (Netcode for GameObjects 2.5)Unity SpawnTimeout: Nachrichten für noch nicht erzeugte Objekte werden zurückgehalten und verworfen, wenn das Objekt nicht rechtzeitig erzeugt wird
Actor Relevancy in Unreal EngineEpic Games Nicht mehr relevante Actors werden auf dem Client gelöscht und bei erneuter Relevanz neu repliziert
Verwandte Ursachen
Gleiche Schicht: Probleme, die nur einige betreffen