Перейти к содержимому

Разделяйте события симуляции и уведомления

🧪 Design pattern Получено из Political World

В модах с насыщенной симуляцией нельзя считать, что каждое внутреннее событие обязано превращаться в уведомление игроку.

Удобная модель:

Simulation
Domain event
Notification policy
UI feed

Так симуляция может оставаться глубокой, а интерфейс — читаемым.

Для каждой категории событий можно выбрать один из вариантов:

  • Immediate — важное и редкое, показывать всегда.
  • Rate-limited — полезное, но слишком частое для постоянного показа.
  • Suppressed — внутренняя деталь, которую не обязательно показывать.
  • Aggregated — много событий объединяются в периодический отчёт.

Если лента уже шумная, ограничить частоту, но сохранить все пропущенные сообщения в очереди — значит просто перенести спам в будущее.

Quiet Feed в Political World специально отбрасывал часть лишних сообщений, а не проигрывал их позже.

Для важной информации обычно лучше агрегация:

Плохо:
17 отдельных сообщений об изменении идеологий
Лучше:
"За этот год произошло 17 изменений идеологий."

Не смешивайте два разных вопроса:

  1. симуляция продолжает создавать новые события?
  2. UI продолжает показывать уже созданные события?

Сообщение, появившееся вскоре после паузы, может быть хвостом отображения.

Чтобы доказать, что симуляция игнорирует паузу, логируйте момент/счётчик создания событий, а не только сообщения, появившиеся в UI.