Takafumi Horiuchi

Génération de mon propre Pokémon dans le monde

Résumé

À partir des six mots saisis en cours de jeu, l'IA génère un nouveau type de Pokémon. Quelques minutes plus tard, ce nouveau Pokémon apparaît dans les herbes, et le joueur peut le rencontrer, le capturer et lui donner un surnom. Nous avons créé un prototype de recherche qui assemble sur place non seulement l'apparence et le nom, mais aussi le type, les valeurs de base, les techniques et les données utilisées dans le jeu.

Dans le prototype, la conversation, la saisie de mots, la génération en arrière-plan, les rencontres dans la nature, la capture et la nomination ont été reliées en une seule expérience sans arrêter le jeu. Les nouvelles espèces sont enregistrées non pas comme de simples images, mais comme des races que le système de jeu existant peut gérer.

Ce sur quoi nous nous sommes concentrés dans cette initiative n'est pas le modèle génératif lui-même. Il s'agit d'un « cadre de génération » dans lequel les humains conçoivent les conditions pour maintenir l'équilibre du jeu et la cohérence visuelle, et ne laissent l'IA explorer que dans cette limite. De plus, nous avons examiné préalablement, en jouant nous-mêmes, si l'attachement se développerait vraiment pour une création exclusive.

Question — Si c'est unique en son genre, un attachement naîtra-t-il ?

Les jeux offrent le plaisir de choisir un personnage, de le développer et de lui donner un nom pour en faire une « existence qui vous est propre ». Cependant, ce point de départ se trouve parmi les choix préparés par les développeurs. Si, grâce à l'IA générative, il était possible de créer une existence spécifique au joueur dès le point de départ, l'attachement deviendrait-il encore plus fort ?

Pour vérifier cette question, il ne suffit pas de générer une seule image. Il est nécessaire que l'entité générée entre dans le monde du jeu, rencontre, capture et continue à être utile par la suite. Ainsi, nous avons préparé deux points d'entrée différents, impliquant le joueur de manière différente. En parlant au grand-père, la génération se fait sans aucune entrée, et en parlant à la grand-mère, le joueur choisit six mots. Le côté auquel on parle en premier détermine la méthode de génération pour cette partie.

Le but de ce prototype n'est pas de tirer des conclusions sur l'attachement. Il s'agit de créer une base pour intégrer les produits dans une expérience de jeu normale et de trouver des conditions comparables pour l'avenir.

Déroulement du jeu

Voici le déroulement de la « génération par engagement » où le joueur choisit des mots. On parle à une grand-mère dans la forêt de Touka, puis on choisit six mots avec la « conversation facile » déjà présente dans le jeu. La génération progresse pendant que l'on continue à jouer et, lorsque tout est prêt, on entend un cri. En entrant dans les hautes herbes, une nouvelle espèce apparaît et peut être capturée avec les mêmes manipulations que pour un Pokémon sauvage normal. Le nom, le type, les valeurs de base, les capacités, les sprites de combat avant et arrière, ainsi que l'icône du Pokémon tenu sont générés à chaque exécution. L'ensemble de ces actions peut également être vérifié dans Vidéo de démonstration.

Un vieux couple se tenant dans la forêt de Touka. La fenêtre de dialogue affiche : « À quel genre de créature penses-tu ? »
Cela commence quand on parle à la grand-mère.
Écran de saisie d'une conversation simple intitulé « Les créatures auxquelles on pense : ». Les mots BEAUTIFUL, ATTACK, FIRE y sont saisis.
Avec le « conversation facile » d'origine dans Émeraude, transmettez six mots.
Un joueur se tient près des herbes de la forêt. La fenêtre de dialogue affiche : « Les herbes tremblent... Il y a quelque chose ! »
La génération prend quelques minutes sur le PC. Les cris annoncent que la préparation est terminée.
Écran de combat. Un lézard rouge avec des flammes sur la tête fait face au joueur. Il est affiché : « Un FLAMEREL sauvage est apparu ! »
Le lézard de type feu FLAMEREL apparaît des herbes qui ondulent.
Pendant le combat, une Poké Ball est lancée vers FLAMEREL.
Comme les autres espèces, il peut être capturé avec une Poké Ball.
Écran de nommage demandant le surnom de FLAMEREL. 'GGG' est saisi.
Comme les autres races, on peut lui donner un surnom.
Écran de l'inventaire. Les espèces générées ont une icône dédiée et sont alignées avec trois Pokémon ordinaires.
Comme les autres races, elles ont une icône dédiée et se rangent dans l'inventaire.
Écran d'information du Pokémon FLAMEREL. Type Feu, capacité spéciale Brasier, nature hardie, rencontré au niveau 7 dans la forêt de Touka.
Comme pour les autres races, l'écran de statut fonctionne correctement.

Problème de conception — Si vous générez librement, le jeu se casse

Le fait qu'une IA puisse imaginer un nouveau personnage et le fait que ce personnage fonctionne dans un jeu sont deux problèmes différents. Si ses capacités sont trop élevées, la difficulté s'effondre, et s'il y a un mauvais alignement entre le type et les compétences, il devient difficile à entraîner. Si son apparence est trop complexe, il devient impossible de discerner sa forme lorsqu'on la convertit en sprite de 64×64 pixels.

D'autre part, si tout est fixé, il n'y a aucun sens à ce que des choses différentes apparaissent à chaque exécution. Ce qui est nécessaire, ce n'est pas de supprimer la liberté de l'IA, mais de distinguer les parties à protéger en tant que jeu et les parties à laisser varier.

Ainsi, l'objet du design a été déplacé d'un seul Pokémon vers un espace capable de générer des Pokémon. L'humain définit les objectifs, les contraintes, les interdictions et les méthodes de vérification, et l'IA concrétise les candidats à l'intérieur de ce cadre. Il s'agit d'un essai de design contraint Ma philosophie de design en tant que prototype fonctionnel.

Approche — concevoir les conditions de génération plutôt que le produit généré

On ne fait pas écrire de texte libre au LLM, mais on le fait remplir uniquement les éléments définis tels que le nom, le type, les valeurs de base, les techniques, la morphologie et la couleur. La sortie n'est pas adoptée telle quelle, mais vérifiée par un validateur. En cas de violation, on renvoie au modèle la règle enfreinte et on régénère jusqu'à ce que les conditions soient remplies.

  1. Les humains déterminent les frontières. Faites des règles inspectables concernant l'équilibre du jeu, la forme lisible à l'écran et les expressions à éviter.
  2. L'IA concrétise les propositions. Proposer des valeurs d'éléments autorisés en se basant sur les mots du joueur.
  3. La machine vérifie les règles. Évaluer automatiquement les valeurs numériques, les combinaisons de techniques et les expressions interdites.
  4. Ne faire un retour que sur les violations. Les candidats qui ne remplissent pas les conditions sont renvoyés avec les raisons et régénérés.

Des contraintes pour protéger le jeu. Le total des valeurs de base est compris entre 280 et 360, et des limites supérieures et inférieures ont été imposées à chaque capacité. Les techniques ont été extraites des sources du jeu, en se concentrant sur le type de la famille ou le type normal. De plus, les attaques One-Hit KO, l'explosion, les dégâts fixes et les techniques trop puissantes ont été exclues, et le nombre d'attaques ainsi que la présence de techniques correspondant au type ont également été vérifiés. Le taux de capture et la vitesse de croissance ont été fixés afin que les différences dues à la génération puissent rester dans une plage comparable.

Une contrainte pour préserver l'apparence. La morphologie a été choisie parmi les candidats qui permettent même à un petit sprite de conserver ses contours, et le vocabulaire des couleurs et des caractéristiques a également été limité. Les traits humains, le sang, les armes et les caractères ont été exclus. Enfin, les conditions pour éviter les anomalies, telles que « un seul corps », « corps entier » et « ne pas créer de membres supplémentaires », doivent absolument être ajoutées aux instructions de génération d'images.

Selon un enregistrement, le modèle a d'abord proposé un plan avec une somme de valeurs de race de 380. Le cadre détectait les violations et incitait à la régénération, convergeant finalement vers une spécification de 320. L'important n'est pas que de bons résultats surviennent par hasard, mais que le processus ait été conçu de manière à ne pas adopter de résultats en dehors du cadre.

Terminer l'expérience à l'intérieur du jeu

Ce que le joueur touche, ce sont seulement les conversations dans le jeu, le choix des mots et les rencontres dans les herbes hautes. Il n'est pas nécessaire d'ouvrir un autre écran pour la génération. Par ailleurs, les traitements à forte charge de calcul sont pris en charge par un processus Python sur le PC, qui communique avec le jeu via des fichiers. Un script Lua sur mGBA fait le lien entre les deux, séparant ainsi la sensation de jeu existante des traitements de l'IA externe.

  1. Créer des spécifications. Le modèle de langue local convertit six mots en données ethniques vérifiées.
  2. Former une figure. Le modèle d'image dessine une illustration de référence, puis génère des icônes de face, de dos et de main de manière cohérente.
  3. Convertir en données pour le jeu. Réduire l'image à 15 couleurs, puis la convertir et la compresser en sprites et palettes pouvant être utilisés par la GBA.
  4. Appliquer au jeu en cours d'exécution. Écrire des données dans la zone réservée et faire apparaître une nouvelle espèce sans redémarrer le jeu.

Comme les mêmes données sont également écrites sur le disque, les races reflétées restent même après avoir rechargé le jeu. La génération se fait une seule fois et ne peut pas être annulée. Si vous fuyez la rencontre ou êtes vaincu, elles restent dans le monde, mais si vous les battez, elles ne réapparaîtront jamais. Cette irréversibilité est également un design destiné à donner à l'expérience le sens de "seul un exemplaire dans le monde".

Ce qui a pu être confirmé avec le prototype

Ceci est une vérification de faisabilité réalisée seul, et non pas un jeu complet ou une expérience utilisateur. Les points atteints et les parties non vérifiées sont séparés comme suit.

Le résultat de mon propre essai — être unique en son genre ne suffisait pas à susciter de l'attachement.

D'après mon propre essai du prototype, je n'ai pas développé un attachement fort pour les Pokémon générés. Il s'agit du ressenti personnel de l'implémenteur lui-même et ce n'est pas un résultat expérimental généralisable. Cependant, cela m'a donné un indice sur ce qu'il conviendrait de changer ensuite pour comparer.

Il y a deux conditions qui semblent influencer l'attachement.

En contraste, il y a « Hanagitsune », créé non pas par génération automatique pour les jeux, mais en combinant dialogues avec plusieurs intelligences artificielles génératives et travail manuel. J'ai de l'affection pour ce personnage, car j'ai comparé les propositions, les corrigé et travaillé jusqu'à obtenir une forme satisfaisante. Je pense que c'est parce qu'il y avait à la fois une qualité suffisante et un engagement incluant des essais et erreurs.

Face avant du renard des fleurs. C'est un renard vert pâle, dont la queue semble être composée de lianes portant des fleurs qui tombent. Le dos du renard des fleurs. On peut voir toute la longueur de sa queue fleurie.
Hanagitsune — le gardien de la forêt avec une queue fleurie. Sur son passage, les herbes et les fleurs commencent à pousser, et même les terres désolées accueillent une nouvelle vie. Sa silhouette est considérée comme un symbole de la forêt qui croît vers l'avenir.
Écran d'informations Pokémon de Hanagi2ne. Type Plante, capacité spéciale Feuille Garde, nature Audacieux, rencontré au niveau 7 dans la Forêt Touka. Le sprite est un renard vert pâle avec une queue florissante. Écran de bataille. Hanagi2ne vue de dos fait face à un Pochiena sauvage. Il est affiché « Hanagi2ne utilise Suitoru ! ».
Nous avons mis en œuvre « Hanagitsune », conçu à travers des dialogues et un travail manuel, en tant que race dans le jeu.

Ce prototype ne répond pas à la question « Est-ce que le contenu généré suscite de l'attachement ? ». La question floue a été divisée en deux éléments, la qualité du contenu généré et la profondeur de l'engagement, qui peuvent être modifiés intentionnellement. Lors de la prochaine vérification, il sera nécessaire d'intégrer des choix, des comparaisons et des corrections dans le processus de création, et d'aligner la qualité du contenu généré à un certain niveau, avant de procéder à des comparaisons par plusieurs participants.

implémentation

Le pipeline de génération, le cadre des contraintes et de la validation, la conversion des données pour la GBA et les modifications du côté du jeu sont publiés sur Dépôt GitHub.

pret/pokeemerald Basé sur le décompilage, cela a été réalisé en tant que recherche personnelle. Aucun des éléments suivants n'est distribué : ROM, patch de ROM, ou les assets du jeu. Tous les sprites publiés ici sont des créations originales générées par l'IA. Pokémon est une marque déposée de Nintendo, de Creatures Inc. et de Game Freak Inc., et ce projet n'a aucun lien avec ces entreprises et n'a obtenu aucune approbation de leur part.