Mein eigenes Pokémon, einzigartig auf der Welt

Überblick

Mitten im Spiel, in einem Fenster innerhalb des Spiels selbst, tippt die Spielerin ein paar Worte. Während das Spiel weiterläuft, macht eine KI daraus eine völlig neue Pokémon-Art — Illustration, Name, Typ, Basiswerte und Attacken — und trägt sie als vollwertige Art ein. Man begegnet ihr im hohen Gras, fängt sie, gibt ihr einen Spitznamen und zieht sie auf wie jede andere.

Nichts davon ist vorab geschrieben. Die Art, die am Ende im Spielstand steht, hat es vorher nie gegeben, und es gibt sie sonst nirgends.

Ein Teil dessen, was Spiele immer angeboten haben, ist, etwas herzustellen, das einem gehört. In der Praxis hieß das: aus einer festen Menge auswählen. Dieses Projekt gibt es, um zu prüfen, ob generative KI das eigene buchstäblich wahr macht — und, wichtiger noch, ob etwas buchstäblich Eigenes etwas ist, an das eine Spielerin sich tatsächlich bindet.

Ablauf

Alles beginnt mit einem Gespräch mit einer alten Frau im Blütenburg-Wald. Man beschreibt das Geschöpf, das einem vorschwebt; die Worte werden in eine Art verwandelt, während man weiterspielt; und ein paar Minuten später wartet sie im hohen Gras — anzutreffen, zu fangen und von da an genau wie alles andere im Spiel zu benutzen. Alles entsteht an Ort und Stelle: der Name, der Typ, die Basiswerte, der Attackensatz, beide Kampf-Sprites und das Team-Symbol.

Ein älteres Paar steht im Blütenburg-Wald. Ein Textfenster fragt: Sag… was für ein Geschöpf stellst du dir vor?
Das Gespräch mit der alten Frau setzt es in Gang.
Die Eingabemaske des vereinfachten Dialogsystems mit dem Titel „Stell dir das Geschöpf vor:“ und den eingegebenen Wörtern BEAUTIFUL, ATTACK und FIRE.
Man gibt ihr sechs Wörter über Smaragds eigenes vereinfachtes Dialogsystem.
Die Spielerin steht im Wald neben dem hohen Gras. Ein Textfenster meldet: Das hohe Gras raschelt… Da ist etwas drin!
Die Erzeugung läuft ein paar Minuten auf dem PC. Ein Ruf meldet, dass sie fertig ist.
Kampfbildschirm. Eine rote Echse mit einer Flamme auf dem Kopf steht der Spielerin gegenüber. Der Text lautet: Ein wildes FLAMEREL erscheint!
FLAMEREL, eine Echse vom Typ Feuer, erscheint im raschelnden Gras.
Im Kampf wird ein Pokéball auf FLAMEREL geworfen.
Es lässt sich mit einem Pokéball fangen, wie jede andere Art.
Der Bildschirm, der nach einem Spitznamen für FLAMEREL fragt, mit eingegebenem GGG.
Es lässt sich benennen, wie jede andere Art.
Der Team-Bildschirm zeigt die erzeugte Art neben drei gewöhnlichen Pokémon, mit eigenem Symbol.
Es steht mit eigenem Symbol im Team, wie jede andere Art.
Der Infobildschirm von FLAMEREL: Typ Feuer, Fähigkeit Großbrand, freches Wesen, auf Level 7 im Blütenburg-Wald angetroffen.
Sein Übersichtsbildschirm funktioniert, wie bei jeder anderen Art.

Ein vollständiger Durchlauf, von Anfang bis Ende, ist hier aufgezeichnet: My Own Pokémon Generation — demo02.

Warum dies und kein Kreaturengenerator

Die interessante Frage ist nicht, ob eine KI ein Pokémon erfinden kann. Sie ist, ob sie eines erfinden kann, das das Spiel aufnehmen kann, ohne auseinanderzufallen. Sich selbst überlassen, erzeugt ein Generator entweder etwas Unbrauchbares — ein Monster mit 900 Statuspunkten, das das Spiel trivial macht — oder etwas Unangenehmes: ein missgestaltetes Sprite, das sich nicht mehr als Geschöpf lesen lässt.

Die gestalterische Arbeit ist hier also nicht das Geschöpf. Sie ist der Raum, in dem es erzeugt wird: die Wertebänder, die Regeln der Attackenzulässigkeit, die Silhouetten, die ein 64×64-Sprite überstehen, das Vokabular, mit dem die Spielerin überhaupt beschreiben darf. Das Modell durchsucht diesen Raum. Es definiert ihn nicht.

Dieses Projekt ist die Stelle, an der meine Designphilosophie aufhört, eine Behauptung zu sein, und geprüft wird: die Ziele, Werte, Beschränkungen und Grenzen definieren, die einen Entwurfsraum formen, die Erzeugung darin geschehen lassen und herausfinden, ob das Ergebnis trägt.

Der Rahmen ist die Forschung

Das Sprachmodell schreibt nie frei. Es füllt Felder eines festen Schemas, und jede Ausgabe wird von einem Prüfer erneut kontrolliert. Verstöße gehen zur Neuerzeugung zurück, zusammen mit der konkreten Regel, die gebrochen wurde.

Balance-Beschränkungen halten das Spiel spielbar. Die Summe der Basiswerte bleibt in einem festen Band — 280 bis 360, ungefähr Starter-Niveau — mit Bereichen je Einzelwert, und Vorgaben außerhalb des Bands werden rundweg abgelehnt. Attacken werden automatisch aus dem pokeemerald-Quelltext gezogen, dann auf den eigenen Typ der Art oder Normal gefiltert, wobei K.-o.-Attacken, Selbstzerstörungseffekte und fester oder übermächtiger Schaden entfallen. Die verbleibende Menge wird auf Stimmigkeit geprüft: genug Angriffsattacken, mindestens ein Angriff des eigenen Typs, höchstens eine Attacke hoher Stärke. Die Levelvergabe nimmt der Rahmen deterministisch vor, nicht das Modell. Alles Übrige ist festgelegt — eine Fähigkeit je Typ, Fangrate, Wachstumskurve, Geschlechterverhältnis, TM-Kompatibilität — sodass die individuelle Abweichung auf die Schemafelder beschränkt bleibt und die Durchläufe vergleichbar bleiben.

Erscheinungs-Beschränkungen verhindern, dass die Ausgabe zerfällt. Die Körperbaupläne stammen aus einer Positivliste von Silhouetten, die ein 64×64-Sprite überstehen: Vierbeiner, Nager, Vogel, Echse. Die Farbe wird aus einer benannten Positivliste gewählt, und die Körperfarbe für den Pokédex wird daraus mechanisch abgeleitet. Merkmale sind auf ein bis drei kurze vorgefertigte Wendungen begrenzt, mit einer Sperrliste, die menschliche Züge, Blut, Waffen und Schrift zurückweist. Der Rahmen setzt die endgültige Anweisung selbst zusammen und hängt einen festen Nachsatz an: ein einzelnes Geschöpf, ganzer Körper, stimmige Anatomie, keine überzähligen Gliedmaßen, ruhiger Ausdruck.

Es funktioniert, und man kann ihm beim Funktionieren zusehen. In einem aufgezeichneten Durchlauf schlug das Modell eine Basiswertsumme von 380 vor; der Prüfer schickte sie dreimal zurück — 380, 360, 340 — bis die Vorgabe bei 320 innerhalb des Bands landete.

Wie es läuft

Das Spiel selbst erzeugt nichts. Die Arbeit leistet ein auf dem PC laufender Python-Prozess, und die beiden Hälften sprechen über einen Dateibriefkasten miteinander, den ein Lua-Skript in mGBA in jedem Einzelbild abfragt.

  1. Text. Ein lokales Modell (qwen3:8b) macht aus den Worten einen geprüften Artdatensatz.
  2. Bild. Ein Bildmodell zeichnet eine Referenzillustration und daraus drei in sich stimmige Ansichten: das vordere Kampf-Sprite, das hintere und das Team-Symbol.
  3. Umwandlung. Die Zeichnung wird auf eine gemeinsame 15-Farben-Palette quantisiert und in das Sprite-Format von pokeemerald überführt.
  4. Kodierung. Aus den Sprites werden GBA-Binärdaten: 4bpp- und 1bpp-Kacheln, gbapal-Paletten, BIOS-kompatible LZ77-Kompression.
  5. Einspielen. Die Binärdaten werden in einen reservierten Bereich des ROMs geschrieben.

Zur Laufzeit auf das Modul zu schreiben heißt, dass die laufende Instanz die neue Art ohne Neustart aufnimmt und dieselbe Bytefolge auf die Platte geht, sodass die Änderung ein Neuladen überdauert.

Was erscheint, ist dauerhaft und nicht rückgängig zu machen. Es streift umher: flieht man oder verliert man, bleibt es in der Welt. Besiegt man es, ist es für immer fort.

Umsetzung

Der Generator, der Beschränkungsrahmen, die GBA-Kodierer und der spielseitige Patch sind vollständig veröffentlicht: github.com/takafumihoriuchi/my-own-pokemon-generation.

Nachtrag — über Bindung

Der Prototyp klärt eine technische Frage. Dahinter steht die, um die es mir eigentlich geht: Bedeutet ein Pokémon, das für dich erzeugt wurde und sonst nirgends existiert, am Ende mehr als eines, das mit dem Spiel geliefert wurde?

Aus dem Spielen meiner eigenen Fassung — eine Stichprobe von eins, und mehr sollte man nicht hineinlesen — scheinen zwei Bedingungen die Antwort zu bestimmen.

Ein Fall von außerhalb des Spiels spricht für beides. In Handarbeit mit ChatGPT, im Hin und Her, bis ich zufrieden war, habe ich eine eigene Art entworfen — Hanagitsune. Ich hänge an ihr. Ich hatte sie gemacht, nicht bestellt, und was herauskam, überschritt die Qualitätsschwelle.

Hanagitsune von vorn: ein blassgrüner Fuchs, dessen Schweif eine Kaskade blühender Ranken ist. Hanagitsune von hinten, mit der ganzen Länge des blühenden Schweifs.
Hanagitsune — ein Hüter des Waldes, mit blühendem Schweif. Wo es gelaufen ist, sprießen Gras und Blumen und rufen selbst auf kargem Boden neues Leben. Seine Gestalt gilt als Zeichen dafür, dass der Wald auf seine Zukunft zuwächst.

An beide Bedingungen kommt man heran. Ein tieferer Herstellungsprozess — wählen, überarbeiten, verwerfen — bewegt die erste; bessere Modelle und ein sorgfältiger entworfener Anweisungsrahmen bewegen die zweite. Dorthin geht es weiter.

Das Ergebnis des Prototyps ist also kein Urteil über die Frage. Es ist die Frage, messbar gemacht: zwei Größen, die sich nun absichtlich bewegen und beobachten lassen.

Als persönliche Forschung auf der Dekompilierung pret/pokeemerald aufgebaut. Es wird kein ROM, kein ROM-Patch und kein Spielmaterial verbreitet, und alle hier gezeigten Sprites sind von KI erzeugte, eigenständige Werke. Pokémon ist eine Marke von Nintendo, Creatures Inc. und GAME FREAK Inc.; dieses Projekt steht mit ihnen in keiner Verbindung und ist von ihnen nicht unterstützt.