Game-Lag-Whitepaper › Nach Symptom suchen
Unsichtbar / Geisterobjekte: 20 Ursachen und Zuständigkeiten
Auch genannt: NPC fehlt, unsichtbarer Charakter, toter Mob steht noch da
Im interaktiven Symptomkatalog mit Grafiken öffnen →
NPCs, Monster oder Spieler, die da sein müssten, fehlen nur auf dem eigenen Bildschirm, oder längst verschwundene Objekte bleiben nur dort stehen.
Andere reden mit einem NPC, man selbst sieht nur leeren Boden. Es schwebt nur ein Namensschild ohne Charaktermodell, oder ein Monster steht da und reagiert auf keinen Treffer.
Mit Geschwindigkeit hat das meist wenig zu tun: Ein einzelnes Paket fehlt, oder das Zeichnen ist fehlgeschlagen. Zu prüfen sind unterschiedliche Kanäle oder Phasing, verlorene Spawn- und Despawn-Meldungen, Verwerfen während des Ladens und fehlgeschlagenes Laden von Assets. Der entscheidende Hinweis: Taucht das Objekt wieder auf, wenn man den Sichtbereich verlässt und zurückkehrt?
Ursachen dieses Symptoms
L1 Spielprozess auf dem Client
- Langsamer Datenträger bremst Asset-Streaming: Auf langsamen Datenträgern wie HDDs kommt das Einlesen von Texturen und Modellen in einer Open World der Bewegung nicht hinterher. Objekte erscheinen spät, oder das Spiel ruckelt, während es auf Lesevorgänge wartet. (Client-Entwicklung (Entwicklungsteam))
L8 Sockets und Protokolle
- Keepalive-Standardwert von 2 Stunden: Verschwindet die Gegenseite ohne Abschlusssignal, bemerkt TCP das erst sehr spät. Keepalive (eine TCP-Funktion, die prüft, ob eine Idle-Verbindung noch lebt) ist standardmäßig aus und beginnt selbst eingeschaltet erst nach 2 Stunden Leerlauf mit der Prüfung. (Server-Entwicklung (Entwicklungsteam))
- Slow Start nach Leerlauf: Nach einer Weile Leerlauf verkleinert TCP das Congestion Window (die Menge, die auf einmal gesendet werden darf) wieder. Werden dann plötzlich große Datenmengen gesendet, gehen sie in mehreren Etappen hinaus. (Server-Infrastruktur (Infrastrukturteam))
Probleme, die nur einige betreffen
- Unterschiede bei Kanal, Instanz oder Phasing: Befinden sich zwei Charaktere in verschiedenen Kanälen oder Instanzen oder in unterschiedlichen „Phasen“, in denen je nach Questfortschritt andere NPCs sichtbar sind, sehen sie unterschiedliche Welten. (Server-Entwicklung (Entwicklungsteam))
- Verworfene Spawn-Meldungen während des Ladens: 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. (Client-Entwicklung (Entwicklungsteam))
- Reihenfolgefehler bei der Sichtbereichsregistrierung: Fällt der Moment, in dem ein Charakter im Sichtbereichsraster registriert wird, mit dem Moment zusammen, in dem ein NPC die Rasterzelle wechselt, kann die Spawn-Meldung für diesen NPC ausbleiben. (Server-Entwicklung (Entwicklungsteam))
- Verlorener Basis-Snapshot: Sendet der Server nur „Änderungen seit dem letzten Mal“, lassen sich spätere Änderungen nicht anwenden, wenn die einmalig gesendete Gesamtinformation (Basis) verloren geht. (Server-Entwicklung (Entwicklungsteam))
- Verlorene Despawn-Meldung (Geisterobjekt): Geht umgekehrt die Meldung „verschwunden“ verloren, bleiben bereits tote oder gegangene NPCs und Spieler nur auf dem eigenen Bildschirm stehen. (Server-Entwicklung (Entwicklungsteam))
- Verlust gebündelter Spawn-Daten direkt nach dem Betreten: Beim Betreten einer Zone schickt der Server die Spawn-Daten von Dutzenden bis Hunderten Objekten in der Umgebung auf einmal. Gehen sie über einen Unreliable-Kanal oder läuft der Empfangspuffer über, während der Client beim Laden den Socket nicht liest, verschwindet ein Teil davon und kommt nicht wieder. (Server-Entwicklung (Entwicklungsteam))
- Verwechslung durch wiederverwendete Objekt-IDs: Verwendet der Server beim Respawn eines getöteten NPCs dieselbe Objekt-ID erneut, hält ein Client, der zwischendurch die Despawn-Meldung verpasst hat, den neuen NPC fälschlich für den alten. (Server-Entwicklung (Entwicklungsteam))
- Kollision fester UDP-Ports: Ist der Client so gebaut, dass er einen festen lokalen Port verwendet, kann ein zweiter Client auf demselben PC den Port nicht nutzen oder teilt sich die Pakete mit dem ersten. (Client-Entwicklung (Entwicklungsteam))
- Fehlerhafte Session-Zuordnung nach IP oder Gerät: Unterscheiden der Server oder ein Zwischenserver Verbindungen anhand von IP oder Geräte-ID, werden zwei Clients auf demselben PC (gleiche öffentliche IP) als ein Spieler erkannt. (Server-Entwicklung (Entwicklungsteam))
- Multi-Client-Beschränkung: Beschränken ein Sicherheitsmodul oder eine Serverrichtlinie mehrere Clients auf einem PC, wird der Start oder Login des zweiten Clients blockiert, oder der zuerst gestartete verliert die Verbindung. Manche Spiele sperren nur Funktionen des zusätzlichen Clients. (Client-Entwicklung (Entwicklungsteam))
- Drosselung von Hintergrundfenstern: Bei einem Client im Hintergrundfenster reduzieren Spiel, Engine und OS Frames und Verarbeitung. Empfangene Pakete werden nicht rechtzeitig verarbeitet, stauen sich oder laufen über. (Client-Entwicklung (Entwicklungsteam))
- Zugriffskonflikte bei Cache- und Asset-Dateien: Schreiben zwei Clients gleichzeitig in denselben Cache-Ordner oder sperren Dateien, kann einer von ihnen NPC-Modelle oder Texturen nicht laden. (Client-Entwicklung (Entwicklungsteam))
- Streaming-Fehler durch zu wenig Arbeitsspeicher oder VRAM: Teilen sich zwei Clients den Grafikspeicher, ist kein Platz für neu benötigte Modelle und Texturen, und manches wird nicht gezeichnet. (Client-Entwicklung (Entwicklungsteam))
- Unterschiedliche Anzeigeoptionen: Unterscheiden sich Optionen wie die Begrenzung angezeigter Charaktere, ausgeblendete NPC-Namensschilder oder -Modelle oder ein Low-Spec-Modus zwischen zwei Clients, sehen sie Unterschiedliches. (Client-Entwicklung (Entwicklungsteam))
- Abweichende Client-Version oder Spieldaten: Ist der zweite Client eine andere Installation oder nicht vollständig gepatcht, kennt er neue NPC-IDs vom Server nicht und ignoriert sie stillschweigend. (Client-Entwicklung (Entwicklungsteam))
- Sendebudget und Priorität pro Verbindung: Begrenzt der Server die Sendemenge pro Verbindung und sendet Nahes zuerst, bekommen Verbindungen mit niedrigem Limit entfernte NPCs spät oder gar nicht. (Server-Entwicklung (Entwicklungsteam))
- Zurückgehaltene Objekte durch falsch geschätzte Serverzeit: Liegt die vom Client geschätzte Serverzeit falsch, hält er gerade eingetroffene Objektdaten als „noch in der Zukunft“ zurück oder verwirft sie als „zu alt“. (Client-Entwicklung (Entwicklungsteam))
Interaktiven Symptomkatalog mit Grafiken ansehen