N'envoyez pas simplement un score entier au serveur. Envoyez une collection de statistiques de jeu qui peuvent être utilisées pour vérifier que le score est réaliste. Ou vous pouvez implémenter une clé pré-partagée pour calculer le score. Vous pouvez envoyer des scores et des statistiques incrémentiels tout au long du jeu et vous assurer que l'augmentation est raisonnable.
Cependant, je ne m'en inquiéterais pas trop. Les suggestions ci-dessus rendront plus difficile, mais pas impossible, d'envoyer un faux score. Cependant, si vous le rendez un peu difficile, une grande majorité de personnes qui jouent à votre jeu ne seront pas intéressées à essayer de le tromper.
Faites attention à la façon dont vous autorisez votre jeu à communiquer avec votre serveur. Vous ne voulez pas que votre jeu soit un point d'entrée dans votre serveur pour le piratage. Assurez-vous de toujours valider votre saisie et de ne jamais faire confiance au client.
Comme l'a dit Byte56: "ne faites jamais confiance au client", mais:
Ne jamais faire confiance au client a un prix:
avoir tous les jeux joués sur le serveur augmentera considérablement le coût de votre infrastructure.
En supposant que la plupart des joueurs ne tricheront pas
et que le meilleur score se stabilisera après un peu de temps et cessera de changer beaucoup
il y a une voie médiane.
Enregistrez les jeux (sur le client).
(Selon le type de jeu, cela peut être super facile (par exemple, les échecs) ou un peu compliqué (par exemple, un FPS multijoueur),
mais c'est toujours faisable.)
Lorsqu'un joueur termine une partie, il suffit de soumettre le score.
Si le score se situe dans une certaine plage au sommet (par exemple, 1% ou 5 premiers),
demandez les données enregistrées au joueur
et rejouez ce jeu sur le serveur.
Si les scores correspondent, acceptez le score.
De cette façon, vous n'avez pas besoin de ressources supplémentaires côté serveur pour la plupart des jeux,
mais vous pouvez vous assurer que les meilleurs scores sont valides.
la source
Ne t'en fais pas; la protection contre toutes les attaques est pratiquement impossible si vous faites confiance au client. Si personne n'utilise Fiddler, etc., pour modifier la demande AJAX, il peut simplement lancer un débogueur JS et modifier vos données de jeu pour se donner 1000 vies, etc., ou modifier votre code, ou faire 100 autres choses auxquelles vous n'avez pas pensé.
J'ai écrit un tel jeu il y a plusieurs années, et à ma connaissance, personne n'a triché de cette façon. Il n'y avait pas de prix, sauf avoir votre nom sur la table de score.
la source
Réduisez la motivation sociale à tricher en utilisant, par exemple, des classements sociaux (la tricherie ne fait que paraître belle à une poignée d'amis, elle ne la gâte pas pour tout le monde).
Vérifiez sur le serveur. Joel Poloney avait une bonne description des techniques dans Game Developer 2012 September "Scale Your Online Game"
la source
Lorsque vous souhaitez créer un jeu en ligne infaillible, vous devez gérer toute la logique du jeu sur le serveur. Tout ce qui se passe côté client peut être contrôlé et manipulé par l'utilisateur. Il existe des techniques comme le chiffrement ou l'obscurcissement que vous pouvez essayer, mais en fin de compte, ce n'est que de la sécurité par l'obscurité qui peut être contournée par quelqu'un qui est suffisamment déterminé.
Bien sûr, un jeu qui s'exécute sur le serveur est beaucoup plus compliqué à développer, nécessite beaucoup plus de ressources côté serveur et la latence du réseau est préjudiciable à l'expérience de jeu (en particulier pour les jeux rapides), mais c'est le seul moyen empêcher les joueurs de tricher.
la source