Protection d'une Wherigo
Posté : mer. 26 juil. 2017 16:50
Cela fait plusieurs fois que des géo-amis se plaignent que leurs cartouches ne soient pas jouées sur le terrain, alors voici quelques idées pour protéger sa cartouche.
1/ Protections basiques disponibles dans les outils
Dans Urwigo ou Earwigo, quelques options sont à cocher de façon systématique.
Urwigo :
Cocher les cases de l'objet Cartridge :
- Obfuscate strings
- Encrypt answers
- Obfuscate identifiers
- Emulator Protection
Earwigo :
Cocher les cases de l'onglet Cartouche :
- Obscurcir les chaines de caractères
- Empêcher la cartouche de fonctionner dans l'émulateur
2/ Jeu sur simulateur
Pour éviter qu'un joueur joue de son canapé, voici quelques pistes :
- Demander au début une valeur dans l'environnement réel (nombre sur un réverbère...) qu'on ne peut pas voir sur Google Street View ou waymarking.com
=> Le joueur sera obligé de passer sur le site (mais ensuite il pourra joueur sur émulateur...) => Poser plusieurs questions pendant le jeu (de façon intégrée au scénario sans que ça gêne les joueurs)
[C'est une méthode facile et efficace]
- Mettre des zones invisibles à des passages obligatoires entre 2 zones (quand il n'y a pas d'autre chemin possible)
=> Par exemple une grande zone invisible englobant une zone visible. Si le joueur ne rentre pas dedans, il joue sur simulateur...
- Sur Urwigo, comparer l'expression "In Emulator" à la valeur "true" (au début ou à différents moments)
- Vérifier la valeur de (LUA user expression) "Player.ObjetLocation.altitude.GetValue(m)" entre le début et à un moment où elle devrait varier
- Comparer le champ Env.DeviceId aux valeurs "Desktop", "Webwigo", "emscripten", "browser" qui correspondent à des simulateurs (ou n'autoriser que les devices android, iphone, etc.)
Ces méthodes ne sont pas infaillibles mais bloqueront la plupart des tricheurs. Demander une valeur visible sur site uniquement est indispensable !
3/ Lecture du code source
Pour bloquer également les quelques tricheurs qui arrivent à lire le code source d'une cartouche, il faut idéalement que les coordonnées finales ne soient pas être en clair dans la cartouche.
- Relever un ou plusieurs nombres sur le parcours et calculer une formule à la fin (comme une multi). Seule la formule sera visible dans le code.
=> Très efficace. Par contre, vous ne pourrez pas vérifier que le joueur a rentré la bonne valeur (sinon, votre test avec la bonne valeur apparaît dans le code source), il faut donc que ce soit des valeurs sans ambiguïtés.
=> Une façon indirecte de tester, si sur un poteau il y a par exemple 12-34, vous pouvez tester que la somme des 2 nombres rentrés par le joueur fait 46.
- Placer des coordonnées ou partielles (décalage, projection...) dans une boite physique sur le parcours.
Pour ces méthodes, il faudra que le tricheur se déplace un peu plus que juste aller à la boite finale... donc cela ne vaudra pas forcément plus le coup que de jouer la cartouche
Pour mettre un peu de confusion dans le code source, vous pouvez aussi :
- Placer de fausses coordonnées finales dans un texte jamais affiché : inventaire, tasks, message...
- Placer de fausses coordonnées dans une image
- Calculer la valeur des coordonnées dans la cartouche, mais en ajoutant partout des calculs sur des variables, parfois vrais, parfois faux (faux au sens où la cartouche ne passera pas par ces branches mortes de code)
- etc.
De manière générale, quand vous pouvez, placez la boite à un endroit où il faudra de toute façon y aller en marchant.
Toutes les méthodes citées peuvent être utilisées individuellement ou mixées
Mais au final, n'oubliez pas qu'il suffit d'un coup de fil à un ami pour obtenir les coordonnées d'une boite... De plus, à trop protéger ses cartouches, on finit par plus ennuyer les joueurs honnêtes que les tricheurs. Privilégiez donc le plus le scénario, le côté ludique, le visuel, les sons et musique pour donner envie aux tricheurs de joueurs votre cartouche pour le fun
N'hésitez pas à proposer vos propres idées ! (sans trop en dévoiler bien sûr )
1/ Protections basiques disponibles dans les outils
Dans Urwigo ou Earwigo, quelques options sont à cocher de façon systématique.
Urwigo :
Cocher les cases de l'objet Cartridge :
- Obfuscate strings
- Encrypt answers
- Obfuscate identifiers
- Emulator Protection
Earwigo :
Cocher les cases de l'onglet Cartouche :
- Obscurcir les chaines de caractères
- Empêcher la cartouche de fonctionner dans l'émulateur
2/ Jeu sur simulateur
Pour éviter qu'un joueur joue de son canapé, voici quelques pistes :
- Demander au début une valeur dans l'environnement réel (nombre sur un réverbère...) qu'on ne peut pas voir sur Google Street View ou waymarking.com
=> Le joueur sera obligé de passer sur le site (mais ensuite il pourra joueur sur émulateur...) => Poser plusieurs questions pendant le jeu (de façon intégrée au scénario sans que ça gêne les joueurs)
[C'est une méthode facile et efficace]
- Mettre des zones invisibles à des passages obligatoires entre 2 zones (quand il n'y a pas d'autre chemin possible)
=> Par exemple une grande zone invisible englobant une zone visible. Si le joueur ne rentre pas dedans, il joue sur simulateur...
- Sur Urwigo, comparer l'expression "In Emulator" à la valeur "true" (au début ou à différents moments)
- Vérifier la valeur de (LUA user expression) "Player.ObjetLocation.altitude.GetValue(m)" entre le début et à un moment où elle devrait varier
- Comparer le champ Env.DeviceId aux valeurs "Desktop", "Webwigo", "emscripten", "browser" qui correspondent à des simulateurs (ou n'autoriser que les devices android, iphone, etc.)
Ces méthodes ne sont pas infaillibles mais bloqueront la plupart des tricheurs. Demander une valeur visible sur site uniquement est indispensable !
3/ Lecture du code source
Pour bloquer également les quelques tricheurs qui arrivent à lire le code source d'une cartouche, il faut idéalement que les coordonnées finales ne soient pas être en clair dans la cartouche.
- Relever un ou plusieurs nombres sur le parcours et calculer une formule à la fin (comme une multi). Seule la formule sera visible dans le code.
=> Très efficace. Par contre, vous ne pourrez pas vérifier que le joueur a rentré la bonne valeur (sinon, votre test avec la bonne valeur apparaît dans le code source), il faut donc que ce soit des valeurs sans ambiguïtés.
=> Une façon indirecte de tester, si sur un poteau il y a par exemple 12-34, vous pouvez tester que la somme des 2 nombres rentrés par le joueur fait 46.
- Placer des coordonnées ou partielles (décalage, projection...) dans une boite physique sur le parcours.
Pour ces méthodes, il faudra que le tricheur se déplace un peu plus que juste aller à la boite finale... donc cela ne vaudra pas forcément plus le coup que de jouer la cartouche
Pour mettre un peu de confusion dans le code source, vous pouvez aussi :
- Placer de fausses coordonnées finales dans un texte jamais affiché : inventaire, tasks, message...
- Placer de fausses coordonnées dans une image
- Calculer la valeur des coordonnées dans la cartouche, mais en ajoutant partout des calculs sur des variables, parfois vrais, parfois faux (faux au sens où la cartouche ne passera pas par ces branches mortes de code)
- etc.
De manière générale, quand vous pouvez, placez la boite à un endroit où il faudra de toute façon y aller en marchant.
Toutes les méthodes citées peuvent être utilisées individuellement ou mixées
Mais au final, n'oubliez pas qu'il suffit d'un coup de fil à un ami pour obtenir les coordonnées d'une boite... De plus, à trop protéger ses cartouches, on finit par plus ennuyer les joueurs honnêtes que les tricheurs. Privilégiez donc le plus le scénario, le côté ludique, le visuel, les sons et musique pour donner envie aux tricheurs de joueurs votre cartouche pour le fun
N'hésitez pas à proposer vos propres idées ! (sans trop en dévoiler bien sûr )