Как правило, для любого клиент-серверного приложения (игрового или иного) клиент должен сохранять данные обратно на сервер всякий раз, когда пользователь выполняет действие, о котором сервер должен знать.
Другими словами, если пользователь выполняет действие и сервер никогда не знает, что это вызовет проблемы, его необходимо сохранить.
Например, если пользователь нажимает X, а затем его телефон взрывается, будет ли проблемой, если при открытии приложения на новом телефоне X не будет выполнен? Если ответ «OMG, конечно, это будет проблемой !!! 1», то X следует сохранить.
В общем, я всегда предполагаю, что каждое действие , выполняемое на клиенте, должно сохраняться на сервере, если это вообще возможно. Это может происходить асинхронно, когда это имеет смысл, но запись сервера о состоянии приложения - единственное, что действительно имеет значение.