logo Roms Land




🔬 Sciences 🎮 Jeux-vidéo 🏯 Japon 📚 Divers 🔑 Connexion
🔎     





🎮 Les shiny et la RNG dans Pokémon Émeraude

Aujourd'hui, je voulais écrire un petit article sur quelque chose d'assez (très) spécifique. Inutile de vous présenter Pokémon j'imagine, tant cette licence est connue et reconnue par la plupart d'entre nous, et ce quelque soit l'âge. Ce dont j'aimerais vous parler, c'est d'un fonctionnement présent dans l'immense majorité des jeux, ce qu'on appelle la RNG. Dans ce petit article, je vais prendre l'exemple de Pokémon Émeraude car il est particulièrement intéressant.

La RNG ? C'est quoi ?

La RNG, acronyme désignant les termes anglais "Random Number Generator", désigne souvent l'ensemble des phénomènes qui sont liés à la chance ou à l'aléatoire dans les jeux. En réalité, la RNG découle d'un principe fondamental de l'informatique : il est impossible de créer de l'aléatoire sur un ordinateur. Il en va donc de même pour les jeux-vidéo, et c'est problématique quand on sait la nécessité de gérer la chance, l'imprévu, et de laisser place à des phénomènes à priori non calculés dans les jeux-vidéo.

Image d'un logiciel de manipulation de RNG sur Pokémon (source)

C'est là qu'intervient la RNG ! Sans rentrer dans les détails que je ne maîtrise pas, son principe est de générer des nombres pseudo-aléatoires. Ces nombres sont calculés d'une façon définie mais complexe, ce qui les rend pratiquement aléatoires. Par exemple, imaginez que je choisisse de prendre l'heure exacte en ce moment même (disons 9h 52min et 31sec). Je peux générer un nombre à partir de cette heure là : 95231. Si j'applique un calcul sur ce nombre, comme par exemple la soustraction de chacun d'entre eux : 9-5-2-3-1, ça fait -2. On peut ensuite faire le carré de ce nombre là (donc 4) et le diviser par l'addition des deux derniers chiffres du nombre initial (soit 3 et 1), ce qui nous donne un résultat de 1. Si on applique ce même calcul 2 secondes après, on obtient un résultat final de 2.6, puis de 4.5, et ainsi de suite.

Ne vous attardez pas sur le calcul, je voulais juste donner un exemple pour illustrer le fait que la RNG essaye de générer des nombres dits "aléatoires", afin de gérer des évènements aléatoires (du moins en apparence) dans un jeu.

Et dans Pokémon ?

Et bien Pokémon ne fait pas exception à la règle, il utilise aussi la RNG pour gérer ce type d'évènements. Parmi eux, on retrouve l'apparition des Pokémon shiny. Si vous connaissez un petit peu la licence, vous devez savoir que ces Pokémon spéciaux sont des versions alternatives de chaque Pokémon, ayant des couleurs différentes. Ils sont très recherchés par beaucoup de joueurs car ils sont très rares, et leur chasse représente tout un aspect du jeu (j'ai moi-même passé pas mal de temps à les chercher).

Le Léviator Rouge, premier Pokémon shiny inclus dans le scénario du jeu (source)
Un Dracaufeu shiny sur versions Game Boy Color (source)

Les Pokémon shiny ont été introduits pour la première fois dans les versions Or et Argent sur Game Boy Color. Depuis ces jeux et jusqu'aux versions X et Y sur 3DS, le taux d'apparition de base des Pokémon shiny était d'une chance sur 8192. Dès la Game Boy Color, les développeurs ont donc essayé de trouver une façon de gérer cet évènement rare, afin de le rendre le plus aléatoire possible. Leur astuce, à l'époque, était de lier leur apparition aux statistiques de chaque Pokémon : ils possèdent tous une valeur de PV, d'attaque, de défense, de spécial et de vitesse. Plus précisément, pour une même espèce de Pokémon, chaque Pokémon possède une "pré-disposition" à avoir une statistique plus élevée qu'un autre Pokémon de la même espèce : on appelle ça les IV (Individual Value). Chaque Pokémon a une valeur IV définie, elle aussi par RNG, au moment de la capture. Elle peut varier entre 0 et 15, et rend certains Pokémon plus puissants que d'autres.

Quel rapport avec les Pokémon shiny me direz-vous ? Et bien sur les versions Or et Argent, le caractère shiny d'un Pokémon dépendait entièrement des IV de ce même Pokémon. En effet, pour qu'un Pokémon soit shiny, il fallait qu'il ait des IV de 10 dans chaque statistique, sauf en attaque où les valeurs suivantes étaient possibles : 2, 3, 6, 7, 10, 11, 14 ou 15. Je vous épargne les calculs savants que je ne maîtrise pas moi même, mais la fréquence d'apparition des Pokémon ayant de telles statistiques est d'une chance sur 8192, comme mentionné plus haut. Rien que ça !

Pourquoi parler de Pokémon Émeraude alors ?

A partir de la 3ème génération de jeux Pokémon, le système de détermination des Pokémon shiny a drastiquement changé. Dorénavant, le caractère shiny d'un Pokémon ne dépend plus de sa statistique de PV, d'attaque, de défense, de spécial ou de vitesse : il est désormais indépendant. Les versions Game Boy Advance Rubis et Saphir utilisent un tout nouveau système basé sur la présence de la pile CR1616 dans la cartouche, et qui permet de gérer les évènements liés au temps dans le jeu (comme la pousse des baies, notamment). Si cette pile était déjà présente dans les anciennes versions Game Boy Color, elle gérait essentiellement la sauvegarde du jeu. A partir de la Game Boy Advance, les sauvegardes ne sont plus gérées par la pile : seuls les évènements liés au temps dépendent de cette dernière.

Eon Timer, le logiciel permettant de compter les frames (source)
Photo de cartouches de jeux Game Boy Advance montrant la pile CR1616 (source)

Pokémon Rubis et Saphir gèrent les Pokémon shiny de la façon suivante : à chaque démarrage du jeu, ils génèrent un nombre dit "aléatoire", et à partir de ce nombre et de données propres à la sauvegarde du joueur, des "frames" sont calculées (des images du jeu, c'est à dire des moments très précis) durant lesquelles les Pokémon shiny apparaîtront à coup sûr. Sur Pokémon Émeraude, c'est presque la même chose, à une différence près. Au démarrage du jeu, le nombre "aléatoire" est à la place toujours égal à 0, ce qui veut dire que sur Émeraude, ces fameuses "frames" dépendent seulement des données propres à la sauvegarde du joueur. Présenté comme ça c'est peut être un peu compliqué, mais en d'autres termes cela veut dire qu'en extrayant ces données de sauvegarde, il est possible sur Pokémon Émeraude avec un simple chronomètre et un peu de patience d'obtenir n'importe quel Pokémon shiny à coup sûr.

Montre-moi que je puisse me rendre compte de tous ces concepts un peu abstraits

En fouillant un peu sur YouTube, j'ai pu trouver cette vidéo d'un streamer nommé "eco8gator" (cliquez ici pour accéder à sa chaîne) chassant les Pokémon shiny avec cette méthode. Voyez par vous-même :

Un peu d'explications à tout ça, car peu de choses sont montrées dans la vidéo. Dans un premier temps, le streamer a téléchargé un certain nombre d'utilitaires lui permettant de calculer un nombre caché à partir de sa sauvegarde (les fameuses données de sauvegarde qui déterminent les "frames" des Pokémon shiny, comme je vous l'expliquais plus haut). Concrètement, il doit rentrer des données comme l'identifiant dresseur affiché sur sa carte de dresseur en jeu, et l'utilitaire lui donne, à la fin, une ou plusieurs frames durant lesquelles les Pokémon shiny apparaîtront. Ensuite, il utilise ce qu'on appelle un "timer" : c'est un petit logiciel qui converti ces frames en valeur de temps réel (minutes ou secondes). C'est là que ça devient beaucoup plus concret : si le timer vous affiche une valeur de 55 secondes et 34 millisecondes par exemple, il faudra attendre, à partir du démarrage du jeu, exactement 55 secondes et 34 millisecondes avant de rencontrer un Pokémon. Si vous êtes assez précis, vous rencontrerez alors à coup sûr un Pokémon shiny (et c'est ce qui se passe sur la vidéo).

Vous pouvez bien évidemment faire ça à l'infini, étant donné que le nombre de frames est propre à votre sauvegarde. Donc tant que vous ne réinitialisez pas votre partie, les frames ne changeront pas. Sur les versions Rubis et Saphir, la valeur du nombre déterminé au démarrage du jeu change à chaque nouveau démarrage (contrairement à Émeraude où elle vaut toujours 0 comme expliqué plus haut), ce qui rend le calcul beaucoup plus complexe. En retirant la pile CR1616 des cartouches cela dit, il vous suffira de créer une nouvelle partie, et le nombre généré au démarrage du jeu sera toujours le même après chaque démarrage du jeu.

C'est tout pour cet article ! C'est assez technique et compliqué à comprendre pour les non-initiés, mais j'avais envie de parler de ça, et j'ai essayé d'expliquer de la façon la plus simple possible tout en allant un petit peu dans les détails.

A bientôt, et merci d'avoir lu !


Mots-clés : pokémon, pokemon, shiny, RNG, jeux-vidéo, jeux, vidéo

📅 2024-02-18 par Avatar roms2332


🖋 Commentaires

Veuillez vous connecter pour pouvoir commenter les articles.


📄 Derniers articles

🔬 Journal de labo #5 - un complexe sauvage apparaît

 📅 2024-03-22
dans 🔬 Sciences par Avatar roms2332

🏯 Comparatif des poulets frits des konbini japonais

 📅 2024-03-16
dans 🏯 Japon par Avatar ninananère

🔬 Journal de labo #4 - Pourquoi s'embêter à purifier ?

 📅 2024-03-02
dans 🔬 Sciences par Avatar roms2332

🏯 Un repas croate dans un bar turc au Japon

 📅 2024-02-23
dans 🏯 Japon par Avatar ninananère

🔬 Technique - Électrophorèse SDS-PAGE

 📅 2024-02-21
dans 🔬 Sciences par Avatar roms2332

🎮 Les shiny et la RNG dans Pokémon Émeraude

 📅 2024-02-18
dans 🎮 Jeux-vidéo par Avatar roms2332

🔬 Journal de labo #3 - Repartir de (presque) zéro

 📅 2024-02-15
dans 🔬 Sciences par Avatar roms2332

📚 L'espace membre est disponible !

 📅 2024-02-14
dans 📚 Divers par Avatar roms2332

🔬 Journal de labo #2 - Trouver les bonnes conditions

 📅 2024-02-02
dans 🔬 Sciences par Avatar roms2332

🎮 Les chroniques de Guild Wars #1 - Dernier passage en Tyrie

 📅 2024-01-28
dans 🎮 Jeux-vidéo par Avatar roms2332