Wenn ich Planet erobert wird, werden 6 Messages nacheinander versendet:
- Planeten-Update (an alle Spieler)
- Flotten-Update (an alle Spieler)
- Kampfresultat (an alle Team-Mitglieder der kämpfenden Spieler)
- Planeten-Infos (ans Team des erobernden Spielers)
- Planeten-Details (an den erobernden Spieler)
Dabei hat jede Message eine eigene WebSocket-Subscription. Mir war bis BlueCobolds Meldung nicht bewusst, dass diese Nachrichten zwar im Code des Servers direkt nacheinander abgeschickt werden, sie allerdings nicht zwangsweise in dieser Reihenfolge beim Client ankommen.
(Asynchroner Prozess / Beim Parsen braucht eine Nachricht länger braucht als die andere? Muss ich mal nachlesen )
Ich werde es so lösen, dass ich nur noch eine Subscription verwenden und alle Nachrichten als Liste / Array auf einmal verschicken werde. Jeder Spieler bekommt einen Zähler, welcher pro Nachricht +1 erhöht wird. Wenn der Zählerwert einer Nachricht, die er empfängt != +1 der letzten Nachricht ist, dann weiß der Client, dass er sich neu synchronisieren muss. Ist denke ich langfristig die bessere Lösung, als das Problem hier nur kurzfristig zu lösen. Da ähnliche Prozesse auch bei anderen Spiel-Ereignissen vorkommen.
Ich werde dafür allerdings bis nach dem Wochenende brauchen. Wenn der Bug behoben ist, dann spiele ich sehr gerne im Multiplayer-Modus mit -> Zeit ausmachen und los!