- Un projet remplace les dialogues répétitifs du jeu classique Animal Crossing (GameCube, 2001) par des conversations LLM en temps réel basées sur le cloud
- Sans modifier le code du jeu, il relie un script Python externe et une IA via du piratage mémoire et un mécanisme de mémoire partagée (mailbox)
- Le texte du jeu n’est pas traité comme une simple chaîne, mais comme un langage de codes de contrôle spéciaux ; le problème a donc été résolu en implémentant un encodeur et un décodeur dédiés
- La génération des répliques est séparée entre Writer (rédaction créative) et Director (ajout des codes de contrôle et de la mise en scène) afin de garantir la qualité
- Au final, les habitants du village livrent des dialogues IA imprévisibles intégrant actualités, rumeurs et satire, redonnant une nouvelle vitalité à ce jeu culte
- Le code du projet est publié sur GitHub
Définition du problème
- Animal Crossing est apprécié pour son charme, mais aussi connu pour ses dialogues répétitifs ; après 23 ans sans évolution, l’idée était de trouver un moyen radical de les transformer
- Le problème, c’est que la GameCube est un environnement fermé avec un CPU à 485 MHz, 24 Mo de RAM et aucune prise en charge réseau
- Le jeu d’origine devait rester intact, sans aucune modification du code
- L’objectif était de construire un pont pour remplacer ces dialogues répétitifs par un LLM moderne
Première étape : pirater le système de dialogue
- Grâce à la décompilation d’Animal Crossing réalisée par la communauté, l’accès au code C était possible
- En accrochant un appel de fonction dans le fichier
m_message.c, le remplacement du texte des dialogues a été réussi
- Restait toutefois le défi d’échanger en temps réel des données avec une IA externe
La méthode de la mailbox mémoire
- Une zone spécifique de la RAM de la GameCube a été utilisée comme mailbox IPC
- Un script Python écrit/lit directement à des adresses mémoire → communication entre le jeu et l’IA
- Un scanner mémoire a été développé pour récupérer les adresses du nom du locuteur (0x8129A3EA) et du buffer de dialogue (0x81298360)
Le langage des codes de contrôle
- Un simple envoi de chaîne de caractères provoquait le gel du jeu
- Cause : Animal Crossing utilise un langage fondé sur des codes de contrôle comme
<End Conversation>, <Pause>, <Color Line>, etc.
- Un encodeur/décodeur en Python a donc été créé → conversion entre un texte lisible par un humain et les séquences d’octets comprises par le jeu
Étude des alternatives réseau
- Il existe bien un Broadband Adapter pour la GameCube, mais Animal Crossing ne possède pas de pile réseau
- Utiliser le BBA aurait nécessité d’ajouter une pile réseau et des E/S asynchrones, ce qui était jugé inefficace
- À la place, le piratage mémoire via émulateur a été considéré comme plus simple et plus fiable
Pipeline IA
- Au départ, un LLM unique devait à la fois créer les répliques et gérer les codes de contrôle, mais les problèmes de qualité ont conduit à adopter une stratégie de séparation Writer-Director
- Writer : génère des dialogues créatifs à partir de la personnalité du personnage (en s’appuyant sur des données de fan wiki)
- Director : relit les répliques et insère les codes de contrôle, expressions, couleurs et sons appropriés
- Ce pipeline LLM en deux étapes sépare la créativité de l’IA des contraintes techniques afin d’exploiter au mieux les forces de chaque composant
- Cette séparation des rôles a permis d’obtenir une qualité stable
Résultats et diffusion
Portée
- Un projet expérimental à la croisée du hack de console rétro, de l’intégration de l’IA et de la préservation du jeu vidéo
- En connectant une IA de 2025 à un jeu de 2001, il met en œuvre une interaction transgénérationnelle
- Le jeu n’est plus un enchaînement de dialogues répétitifs, mais évolue vers un monde virtuel vivant
- Vidéo de démo / développement complet : Modern AI in a 24-Year-Old Game
Aucun commentaire pour le moment.