Могу обьяснить подробнее:
Есть условно игровая сессия. Она является актором и у неё есть состояние. Состояние описывается с помощью fsm.
Помимо своего собственного состояния сессия имеет внутренние подсистемы, которые тоже имеют своё собственное внутреннее состояние - например, статистика сессии, управление хуергой какой-нибудь и так далее. Эти вещи тоже, где можно, выражены через FSM и тоже представлены акторами.
Сессия подписана на ивенты, как-то на них реагирует. Но сама реакция заключается также в том, что сессия этот ивент отправляет подсистемам. И тут начинается веселье.
1) Сессия не должна начинать обрабатывать ивенты, пока подсистемы не завершат обработку ивента
2) Подсистемы помимо общения со своей сессией (которая по сути менеджер для них) также могут слать ивенты друг другу (например игрок ливнул и надо обнулить его статистику - посылаем ивент). И тут мне уже надо городить в акторах-подсистемах вместо обычного синхронного вызова хуергу вида "Отправил ивент - переключаемся в режим ожидания результата - если отрицательный ответ пришёл, то роллбэчимся"
3) Как завершим работу - надо пингануть менеджер, что мол всё ок и можешь подавать нам следующий ивент. А если ивент пришёл на обработку не одной подсистеме, а нескольким - как узнать, сколько подсистем менеджеру ждать? Это вкодивать уже надо как-то для каждого отдельного ивента, а мне это не нравится
Вот пока что над этим думаю