The importance of game point 💡


Active member
3rd Party Module Dev
3rd Party Tool Dev
Mar 5, 2018
I realize how important to have a good solution for the game point. Game points are something valuable to the user. In a lot of cases, it means money. Or it reflects their effort and valuable time that they spend. We need to respect that.

Saving on device vs. cloud

User sometimes has many devices. It is good if they can play the same game on any of their devices and share the same state. This makes saving in the cloud good. The problem is cloud saving needs
  1. Server $
  2. Good sync data solution
  3. Need to identify user ID. Need login system. And users hate registration.
On the other hand, In-device data is simple, but their data is gone if something happens. If they contact us, we can't help to recover their state. Free gift game point or restore based on user info could introduce another issue like cheating.

Why does data need to be secure?

Some people said it's just the game. Why so serious? It is because it means money and pride. If someone plays some game for hundred hours and spends hundred of $ on it, that data is precious to them. When someone hacks data or can cheat the game data and quickly becomes top in high score, this has a terrible impact on the actual user who spends real time and money. If they sense a lot of fake people and fake points to the system, they will lose interest and go. Sadly this 5% of people are actually the ones that significantly contribute income to the game.
For android, I have seen people cheat the data. In our case, it stays at SharedPreferences under the name ".cerberusstate" and is not encrypted, and the user can edit it (i think). It is good if we can encrypt it before saving it. I know a lot of users don't know how but one hacker can do that and help other users for free points.


It is nice if we can for example:
SaveState:Void(String state,String password="")
LoadState:String(String password="")

For Android target, I found
which can encrypt and decrypt strings easily.

For HTML5 target, we can use Cipher which already in JS.
function encrypt(data,password){
    const myCipher = cipher(password);
    return myCipher(data); 
function decrypt(data,password){
    const myDecipher = decipher(password);
    return myDecipher(data);

I'm not sure what the solution is for IOS
Top Bottom