한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › Synchronisationsdesign

Ablehnung durch den Server nach clientseitigem Feedback Client-side feedback rejected by server

Ursachen-ID sy-optimistic-reject · Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Erkennt der Server einen Treffer oder Skill, den der eigene Bildschirm schon gezeigt hat, nachträglich nicht an, wird ein eindeutig gesehenes Ergebnis rückgängig gemacht.

Warum Treffereffekt und Skill-Animation laufen vor der Bestätigung durch den Server (clientseitiges Feedback) → Folge Server prüft Reichweite, Zielposition, Cooldown und Ressourcen erneut und lehnt ab → Auf dem Bildschirm Blut spritzt, aber kein Schaden, Skill-Animation ohne Wirkung, nur der Cooldown läuft

Symptome
Verschluckte Aktion / Rollback, Rubberbanding
Faktoren
Latenz
Wer ist betroffen
Nur ich, Nur eine bestimmte Funktion
Wann
Bei bestimmten Aktionen
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Client: nur Teile, die eine Bestätigung brauchen, wie Schadenszahlen, Tod und Belohnungen, mit dem Serverergebnis anzeigen, häufige Ablehnungsgründe vorab selbst prüfen, bei Ablehnung Cooldown und Ressourcen zurücksetzen und den Grund anzeigen. Server: bei der Prüfung von Reichweite und Zielposition Spielraum in Höhe des Pings lassen, Ablehnungen mit Grund senden, Ablehnungsquote pro Skill als Metrik erfassen.
Größenordnungen
Die Ablehnung kommt um Ping + Tick-Wartezeit nach dem Tastendruck. Bei 150 ms Ping glaubt man etwa 0,2 s lang, getroffen zu haben.
Im Graphen
Nur einzelne Ausreißer · Ablehnungsquote des Servers pro Skill (nach Ping-Bereich)
Wo nachsehen
Auf dem Server Ablehnungsquote und Ablehnungsgründe (Reichweite, Zielposition, Cooldown, Ressourcen) pro Skill erfassen und nach RTT-Bereichen der Spieler aufschlüsseln. Im Client zählen, wie oft eine mit clientseitigem Feedback dargestellte Aktion abgelehnt wurde
Spricht dafür
Ablehnungen häufen sich bei bestimmten Skills und den Gründen Reichweite und Zielposition, und die Ablehnungsquote steigt mit dem Ping
Spricht dagegen
Ablehnungsgrund Cooldown oder Ressourcen und unabhängig vom Ping: prüfen, ob sich die Datenwerte (Cooldown, Kosten) von Client und Server unterscheiden. Keine Ablehnungen, aber das Feedback beginnt erst nach der Serverantwort: „Feedback erst nach der Serverantwort (Request-Response)“
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Mehr dazu
Clientseitiges Feedback ist das beste Mittel, um den Ping zu verbergen. Je stärker sich aber die Informationen unterscheiden, die Client und Server für ihre Entscheidung nutzen (Position des Gegners, verbleibende Ressourcen), desto häufiger kommt es zu Ablehnungen. Wer die Ablehnungsquote pro Skill als Metrik erfasst, findet leichter die Stellen, an denen die Entscheidungen auseinanderlaufen.

Quellen

  1. Using Gameplay Abilities in Unreal Engine Epic Games
    Local-Predicted-Fähigkeiten laufen sofort auf dem Client, die endgültige Entscheidung trifft aber der Server, der das Ergebnis auch umkehren kann
  2. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    Waffenschüsse werden auf dem Client vorhergesagt und die Effekte vorab abgespielt, Vorhersagefehler werden mit dem Serverergebnis korrigiert

Verwandte Ursachen

Gleiche Schicht: Synchronisationsdesign

Ursachen aus anderen Schichten mit demselben Symptom (Verschluckte Aktion / Rollback)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen