El algorithme est déterministe, mais on peut soutenir que le résultat global du lancement d'un oiseau est effectivement non déterministe parce qu'il repose sur la saisie (extraordinairement sensible) de l'utilisateur.
Pour tester l'algorithme et l'effet de l'entrée de l'utilisateur sur celui-ci, j'ai utilisé la procédure suivante :
- Chargez la version Google Chrome de Angry Birds
- Niveau de charge 1-1
- Ramenez la souris sur une coordonnée X-Y spécifique. (C'était après le point de "dessin complet" pour l'oiseau).
- Relâchez l'oiseau, et attendez que le jeu atteigne un état stable.
Pour mesurer mes coordonnées X-Y, j'ai ouvert une fenêtre Chrome en arrière-plan, et j'ai navigué jusqu'à l'adresse suivante cette page . J'ai aligné les deux fenêtres de façon à pouvoir voir les positions X et Y de la souris tout en étant capable de provoquer quelque chose lorsque je relâche l'oiseau. J'ai aligné le curseur de ma souris avec le coin inférieur gauche de la boîte autour de ces deux chiffres, puis j'ai relâché. J'ai alors noté la position du curseur de ma souris (car l'affichage ne se met à jour que lorsque la souris n'est pas relâchée et que le curseur est au-dessus de cette fenêtre), puis j'ai noté le score obtenu dans Angry Birds. Si vous avez des problèmes avec le positionnement exact de la souris, vous pouvez essayer une option d'accessibilité offerte par votre système d'exploitation, par exemple, Touches de la souris sur Windows.
J'ai obtenu le même résultat, tant que mon curseur se trouvait dans le champ exactement au même endroit comme c'était le cas sur les itérations précédentes.
Avant de mettre au point un banc d'essai amélioré me permettant de mesurer la position de mon curseur au pixel près, j'ai réalisé cette expérience une dizaine de fois, en utilisant un point de référence dans l'image de fond du jeu. J'ai obtenu des scores en tirant le premier oiseau qui variaient entre 8 000 et 11 000 points. En utilisant la stratégie de test améliorée, si je me trompais d'un seul pixel, je pouvais m'attendre à des différences de score allant de 150 à 500 points.
Je noterai que le curseur était au-delà du bord de l'aire de jeu en dehors de la fenêtre du navigateur, bien au-delà de la distance maximale à laquelle l'oiseau peut être reculé, et j'ai quand même remarqué des différences en déplaçant mon curseur même un seul pixel.
De plus, j'ai pris des captures d'écran pour un cas extrême où mon curseur se trouvait sur un écran différent que la fenêtre de jeu, et j'ai fait plusieurs itérations où j'ai gardé mon curseur au même endroit, ou je l'ai légèrement déplacé. D'après mes calculs (basés sur la mesure de la distance à partir de captures d'écran), le jeu a pu créer un résultat différent (score 32960 contre 31520) sur la base d'une différence de hauteur d'un pixel (544 contre 545 pixels) sur une distance d'environ 1 284 pixels de largeur. Cela correspond à une différence angulaire de 0,03 degré.
Je dirais qu'à toutes fins utiles, vous pouvez vous attendre à employer la même stratégie générale sur le même niveau à plusieurs reprises et à obtenir des résultats très différents. Le niveau de sensibilité des commandes est si extrême qu'il n'y a aucun moyen pratique de faire faire la même chose deux fois. Ceci est exacerbé par le fait que si vous jouez sur un écran tactile, il serait extraordinairement difficile de reproduire les mêmes mouvements au pixel près.
156 votes
Comment pouvez-vous être sûr que l'entrée que vous donnez est 100% identique ?
6 votes
Une entrée parfaite peut être donnée via l'émulation d'un téléphone, des programmes spéciaux ou, tout simplement, la version de bureau du jeu avec la souris, comme l'a fait agent86.