Столкнулся я с вопросом "А как узнать, что игрок закрыл игру принудительно, не используя кнопку "Exit"?
Ну например ты можешь при нормальном закрытии записывать какой-нибудь флаг в файл, типа "игра была закрыта нормально".
Тогда при следующем запуске, обнаружив, что этот флаг не стоит - ты поймёшь, что в прошлый раз игра закрылась непредвиденным образом (принудительно или из-за отключения электричества)
Также, было бы весело решить данный вопрос, если вы ответите на похожий вопрос "Как узнать время проведенное в афк?",
Ну тут тебе сначала нужно дать определение, что такое афк в твоём случае :)
К примеру, можно считать, что игрок отошёл, если от него не поступает сигнал N единиц времени.
Тогда чтобы узнать время нахождения в афк - тебе нужно просто сохранять метку времени каждый раз, когда игрок как-то взаимодействует с игрой, а потом отнимать от последнего записанного времени N.