Closed 0xhtml closed 3 years ago
Danke für die ausführlichen Informationen.
Das Problem ist recht simple:
Um Bandweite zu sparen, wird die Liste deployedPieces
nicht serialisiert.
Demnach ist diese Liste bei GameStates von Clients immer null
.
In der Dokumentation ist das nicht ersichtlich; ich werde zusehen, dass das entsprechend kenntlich wird.
Alle wichtigen Informationen sollten aber aus undeployedPieceShapes
, board
und lastMoveMono
des GameStates ersichtlich werden.
Wenn dem nicht so ist, bitte ich um Rückmeldung
Ok. Es funktioniert nur die GameRuleLogic.performMove-Methode nicht ohne deployedPieces. Die Methode könnte auch ohne deployedPieces funktionieren, aber die Methode greift auf deployedPieces zu, ohne zu kontrollieren, ob deployedPieces null ist.
Oh, ja, in der Tat - sie versucht, den Stein nach erfolgreichem Zug zu dieser Liste hinzuzufügen, ohne zu prüfen, ob die Liste existiert.
Danke für den Hinweis!
Bisher wurde performMove
immer nur vom Server ausgeführt, der über diese Liste verfügt.
Natürlich macht es aber auch für Clients Sinn, das entsprechend zu Simulieren.
Ich werde baldmöglichst für eine Lösung sorgen
Bei mir tritt folgender Fehler auf:
Ich habe den Fehler etwas debuged und konnte feststellen, dass der Fehler entsteht, weil gameState.deployedPieces null ist. Ich habe eine minimale Logic erstellt, mit der der Fehler reproduziert werden kann. Dazu einfach die SimpleClient-Source nehmen und die Logic ersetzen.