В полноценных кликерах и других играх, где используется игровой процесс в "нерабочем" состоянии - либо работает механика на сервере (что на самом деле редко делают, только в случаях возможного влияния других игроков извне), либо осуществляют ускоренную симуляцию.
Например, есть какое-то здание, которое накапливает золото с течением в ремени по формуле
сurrency(t) = t*currencyPerSecond
где
t - время, а
currencyPerSecond - количество валюты, начисляемое в секундах.
В итоге игрок сидит и играет, каждую секунду получает по
currencyPerSecond. И тут мы должны куда-то сохранять момент, в который мы последний раз получили эту валюту. Например,
в 11:00 игрок получил currencyPerSecond и у него теперь
10000 золота. Мы это записали и сохранили в файл сохранения, какой-нибудь json или типа того.
Игрок закрыл игру и открыл через пол часа,
в 11:30.
Мы пошли смотреть, когда игрок последний раз получил валюту -
в 11:00, а сейчас
11:30 - значит он отсутствовал
30 минут и мы должны нагенерировать ему
30*60*currencyPerSecond (30 минут * 60 секунд * на величину получаемого золота в секунду)
И тут-то, если больше 0, то показываем игроку окно, что "У вас накопилось
30*60*currencyPerSecond валюты. А в сумме у вас
10000 + 30*60*currencyPerSecond".
currencyPerSecond - может само по себе быть формулой, типа
количество построенных зданий * 2 или типа того.