Bien que j'aie fait le premier commentaire en questionnant le point de dégrader l'expérience d'une partie de votre auditoire sans aucun gain apparent, je la trouve quand même intéressante du point de vue technique.
Je viens juste d'avoir cette idée: ce que les tricheurs font, c'est trouver des valeurs qui changent et les figer. La recherche n'aurait alors lieu qu'entre des morts ou des événements qui ont changé la santé du joueur. De plus, le tricheur pourrait affiner la recherche en filtrant ce qui a changé quand il "ne mourait pas".
Que se passe-t-il si le compteur "santé" change tout le temps? Faites-en un pointeur et réaffectez-le toutes les images ou toutes les N images si les performances sont trop importantes. Ou bien XOR avec une valeur aléatoire qui change chaque image (XORing à nouveau avec la même valeur pour le déchiffrement avant le chiffrement avec une nouvelle valeur aléatoire).
Si vous avez d'autres données dans le jeu qui changent également tout le temps (y compris les positions x et y du personnage du joueur ou le compteur de temps), il pourrait être plus difficile de déterminer laquelle des données changeantes correspond à la santé. Et geler l’ensemble de l’état du jeu n’est pas une solution pour le tricheur.
Pour tromper davantage, vous pouvez réellement stocker la santé dans une variable en écriture seule appelée un pot à miel.
Modifier :
Néanmoins, le tricheur peut essayer de trouver laquelle des variables qui change tout le temps est celle qui doit être figée par essais et erreurs. Une solution possible serait de coupler les variables ensemble.
Un exemple:
Au lieu de stocker la santé (h) et la position (x), vous les stockez dans deux variables a et b, à partir desquelles vous pourrez récupérer les valeurs ultérieurement:
a = x+h; b = x-h
x = (a+b)/2; h = (a-b)/2
De cette façon, si le tricheur ne gèle qu'un seul d'entre eux et déplace le personnage, la position est affectée et, en fonction de celui qui a été gelé, h devient négatif (mort instantanée). Vous pouvez basculer entre les formules ci-dessus et:
a = x-h; b = x+h
x = (a+b)/2; h = (b-a)/2
Dans des images consécutives, et vous garantissez que dans au plus 2 images après que l’une ou l’autre des variables ait été gelée, l’intégrité passera à 0 au moment où x change. Rappelez-vous que vous ne stockez que a et b. Combinez cela avec le XOR continu comme mentionné ci-dessus. Le résultat est un ensemble de variables qui modifient chaque image en valeurs apparemment aléatoires, et geler une seule d'entre elles ou un sous-ensemble de celles-ci ne produit que des effets secondaires indésirables dans le jeu, dont la mort instantanée.