Ich entwickle ein Spiel, in dem die Spiellogik/der Status selbst von einem Akka FSM Schauspieler verwaltet wird. Einer meiner Zustände ist WaitingForAnswer
und die Geschäftslogik in Bezug auf diesen Zustand ist, dass ein Spieler (auch ein Schauspieler) innerhalb von 20 Sekunden antworten muss, sonst verliert er/sie einen Punkt. Also habe ich den Zustand folgendermaßen definiert:Akka FSM Timeout Benachrichtigung
So weit so gut. Nun, was ich tun möchte, ist eine Art Erinnerung - nachdem die Hälfte der Status-Timeout abgelaufen ist (nach 10 Sekunden), möchte ich eine Erinnerung an den Spieler senden, die er bald beantworten muss.
Meine Ideen:
setTimer(name, msg, interval, repeat)
verwenden, wenn sie durch die Einstellung derinterval
-10 Sekunden, um denWaitingForAnswer
Zustand eintritt. Auf diese Weise erhält mein FSM-Schauspieler eine Erinnerung und erinnert ihn daran, den Spielerschauspieler zu erinnern. Wie du sehen kannst, ist das ein bisschen ... naja, nicht cool.Verwenden Sie den Scheduler und sobald mein FSM-Akteur den Status
WaitingForAnswer
erreicht, planen Sie eine Nachricht für 10 Sekunden in der Zukunft mit dem Spieler-Akteur als Empfänger. Natürlich müsste ich in diesem Fall sicherstellen, dass ich die geplante Nachricht annulliere, wenn der Schauspieler des Spielers rechtzeitig antwortet.
Gibt es noch einen natürlicheren Weg, dies zu erreichen? Irgendeine Art von Haken? Eine Möglichkeit, setTimer
mit einem anderen Empfänger zu verwenden?
Danke, Josep. Ich habe deine Präsentation über Game Dev mit Akka rezensiert :) Wie auch immer, am Ende habe ich die Erinnerung auf der Client-Seite implementiert, da sich die Anforderungen leicht geändert haben, aber im Allgemeinen mag ich deine Idee! – Anton
Froh, dass es dir gefallen hat! –