Our game is a single player / multiplayer game that will involve in app purchases such as unlocking characters and levels. Once these items are unlocked, players will be able to utilize said characters or pick said levels to play in.
I have been doing a ton of research on this, and I can't find how often I should sync / check my data to ensure players have the correct information, and are not gaming the system in anyway.
In short I guess my question is this. Would it be a bad idea if before the game starts every time I pulled the in app purchase data down to local storage and then acted upon that? Meaning once synced in the beginning of the game, every subsequent check (can I use this character, can I pick this level) would ask the local storage if these things are possible instead of asking the server every time.
Most likely I would pair this type of flow with some encryption on that local file to ensure it is not easily modifiable.
Part of the reason I thought this might be a good idea is due to us including single player. I keep getting stuck on what happens if a player wants to play the game and they have no connection to the internet? Surely they should be able to play with the characters and levels they have already purchased. If I had to query the server every time for this information I don't see how that would be possible.
Thanks so much for the help in advance! You guys have some stellar support.