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
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.
Idea
It is nice if we can for example:
For Android target, I found https://github.com/simbiose/Encryption
which can encrypt and decrypt strings easily.
For HTML5 target, we can use Cipher which already in JS. https://en.wikipedia.org/wiki/Cipher
I'm not sure what the solution is for IOS
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
- Server $
- Good sync data solution
- Need to identify user ID. Need login system. And users hate registration.
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.
Idea
It is nice if we can for example:
Code:
SaveState:Void(String state,String password="")
LoadState:String(String password="")
For Android target, I found https://github.com/simbiose/Encryption
which can encrypt and decrypt strings easily.
For HTML5 target, we can use Cipher which already in JS. https://en.wikipedia.org/wiki/Cipher
Code:
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