50 Punkte von GN⁺ 2025-09-11 | 7 Kommentare | Auf WhatsApp teilen
  • Ein Projekt, das die repetitiven Dialoge des Klassikers Animal Crossing (GameCube, 2001) in Echtzeit durch Cloud-basierten LLM-Dialog ersetzt
  • Ohne den Spielcode zu verändern, werden über Memory-Hacking und ein Shared-Memory-(Mailbox-)Verfahren externe Python-Skripte und KI angebunden
  • Der Spieltext wird nicht als einfache Zeichenkette, sondern als Sprache aus speziellen Steuercodes verarbeitet; das wurde mit einem separaten Encoder/Decoder gelöst
  • Die Dialogerzeugung ist in Writer (kreatives Schreiben der Dialoge) und Director (Hinzufügen von Steuercodes/Ausdruck) getrennt, um die Qualität zu sichern
  • Das Ergebnis sind unvorhersehbare KI-Dialoge, in denen die Dorfbewohner sogar Nachrichten, Gerüchte und Satire aufgreifen und dem Klassiker neues Leben einhauchen
  • Der Projektcode ist auf GitHub veröffentlicht

Problemstellung

  • Animal Crossing ist charmant, aber auch für seine repetitiven Dialoge bekannt; auch nach 23 Jahren haben sich die Texte nicht verändert, daher entstand die Idee, das grundlegend zu erneuern
  • Das Problem: Der GameCube ist eine geschlossene Umgebung mit 485MHz CPU, 24MB RAM und ohne Netzwerkunterstützung
  • Das Originalspiel musste unverändert bleiben, also ohne Änderungen am Code
  • Ziel war der Bau einer Brücke, um die repetitiven Dialoge durch moderne LLMs zu ersetzen

Erster Schritt: Das Dialogsystem hacken

  • Dank des Animal-Crossing-Decompilings der Community war Zugriff auf den C-Code möglich
  • Durch Hooking eines Funktionsaufrufs in der Datei m_message.c gelang der Austausch des Dialogtexts
  • Offen blieb jedoch die Frage, wie sich externe KI-Daten in Echtzeit hin- und herschicken lassen

Mailbox-Verfahren im Speicher

  • Ein bestimmter Bereich des GameCube-RAMs wird als IPC-Mailbox genutzt
  • Ein Python-Skript schreibt/liest direkt an Speicheradressen → Kommunikation zwischen Spiel und KI
  • Mit einem Memory-Scanner wurden die Adressen für Sprechername (0x8129A3EA) und Dialogpuffer (0x81298360) ermittelt

Sprache mit Steuercodes

  • Beim Senden einfacher Zeichenketten fror das Spiel ein
  • Der Grund: Animal Crossing nutzt eine auf Steuercodes basierende Sprache wie <End Conversation>, <Pause>, <Color Line>
  • Ein in Python geschriebener Encoder/Decoder wandelt menschenlesbaren Text ↔ Byte-Sequenzen, die das Spiel versteht

Prüfung von Netzwerkalternativen

  • Es gibt den Broadband Adapter für den GameCube, aber Animal Crossing besitzt keinen Netzwerk-Stack
  • Um den BBA zu nutzen, müsste ein Netzwerk-Stack samt asynchronem I/O ergänzt werden, was als ineffizient bewertet wurde
  • Stattdessen wurde Emulator-Memory-Hacking als einfacher und stabiler eingeschätzt

KI-Pipeline

  • Anfangs sollte ein einzelnes LLM sowohl Kreativität als auch Steuercodes übernehmen, doch wegen deutlicher Qualitätsprobleme fiel die Wahl auf eine Trennung in Writer und Director
    • Writer: erzeugt kreative Dialoge auf Basis der Persönlichkeiten der Figuren (unter Nutzung von Daten aus Fan-Wikis)
    • Director: liest den Dialog und fügt passende Steuercodes, Gesichtsausdrücke, Farben und Sounds ein
  • Diese zweistufige LLM-Pipeline trennt KI-Kreativität von den technischen Anforderungen und nutzt so die Stärken beider Seiten
  • Durch die Aufgabentrennung konnte eine stabile Qualität erreicht werden

Ergebnis und Ausweitung

Bedeutung

  • Ein experimentelles Projekt an der Schnittstelle von Retro-Konsolen-Hacking, KI-Integration und Games Preservation
  • Ein Spiel von 2001 wird mit KI aus dem Jahr 2025 verbunden und ermöglicht so generationsübergreifende Interaktion
  • Das Spiel ist nicht länger nur repetitive Konversation, sondern entwickelt sich zu einer lebendigen virtuellen Welt
  • Vollständiger Entwicklungsprozess/Demovideo: Modern AI in a 24-Year-Old Game

7 Kommentare

 
t7vonn 2025-09-12

Wow … das ist wirklich interessant.

 
chcv0313 2025-09-11

Wer das gemacht hat, sollte Nintendo einen Lebenslauf schicken — die würden ihn sofort einstellen.

 
xguru 2025-09-11

Ich denke nur daran, wie unterhaltsam es wäre, wenn man das damals zu DOS-Zeiten bei Ultima so umgesetzt hätte..

 
ifmkl 2025-09-11

Das ist wirklich geekig!

 
crawler 2025-09-11

Ein wirklich, wirklich unterhaltsames Projekt.

 
GN⁺ 2025-09-11
Hacker-News-Kommentar
  • Ich teile hier den Code-Link für den Animal-Crossing-LLM-Mod github.com/vuciv/animal-crossing-llm-mod, und weil ich wissen wollte, wie das Spiel angehalten bleibt, bis das LLM den Dialog abfängt und eine Antwort erzeugt, habe ich 40.000 Token über gitingest.com in Claude Opus 4.1 gekippt und direkt nachgefragt bei claude.ai geteilte Antwort. Der Kern ist, dass die Funktion watch_dialogue() alle 0,1 Sekunden pollt und mit temporärem Text antwortet siehe konkrete Code-Stelle. Dem Nutzer wird tatsächlich ein „Drücke A, um fortzufahren“-Button angezeigt, in der Erwartung, dass die LLM-Antwort bis dahin vorliegt.

    • Ich finde, diese Hacking-Methode ist echter Goblin Mode. Schon der Memory-Scanner selbst ist in Python geschrieben und wirkt definitiv so, als hätte ein LLM mitgeholfen, und auch die Art, wie diese Person das Spiel hackt, sieht eher nach jemandem mit wirklich mächtigen Tools aus als nach klassischem Reverse Engineering. Das ist nicht als Kritik gemeint; ehrlich gesagt ist so etwas dank LLMs inzwischen wirklich möglich geworden. Selbst Leute, die Ghidra nicht beherrschen, können sich relativ leicht daran versuchen. Und tatsächlich gab es für den GameCube auch ein kaum genutztes Netzwerk-Peripheriegerät; ich selbst habe es wegen Phantasy Star Online Episode 1&2 benutzt. Wiki zum Broadband Adapter
  • Ausführlichere Notizen habe ich in meinem Blog zusammengestellt Beitrag auf simonwillison.net

  • Es ist einfach zu lustig, dass die Dorfbewohner, sobald man ihnen „Gedanken“ gibt, als Erstes Tom Nook stürzen wollen. Wenn das auf einem GameCube-Emulator funktioniert, macht das Hoffnung, dass sich so etwas bestimmt auch auf einem Switch-Emulator umsetzen ließe.

    • Ich hätte auch Lust, eine Version für Animal Crossing New Horizons auszuprobieren.

    • Ich will Tom Nook auch stürzen. Tom Nook sperrt dich ein, treibt alle Bewohner dieser Stadt in einen endlosen Schuldenkreislauf, und um ihn zufriedenzustellen, braucht man Millionen Sternis.

    • Wenn man bedenkt, dass Tom Nook wie ein Mafia-Boss das ganze Dorf kontrolliert, kann man niemandem seinen Aufstand verübeln.

    • Um das in der Switch-Version zu machen, müsste man den Code von Animal Crossing dekompilieren. Und heutiges DRM ist viel stärker als zu GameCube-Zeiten. Theoretisch ist es möglich, aber wenn man es wirklich umsetzen will, wäre das ein enormer Aufwand.

    • LLMs sind größtenteils auf Reddit trainiert. Und der Spruch „Tom Nook ist ein kapitalistischer Diktator“ ist ein Reddit-Meme. Viele Reaktionen von LLMs sind tatsächlich eher Wiederholungen von Reddit-Humor oder -Meinungen als echtes „Denken“.

  • Ich finde diese Art der Nutzung wirklich großartig. Am meisten freue ich mich in Zukunft auf LLM-basierte NPCs in Spielen. Immer wieder dieselben Zeilen zu hören, ist eines der größten Immersionskiller überhaupt.

    • Ehrlich gesagt bin ich mir nicht sicher, wie nützlich das in dieser Form wirklich wäre! Wenn ein NPC immer das Gleiche sagt, ist das für den Spieler oft auch das Signal: „Der Dialog ist jetzt vorbei.“ Es gibt sicher coole Einsatzmöglichkeiten, aber wiederholte Dialoge sind gewissermaßen auch eine „Funktion“. Mal sehen, wie sich das entwickelt xD

    • Solche Versuche sieht man schon in kleinen Spielen oder auch in großen Skyrim-Mods. Ich habe mit einem Skyrim-Mod davon etwas herumgespielt, und es gibt viele Probleme, die man lösen muss. Um ein LLM zu bauen, braucht man zunächst riesige Textmengen zum Training, und bestimmte Inhalte nachträglich zu entfernen, ist sehr schwierig. Wenn der Nutzer nur ein bisschen Skyrim-„Rollenspiel“ mit der AI macht, passt es noch einigermaßen, aber dann erwähnt ein NPC plötzlich medizinische Themen oder Prominente wie Taylor Swift oder Fox News. Mit den heutigen LLMs ist das praktisch unlösbar. Außerdem machen LLMs manchmal „Versprechen“, die das Spiel gar nicht einlösen kann. Ein NPC sagt dann zum Beispiel überzeugend: „Ich war gestern in diesem Dungeon“, obwohl dieser Ort oder das Ereignis im Spiel gar nicht existiert. Auch das ist mit heutigen LLMs nicht wirklich lösbar. Damit sich selbst solche Details nahtlos anfühlen, müsste die AI-Generation selbst wohl noch einen Sprung machen. Der Mantella-Mod ist unterhaltsam, aber in seinem jetzigen Zustand schwer als Massenprodukt für offizielle Releases vorstellbar.

    • Ich denke, so etwas lässt sich schon heute allein mit lokalen LLMs gut genug umsetzen. Dass die LLM-Inferenz die GPU auslastet, könnte zwar ein Problem sein, aber keines, das man nicht überwinden könnte. Für den zentralen Story-Fortschritt würde ich so etwas nicht verwenden wollen, aber für leichte NPC-Dialoge oder RPG-Szenarien passt es wirklich gut. Und ich möchte nicht, dass Singleplayer-Spiele von Remote-Inferenz (cloud inference) abhängig sind; wenn der Dienst eingestellt wird, läuft sonst das Spiel selbst nicht mehr.

    • Ich stelle mir schon vor, wie Nutzer, völlig versunken in LLM-basierte NPCs, in einem MMORPG 12 Stunden lang Gold farmen und parallel eine Beziehung mit ihrer AI-Freundin führen — eine Art „Spielsucht + AI-Halluzination“, die bald Realität werden könnte.

    • Ich mochte wiederholte Dialoge eigentlich auch nie, aber in Skyrim war das dann „bis ich einen Pfeil ins Knie bekam“.

  • Die Idee, LLMs als Modding-Werkzeug zu nutzen und virtuellen Räumen damit neue Bedeutung zu geben, ist äußerst spannend. Dieser Ansatz erinnert mich an plunderludische Tools wie Unity Hawk und scheint sich auch gut für künstlerische Interventionen zu eignen. Link zum Nachschlagen: Einführung in Unity Hawk

  • Es ist immer spannend und unterhaltsam, alten Spielen neues Leben einzuhauchen. Dass die Animal-Crossing-Codebasis in lesbaren C-Code dekompiliert wurde, ist ebenfalls sehr interessant. So gibt es immer mehr Möglichkeiten, frei daran herumzubasteln.

    • Ich möchte darauf hinweisen, dass die Ocarina-of-Time-Modding-Szene derzeit ebenfalls enorm wächst. Für Interessierte definitiv zu empfehlen.
  • Dass sie eine Methode gefunden haben, das über gehackten Shared Memory umzusetzen, ist wirklich großartig. Auch aus Engineering-Sicht spart das enorm viel Zeit, und genau an dieser Stelle den Treffer zu landen, ist echte Expertenkunst — ganz nach dem Motto: „10 Dollar fürs Halten des Hammers, 5.000 Dollar dafür, zu wissen, wo man zuschlagen muss.“

    • Technische Frage: Welcher Mechanismus garantiert, dass diese Speicheradresse stabil ist? Ist die Voraussetzung, dass die Speicherallokation im Spiel immer in exakt derselben Reihenfolge passiert?

    • Solche Shared-Memory-Ansätze werden auch bei Multiplayer-Randomizern recht häufig verwendet. Meist nutzt man kleinere Bereiche, aber zwischen Emulator und Netzwerk (oder Flashcart FXPakPro und Netzwerk) kann man Scratch Memory als Message-Buffer verwenden. Ein sehr nützliches Muster.

  • Es ist wirklich faszinierend, dass, wenn man jeder Figur eine solche Agency gibt, sich ganz natürlich daraus ergibt, „wie sie über die Welt denkt“. Je nachdem, bis zu welchem Niveau LLMs so etwas leisten können, ist das ein merkwürdig spannendes Experiment, um abzuschätzen, wie echte Menschen sich in einem fiktiven Setting verhalten würden.

  • Vielleicht übersehe ich etwas, aber erzeugt dieser Ansatz nicht einfach nur Text, ohne tatsächlich auf Ereignisse im Spiel zu reagieren? Dasselbe ließe sich doch auch offline oder in einem Batch-Prozess generieren. Echtzeit-LLM-Inferenz ist zwar interessant, wirkt aber nicht unbedingt notwendig oder besonders wichtig. Statt Polling könnte man eine Lookup-Tabelle verwenden; das wäre viel einfacher und dürfte die Performance verbessern.

    • Im Video werden auch Screenshots mit eingegeben, sodass Hinweise passend zum aktuellen Ort in den Dialog einfließen können.
  • Es hieß: „Der Nintendo GameCube ist eine 24 Jahre alte Konsole mit 485-MHz-PowerPC-CPU, 24 MB RAM und ohne Netzwerk“, aber tatsächlich gab es offiziell ein Ethernet-Peripheriegerät namens Broadband Adapter. Es wurde nur von wenigen Spielen unterstützt, darunter auch Phantasy Star Online. Ich habe damit auch schon Spiele oder ROMs auf einen PC gestreamt; das funktionierte über eine Speicherlücke, über die man Code per Netzwerk hochladen konnte, und die Ladezeiten waren langsamer als von Disk.

    • Das wird im Artikel ebenfalls erwähnt: „Der GameCube hatte zwar offiziell einen Broadband Adapter, aber Animal Crossing wurde ohne jeglichen Netzwerk-Code ausgeliefert. Um den BBA zu nutzen, müsste man selbst einen rudimentären Netzwerk-Stack bauen und zudem internen Code für Dinge wie Hooking von Game-Engine-Callsites, asynchrone I/O-Planung sowie Retry-/Timeout-Handling in unerwarteten Netzwerkumgebungen anpassen.“
  • Früher gab es Forschungsprojekte, bei denen lokalisierte Strings ersetzt wurden, um Spiele wie The Sims oder Grim Fandango in Sprachlernspiele umzuwandeln. Jetzt könnte generativer Dialog, der kontextgerecht ist und an das Niveau Fortgeschrittener angepasst wird, eine wirklich starke Killer-App für das Sprachenlernen sein.

    • Darauf freue ich mich wirklich. Jeder will eine Fremdsprache lernen, aber niemand mag langweiliges Lernen. Wenn ich beim Spielen von Grim Fandango die AI direkt fragen könnte: „Was bedeutet Morte?“, und das LLM mich in Echtzeit unterrichtet, würde ich dafür bezahlen. Wenn es langweilig wird, spiele ich einfach weiter, und wenn ich der AI eine Liste von Wörtern geben könnte, die ich schon kenne, könnte sie den Wortschatz und die Sätze schrittweise erweitern und so ganz natürlich ein Lernerlebnis schaffen.

    • Selbst Duolingo setzt inzwischen aktiv auf AI.

 
savvykang 2025-09-11

Tom Nook ist die Figur „Nepp“ im Spiel.