Pour éviter les hacks de base de Cheat Engine qui manipulent les valeurs de vos variables, vous devez masquer ces valeurs. En règle générale, Cheat Engine est utilisé pour identifier l'emplacement de la mémoire des variables intéressantes (par exemple, la quantité d'or ou de vie ou le niveau de mise à niveau d'une capacité) en effectuant une recherche pour la valeur connue de ladite variable, jouer plus du jeu et faire en sorte que la valeur changer, alors Cheat Engine ferait une nouvelle recherche à partir du résultat de la recherche précédente pour la nouvelle valeur. Cela permet au tricheur de zoomer sur l'emplacement de mémoire de la valeur, maintenant il peut changer la valeur de cet emplacement de mémoire en utilisant Cheat Engine.
Par exemple, j'ai 245 GOLD ... avec Cheat Engine, je fais une recherche de 245 et trouve de nombreux emplacements de mémoire. Ensuite, je joue un peu plus et porte mon or à 314, je recherche ensuite la sortie de recherche précédente pour la valeur 314 et trouve facilement l'emplacement de mémoire où GOLD est stocké.
Le moyen d'éviter cela est de ne jamais avoir la valeur réelle stockée dans un emplacement mémoire. Par exemple, je stocke la valeur dans un objet qui doit calculer la valeur réelle à la demande lorsqu'elle est requise. Disons donc que le joueur a 245 OR. S'ils recherchent un emplacement de mémoire avec la valeur 245, ils peuvent en trouver plusieurs, mais aucun d'entre eux ne sera l'emplacement de mémoire où la valeur d'or est réellement stockée, c'est parce que vous ne stockez pas la valeur 245 pour l'or. Lorsque le jeu a besoin de savoir combien d'or, il demandera à l'objet qui en détient la valeur, qui le calculera à la demande.
La question est donc maintenant: comment stockez-vous exactement une valeur d'une manière qui ne la révèle pas? Cela devient un peu délicat et moche et je suis sûr qu'il y a plusieurs façons de le faire. Ce que j'aime faire, c'est stocker un tableau booléen (ou tableau d'octets). La longueur du tableau peut être n'importe quoi, mais disons qu'elle est 13. Ensuite, vous avez un compteur qui représente combien de fois 13 entre dans cette valeur réelle. Donc, si nous voulons représenter 245, le compteur aurait une valeur de 18. Maintenant, le tableau aurait tous les booléens mis à true pour le reste de 245/13 ... essentiellement le module. Dans ce cas, c'est 11, donc les 11 premiers booléens du tableau seront définis sur true, les autres sur false. Pour récupérer la valeur, tout ce que vous devez faire est de multiplier le compteur par la longueur du tableau, puis ajoutez 1 pour chaque ensemble booléen à true (arrêt au premier faux). Maintenant, le nombre 245 ne serait jamais stocké nulle part et il serait difficile de trouver l'emplacement de mémoire qui devrait être manipulé pour modifier la quantité d'or. Vous souhaiterez peut-être définir la longueur du tableau sur différentes tailles (peut-être choisir au hasard un nombre entre une plage raisonnable) lorsque cet objet est créé.
EDIT: Ceci est utile pour le multijoueur et le solo. Il y a de la triche qui peut également être effectuée en multijoueur, où les valeurs dans les paquets peuvent être modifiées. Cela nécessiterait différentes techniques pour empêcher, comme la signature de chaque paquet.