ゲームのロジック/状態自体が Akka FSM アクターによって管理されるゲームを開発しています。私の状態の 1 つは、WaitingForAnswer
この状態に関連するビジネス ロジックは、プレーヤー (俳優でもある)は20 秒以内に応答する必要があるというものです。だから私はこのように状態を定義しました:
when(WaitingForAnswer, 20 seconds) {
// event handling logic here
}
ここまでは順調ですね。ここでやりたいことは、何らかのリマインダーを用意することです。状態タイムアウトの半分が経過した後 (10 秒後)、プレーヤーにリマインダーを送信して、すぐに回答する必要があることを伝えたいと考えています。
私のアイデア:
を10 秒に設定し
setTimer(name, msg, interval, repeat)
て状態に入るときに使用します。このようにして、私の FSM アクターは、プレーヤー アクターに思い出させることを思い出させるリマインダを受け取ります。ご覧のとおり、これは少し...まあクールではありません。WaitingForAnswer
interval
スケジューラーを使用して、私の FSM アクターが
WaitingForAnswer
ステートに入ったら、プレーヤー アクターを受信者として、10 秒先のメッセージをスケジュールします。もちろん、この場合、プレーヤー アクターが時間内に応答したときに、スケジュールされたメッセージをキャンセルする必要があります。
これを達成するための他のより自然な方法はありますか? 何かのフック?setTimer
別の受信者で使用する方法はありますか?