Saving global stats that are accessible with listFriends request.
I am trying to find a way to store data for things like:
xp, rank points, currentSkin, currentHat, etc..
So that when a players logs in and gets list of friends he will be able to see their level, rank apoints, and aesthetic stuff like skin and hat.
So I though summaryFriendData is a great place to keep these stats because it is automatically added in many responses, BUT... clients can just alter their own summaryFriendData and set "xp" to 999,999, "rank points" to 999,999 and "currentSkin" to "superRareSkin" (and cheat).
So my question is, where do I store this kind of public data while still (a) getting it for each friend in listFriends request. (b) not letting the client alter it and the opportunity to cheat.
To limit operations like IncrementExperiencePoints() to cloud code only. This will essentially take away the ability to make these calls from the bare client API. You can see a script that enforces these restrictions here - https://getbraincloud.com/apidocs/cloud-code-central/handy-cloud-code-scripts/restrictclientcalls-script/
Refer to another post below for more strategies you can apply to prevent cheating: https://forums.getbraincloud.com/topic/23/discussion-strategies-to-prevent-cheating-in-tournaments