Можно сделать эвентами, типа микроэвентсорсинг (тогда можно будет откатываться назад во времени)
Можно, конечно, хранить текущее состояние в базе, это будет чуть-чуть проще
Ну вот я игры не писал никогда, и не понимаю, как лучше. В целом, думаю, можно без ивентов обойтись, а откатываться во времени репликой базы)