Я разрабатываю игру, в которой логикой/состоянием игры управляет актерский актер Akka. Одно из моих состояний - WaitingForAnswer
, и бизнес-логика, связанная с этим состоянием, заключается в том, что игрок (также актер) должен ответить в течение 20 секунд, иначе он/она потеряет очко. Поэтому я определил состояние следующим образом:Уведомление о тайм-ауте Akka FSM
when(WaitingForAnswer, 20 seconds) {
// event handling logic here
}
Пока все хорошо. Теперь то, что я хочу сделать, - это напоминание о том, что после истечения половины таймаута штата (через 10 секунд) я хочу отправить игроку , который он должен ответить в ближайшее время.
Мои идеи:
Использование
setTimer(name, msg, interval, repeat)
при входе вWaitingForAnswer
состояние, установивinterval
на 10 секунд. Таким образом, мой актер FSM получит сообщение , напоминая ему о напоминании игроку-актеру. Как вы можете видеть, это немного ... ну не круто.Используйте планировщик, и как только мой актер FSM войдет в состояние
WaitingForAnswer
, заплатите сообщение в течение 10 секунд в будущем с участием игрока-игрока в качестве получателя. Конечно, в этом случае я должен был бы удостовериться, что я отменил запланированное сообщение, когда игрок игрока ответит вовремя.
Есть ли еще более естественный способ достичь этого? Какой-то крючок? Как использовать setTimer
с другим получателем?
Спасибо, Josep. Я фактически просмотрел вашу презентацию об Game Dev с Akka :) Во всяком случае, я закончил реализацию напоминания на стороне клиента, поскольку требование немного изменилось, но в целом мне нравится ваша идея! – Anton
Рад, что вам понравилось! –