Statistiques des Blue Balls de Agahnim
Le fight avec Agahnim, c'est + qu'un fight, c'est un gimmick dans le speedrun de ALTTP, toutes catégories confondues. La raison principale ? Il est complètement aléatoire. Ainsi, si vous avez de la chance, ça peut aller très vite, mais si vous en avez moins, vous pouvez perdre une minute entière, et si vous n'avez VRAIMENT pas de chance, ça peut même aller jusqu'à quasi 2 minutes !!
Toute cette page est une version améliorée du Google Sheets que j'avais créé en février 2018. Construire ce document m'avait demandé pas mal de recherches (sur notamment comment marche la RNG dans ALTTP) et de connaissances mathématiques, et j'ai découvert un modèle mathématique bien plus complexe que je ne le pensais à la base. J'avais rédigé le Google Sheets de base en anglais afin de le partager avec la communauté du speedrun de ALTTP, mais à l'occasion du transfert sur ce site j'ai enfin pris le temps d'en écrire une version traduite en français, que voici.
Comment ça marche ?
L'explication est très simple, en revanche les maths qui en découlent sont plutôt compliquées. Agahnim peut envoyer 3 attaques différentes à Link :
- Les Energy Balls
- Ce sont des grosses boules d'énergie que Link peut renvoyer via l'épée ou le filet à papillon. Il faut en renvoyer 6 sur Agahnim pour terminer le combat.
- Les Blue Balls
- Les fameuses blue balls que Link ne peut pas renvoyer. Elle se divise en 6 lorsqu'elle rencontre un obstacle.
- Les éclairs
- Agahnim va se placer en haut de la salle au centre et tirer un éclair qui va se propager dans toute la salle devant lui. On peut deviner qu'il va lancer cette attaque car il ne se tourne pas vers Link avant de la lancer contrairement aux autres attaques.
Le schéma d'attaque de Agahnim est cyclique et comporte 5 attaques entrecoupées d'un déplacement aléatoire dans l'arène de combat (sauf pour l'éclair où il revient systématiquement en haut au centre). Les 5 attaques d'un cycle réparties comme suit :
- 100% de chances d'envoyer une Energy Ball
- 50% de chances d'envoyer une Energy Ball / 50 % de chances d'envoyer une Blue Ball
- 50% de chances d'envoyer une Energy Ball / 50 % de chances d'envoyer une Blue Ball
- 50% de chances d'envoyer une Energy Ball / 50 % de chances d'envoyer une Blue Ball
- 100% de chances d'envoyer un éclair
Ainsi, si on a de la chance, Agahnim n'enverra que des Energy Balls et le combat durera peu de temps. Mais si on est malchanceux, alors il va bourrer les Blue Balls et le fight va s'éterniser. A haut niveau, au-delà de 3, c'est run over. Pour information, une blue ball fait perdre environ 6 secondes, et si Agahnim lance un éclair supplémentaire, ce dernier fait également perdre 6 secondes.
Il faut également savoir que dans ALTTP, à l'heure où j'écris ces lignes (février 2023), la RNG n'est toujours pas manipulable et change à chaque frame, ce qui veut dire que pour pouvoir la manipuler il faudrait être sûr de ses inputs à chaque frame depuis le début du jeu. Le combat contre Agahnim arrivant au bout de 27~30 minutes de run, c'est humainement impossible.
Les données
Le tableau
| Nombre de blue balls | Probabilité | Temps perdu (en secondes) | Nombre de cycles | Proba nombre de cycles |
|---|---|---|---|---|
| 0 | 6,25% | 0 | 2 cycles | 34,375% |
| 1 | 12,5% | 6 | ||
| 2 | 15,625% | 12 | ||
| 3 | 31,25% | 24 | 3 cycles | 56,640625% |
| 4 | 11,71875% | 30 | ||
| 5 | 8,203125% | 36 | ||
| 6 | 5,46875% | 42 | ||
| 7 | 7,03125% | 54 | 4 cycles | 8,6669921875% |
| 8 | 0,87890625% | 60 | ||
| 9 | 0,48828125% | 66 | ||
| 10 | 0,2685546875% | 72 | ||
| 11 | 0,29296875% | 84 | 5 cycles | 0,3143310546875% |
| 12 | 0,01220703125% | 90 | ||
| 13 | 0,006103515625% | 96 | ||
| 14 | 0,0030517578125% | 102 | ||
| 15 | 0,0030517578125% | 114 | 6 cycles | 0,0030517578125% |
Les graphiques
Faites vos propres calculs !
Les données ci-dessus ne vous suffisent pas ? Faites vos propres calculs ! Utilisez le calculateur ci-dessous pour voir les probabilités d'obtenir plus ou moins de X blue balls.
Les 15 blue balls
Comme on peut le voir ci-dessus, avoir 15 blue balls, c'est une chance infime. Et non, je n'ai pas oublié de multiplier par 100, ces 0.003% c'est bel et bien la probabilité d'obtenir 15 blue balls en commençant le combat, soit une chance sur 33,333 (en gros).
Ces 15 blue balls, il n'existe qu'un seul runner qui ait pu les avoir tout en enregistrant l'extrait vidéo. Et ce, PAR DEUX FOIS. Ce runner extrêmement malchanceux s'appelle Screevo (ou stephen pour les intimes), et voici les extraits vidéos des deux fois où Agahnim la lui a mise bien à l'envers :
Le lecteur averti aura remarqué que la probabilité d'obtenir 14 blue balls est la même que pour obtenir 15 blue balls. C'est normal, et l'explication sera donnée dans la partie ci-dessous. De la même manière, il existe aujourd'hui un seul enregistrement d'un joueur qui n'a non pas atteint les 15 blue balls, mais qui est resté à la 14e. Une malchance dans la malchance !
Pour les nerds : les maths derrière tout ça
La théorie derrières les probabilités des blue balls d'Agahnim est rendue un peu complexe par son pattern semi-scripté. Dans les paragraphes ci-dessous, j'expliqué la méthode que j'ai utilisée pour parvenir à sortir les formules que vous verrez juste après. Cela va sans dir que toutes ces maths sont complètement inutiles pour le speedrun ; comprendre les formules et explications qui suivent ne rendront pas vos futurs combats plus rapides vu que c'est full RNG (et que la RNG est, entre autres, basé sur un compteur de frame sur lequel on n'a pas la main), mais à titre personnel je les estime avoir suffisamment d'intérêt pour être écrites ici.
Les formules
On se place dans la situation où le combat n'a pas encore commencé. Si l'on définit \(n\) comme étant le nombre de blue balls, on a les deux formules suivantes, où \(\left \lfloor x \right \rfloor\) est la partie entière de \(x\), et \(\binom{n}{k}\) le coefficient binomial "k parmi n" :
Probabilité d'avoir n blue balls
$$p_{bb}(n) = \frac{\binom{n + 3 - \left \lfloor \frac{n}{4} \right \rfloor}{n}}{2^{n + 4 - \left \lfloor \frac{n+1}{4} \right \rfloor}}$$
Temps perdu pour n blue balls
$$t_{loss}(n) = 6 \left (n + \left \lfloor \frac{n+1}{4} \right \rfloor \right )$$
Explications détaillées
Pour cette explication il faut que vous ayez bien en tête à quoi ressemble un cycle du pattern d'Agahnim, ce qui est expliqué dans un paragraphe au-dessus. Le combat se termine lorsque Agahnim envoie la 6e energy ball. La probabilité d'avoir \(n\) blue balls dépend des 50% de chances des attaques 2, 3 et 4 d'un cycle. Naïvement, on peut supposer qu'avoir \(n\) blue balls dans un fight c'est juste la somme des \(1/2^n\) pour toutes les valeurs possibles que peut prendre \(n\).
En vérité, mis à part pour 0 et 15, cette hypothèse ne marche pas bien : vu que la première attaque de chaque cycle est une energy ball à 100%, calculer de cette façon peut donner une répartition de \(n\) blue balls qui prend également en compte celles que Agahnim lâche après sa 6e energy ball, ce qui n'est pas possible vu que le combat est déjà terminé à ce stade. Par conséquent on a besoin de prendre ça en considération pour le calcul.
La manière donc j'ai procédé pour mes calculs est très simple. Mais d'abord, écrivons toutes les attaques, représentées par un nombre, en incluant l'energy ball qui sort forcément. L'éclair n'ayant aucun impact sur les calculs (uniquement sur le temps perdu), on va faire comme s'il n'existait pas pour simplifier l'explication.
| Cycle 1 | Cycle 2 | Cycle 3 | Cycle 4 | Cycle 5 | Cycle 6 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X | X | X | X | X | X | |||||||||||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
Regardons tout d'abord ce qui se passe pour 0, 1, 2 et 3 blue balls puis tentons de généraliser.
Cas 0 blue ball
Pour 0 blue ball c'est super simple : on sait que le combat se termine à l'attaque 6 : en effet, toutes les boules lancées seront forcément des energy balls et ça en prend 6 pour vaincre Agahnim. Du coup il n'y a qu'une seule manière d'y arriver : les attaques numérotées 2, 3, 4 et 6 doivent être des energy balls. Cette probabilité est de \(1/2^4\) ce qui donne \(1/16=6.25\%\) de chances d'arriver.
Cas 1 blue ball
Pour 1 blue ball, le combat va forcément se terminer à l'attaque numéro 7. Il ne peut pas se terminer à l'attaque 6 vu que c'est le cas 0 blue ball, et se terminer à l'attaque 8 nécessiterait 7 energy balls pour ce faire, ce qui n'est pas non plus possible. La question est maintenant de savoir quelle attaque va être la blue ball.
Une autre chose qu'on peut mentionner est que le combat se termine forcément à l'attaque 7, donc cette dernière est nécessairement une energy ball (ça peut pas se terminer sur une blue ball vu que Agahnim ne prend pas de dégât sur ces dernières). Cette remarque enlève la possibilité pour l'attaque 7 d'être une blue ball, ce qui laisse donc les attaques 2, 3, 4 et 6 comme potentielles blue balls.
La probabilité que une et une seule d'entre elles soit une blue ball est de \(1/2^4\). Mais n'oublions pas l'attaque numéro 7 qui est a également une chance sur 2 d'être une energy ball, ce qui est le cas. Par conséquent, ce qu'on cherche, c'est la probabilité que une et une seule des attaques numéro 2, 3, 4, et 6 soit une blue ball, sachant que l'attaque numéro 7 est une energy ball, ce qui donne \(1/2^5\). Enfin, on fait la somme de toutes ces possibilités (la blue ball étant soit l'attaque 2, soit l'attaque 3, soit l'attaque 4, soit l'attaque 6), ce qui donne \(4/2^5=4/32=1/8=12.5\%\).
Cas 2 blue balls
Pour 2 blue balls, je vous refais pas l'explication complète mais si vous avez lu le paragraphe précédent vous aurez compris que le combat se termine à l'attaque numéro 8, et que cette attaque numéro 8 est forcément une energy ball. On doit donc choisir deux spots dans l'ensemble \(\{2,3,4,6,7\}\), qui seront nos deux blue balls.
L'ensemble ci-dessus est un ensemble de 5 éléments et on doit en choisir 2 dans le tas : c'est là que le coefficient binomial intervient ! Si l'on écrit \(\binom{n}{k}\) le coefficient binomial "k parmi n", alors on a \(\binom{5}{2}\) possibilités pour nos deux blue balls. Il ne nous reste plus qu'à combiner cette information avec la probabilité de chaque possibilité d'avoir ces 2 blue balls dans l'ensemble \(\{2,3,4,6,7\}\) sachant que l'attaque 8 est nécessairement une energy ball, et ça nous donne le résultat suivant : \(\binom{5}{2}/2^6=10/64=15.625\%\) pour 2 blue balls.
Cas 3 blue balls
Pour 3 blue balls, le combat se termine à l'attaque 9. Mais c'est là que le calcul change, car contrairement aux cas 1bb et 2bb, l'attaque 9 a 100% de chance d'être une energy ball (cf. le tableau ci-dessus). On doit quand même choisir 3 spots pour les blue balls dans l'ensemble \(\{2,3,4,6,7,8\}\), ce qui équivaut à \(\binom{6}{3}\), cependant la probabilité à laquelle on va multiplier ce coefficient reste à \(1/2^6\) vu que l'attaque 9 a 100% de chances d'être une energy ball (techniquement c'est aussi une probabilité "sachant que l'attaque 9 est une energy ball", sauf que cette probabilité est de 1 cette fois) La probabilité d'obtenir 3 blue balls dans un fight est donc \(\binom{6}{3}/2^6=20/64=31.35\%\).
Généralisation
Terminons cette série d'exemples avec 4 blue balls. Dans ce cas, le combat termine à l'attaque 10, ce qui veut dire que c'est une energy ball. Mais vu que l'attaque 9 est aussi une energy ball, ça nous laisse les 4 spots à choisir dans le même ensemble que précédemment, c'est-à-dire \(\{2,3,4,6,7,8\}\). La puissance de 2 dans la probabilité va s'incrémenter (et donc valoir \(1/2^7\)), vu que l'attaque 10 avait également 50% de chances d'être une blue ball, mais dans le coefficient binomial seul le chiffre du bas va être incrémenté, ce qui donne \(\binom{6}{4}\).
A partir de tout ça on peut généraliser le processus pour chaque nombre de blue balls jusqu'à 15 (tout en supposant que le runner ne rate aucune energy ball à renvoyer, mais de toute manière ça ne devrait pas arriver, n'est-ce pas ? 😇), le calcul étant le même toutes les 4 blue balls puis changeant à chaque nouveau cycle à cause de cette nouvelle attaque qui a 100% d'être une energy ball.
Et c'est grâce à ça que j'ai obtenu la formule ci-dessus. Notez au passage que l'utilisation de la partie entière est là pour ajuster la probabilité à chaque nouveau cycle. Dans le cas contraire on aurait obtenu 5 formules différentes, chacune correspondant à un nombre de cycles différent.