Creating time based event/item upgrade on mobile

Hello all,

I am thinking of make a F2P mobile game and there is an issue that I can’t get my head around, I can’t find the right approach. In a lot of F2P game, there are always a time based upgrade where players are asked to wait a certain amount of real time in order to finish a upgrade etc. I want to know what will be the best way to do it, I know this will definitely involve getting the server time. The one I am thinking of is Gamespark. (I am not just using it to check server time, i am using their other features too.)

Here is my solution that I think it will work:

  1. Player presses a button to start upgrade
  2. Send a request to server to record the time start
  3. When player enters back into the game, it check the server time again to see if this upgrade has finished.

But this only works on devices that always online. And if player is offline, there is no way to check the server time. If time information is stored on devices, there will be a chance that player just change the time on device. I have seen asset like Time-cheat prevention on asset store, but I am not sure how reliable this can be.

Is there a good solution that allow player to start time based upgrade when offline and not be able to cheat? I know there is no prefect solution. But I would like to know how people create this kind of system in nowadays.
It will be nice if people can share their thoughts or ways to do it.

Thank you very much for your time.

Derek

If you dont want to send and get back the last time used, you can use the standards playerprefs or save the value on the device with some encrypt

I thought of that too, but user can just change the device time to redeem reward.

Mh, don’t think of it… maybe you can use only the time downloaded from interntet?
Another way is create some user account on a server and use some cache to download the time, but looks boring.

I am just trying to find out what other people deal with this problem. I think only limiting people online is the only option

Yeah, but why you don’t check with internet only the current time?
If the player set another time on the device, you do not care. You save the record with the last time get from internet in the device (crypted, of course), and when the application load again it need the connection, but only to know the current time!