Fehler #32806
geschlossenBenutzeroberfläche: Client und Server stimmen oft nicht überein
Beschreibung
Etwas nervig war das schon immer, in den letzten ist dieses Problem aber gefühlt noch schlimmer geworden, weswegen ich jetzt mal ein Ticket dazu erstelle:
Die Anzeige der Bereitschaft von Fähigkeiten im Client stimmt sehr oft nicht mit dem Status des Servers überein. Das führt dazu, dass Fähigkeiten regelmässig nicht einsetzbar sind, obwohl meine Benutzeroberfäche sie als ausführbar anzeigt. "Einsetztbar" bedeutet: Abklingzeit ist abgelaufen und die Entfernung zum Ziel entspricht den Anforderungen.
Wenn man sich beim Auslösen von Fähigkeiten im Kampf durchweg an dem orientiert, was die Benutzeroberfläche mir als Spieler anzeigt, bekommt man ständig die Meldung "Fähigkeit ist noch nicht bereit", obwohl mein UI sie mir bereits wieder als "bereit" anzeigt. Oder "Ihr seid zu weit entfernt", obwohl mein UI mir anzeigt, ich stehe nah genug am Ziel. Das ist jetzt nicht unbedingt dramatisch, man drückt dann eben die Taste ein zweites Mal, oder klickt ein zweites Mal, oder läuft noch kurz etwas auf den Gegner zu. Dennoch bemerkt man ständig: Da passt etwas nicht wirklich zusammen.
Deutlich nerviger ist der Fehler bei den Argentumturnier-Dailys, für die man auf einem Reittier ebenfalls berittene gegnerische Champions besiegen muss: Hier stimmt das, was die Benutzeroberfläche des Clients anzeigt, praktisch durchweg nicht mit dem Status des Servers überein: Sturmangriffe sind nicht nutzbar, obwohl sie als "verügbar" angezeigt werden, weil man doch noch zu weit vom Gegner entfernt ist oder zu dicht dran steht. Andere Attacken sind noch blockiert, weil der Server sagt "aas könnt ihr noch nicht", obwohl mir angezeigt wird, dass ich das sehr wohl schon kann. Bevor man den Abstand dann korrigieren oder noch einen Augenblick bis zur Nutzung des Angriffs warten kann, ist der Gegner dann meist schon auf einen zugestürmt, ist davongeritten o.ä. Das macht diese Reiterkämpfe oft zu einem Glücksspiel und ist sehr lästig.
Ich rede hier von "Zustand des Clients" und "Zustand des Servers", weil ich mir die internen Abläufe beim Versuch, eine Fähigkeit zu nutzen, so vorstelle:
- Der Spieler klickt auf eine Fähigkeit oder drückt die mit dieser Fähigkeit belegte Taste.
- Ist die Fähigkeit selbst in der Benutzeroberfläche des Clients noch nicht wieder bereit, so sagt der bereits "das könnt Ihr noch nicht" oder "Fähigkeit ist noch nicht bereit".
- Zeigt der Client jedoch Bereitschaft an, wird dem Server die Nachricht geschickt "Charakter löst Fähigkeit XYZ aus".
- Der Server meldet dann entweder ein OK zurück, zusammen mit dem Ergebnis (z.B. dem verursachten Schaden). Oder eben ein "Nein, das geht noch nicht, weil diese Fähigkeit bei mir noch nicht wieder bereit ist".
- Der Client zeigt das Ergebis entsprechen der Antwort des Servers an.
Ob das dem tatsächlichem Sachverhalt entspricht, kann ich nicht sagen. Falls das aber richtig ist, fehlt hier entweder eine Synchronisation des Abklingzeiten zwischen Client und Server, indem beispielsweise der Cleint seine Visualisierung eines Cooldowns erst dann startet, wenn der Server die auch bei sich gestartet hat und dem Client mitteilt "Cooldown starten". Damit wäre der Server dem Client immer einen Tick voraus und Abklingzeiten wären auch beim Server abgelaufen, wenn der Client dies anzeigt. Oder die andere Möglichkeit: Die Neuberechnung eines gestarteten Cooldowns läuft beim Server mit so niedriger Priorität (etwa um Rechenzeit beim Server zu sparen), dass der oft noch keinen neuen Timeslot dafür bekommen hat und die Abklingzeit neu bestimmen konnte, wenn der Cooldown auf Client-Seite längst abgeschlossen ist und der Spieler erneut versucht, die Fähigkeit auszulösen.
Ich verwende die unveränderte Original-Oberfläche. Also kein alternatives UI, das für das Problem verantwortlich sein könnte.
Zugehörige Tickets