Mia propra Pokémon, unika en la mondo
julio 2026
Superrigardo
Meze de la ludo, en fenestro ene de la ludo mem, la ludanto tajpas kelkajn vortojn. Dum la ludo plu funkcias, artefarita intelekto igas ilin tute nova specio de Pokémon — bildo, nomo, tipo, bazaj statistikoj kaj atakoj — kaj registras ĝin kiel plenrajtan specion. Vi renkontas ĝin en la alta herbo, kaptas ĝin, donas al ĝi kromnomon kaj bredas ĝin kiel iun ajn alian.
Nenio estas anticipe verkita. La specio, kiu fine troviĝas en la konservdosiero, neniam antaŭe ekzistis kaj ekzistas nenie alie.
Parto de tio, kion ludoj ĉiam proponis, estas fari ion, kio estas via. Praktike tio signifis elekti el fiksita aro. Ĉi tiu projekto ekzistas por provi, ĉu generanta intelekto igas la vorton via laŭvorte vera — kaj, pli grave, ĉu io laŭvorte via estas io, al kio ludanto efektive alkroĉiĝas.
La trairo
Ĉio komenciĝas per parolo kun maljunulino en la Petalburga Arbaro. Vi priskribas la estaĵon, kiun vi havas en la kapo; tiuj vortoj fariĝas specio dum vi plu ludas; kaj post kelkaj minutoj ĝi atendas en la alta herbo — por esti renkontita, kaptita kaj de tiam uzata ĝuste kiel io ajn alia en la ludo. Ĉio estas farita surloke: la nomo, la tipo, la bazaj statistikoj, la aro de atakoj, ambaŭ batalbildoj kaj la teama piktogramo.
Plena trairo, de komenco ĝis fino, estas registrita ĉi tie: My Own Pokémon Generation — demo02.
Kial ĉi tio, kaj ne estaĵo-generilo
La interesa problemo ne estas, ĉu intelekto povas elpensi Pokémon. Ĝi estas, ĉu ĝi povas elpensi tian, kiun la ludo kapablas sorbi sen disfali. Lasita al si mem, generilo produktas aŭ ion neuzeblan — monstron kun statistika sumo de 900, kiu banaligas la ludon — aŭ ion malagrablan: misformitan bildon, kiu ĉesas legiĝi kiel estaĵo.
Do la dezajna laboro ĉi tie ne estas la estaĵo. Ĝi estas la spaco, ene de kiu la estaĵo estas generata: la statistikaj zonoj, la reguloj pri permeseblaj atakoj, la siluetoj, kiuj travivas bildon de 64×64, la vortprovizo, per kiu la ludanto entute rajtas priskribi. La modelo esploras tiun spacon. Difini ĝin ne apartenas al ĝi.
Ĉi tiu projekto estas la loko, kie mia dezajna filozofio ĉesas esti argumento kaj estas provata: difini la celojn, valorojn, limigojn kaj limojn, kiuj formas dezajnan spacon, lasi la generadon okazi ene de ĝi, kaj ekscii, ĉu la rezulto tenas.
La kadro estas la esploro
La lingvomodelo neniam skribas libere. Ĝi plenigas fakojn de fiksita skemo, kaj ĉiu eligo estas rekontrolata de validigilo. Malobeoj revenas por regenerado kune kun la preciza regulo, kiu estis rompita.
Ekvilibraj limigoj tenas la ludon ludebla. La sumo de bazaj statistikoj restas en fiksita zono — de 280 ĝis 360, proksimume la nivelo de komenca Pokémon — kun intervaloj por ĉiu statistiko, kaj specifoj ekster la zono estas rekte rifuzataj. La atakoj estas aŭtomate eltiritaj el la fontkodo de pokeemerald, poste filtritaj al la propra tipo de la specio aŭ al la normala tipo, forigante unubatajn mortigojn, memeksplodajn efikojn kaj fiksan aŭ troan damaĝon. La restanta aro estas kontrolata pri solideco: sufiĉe da atakaj movoj, almenaŭ unu atako de la sama tipo, maksimume unu movo de alta forto. La atribuo de niveloj estas farata determinisme de la kadro, ne de la modelo. Ĉio cetera estas fiksita — unu kapablo por ĉiu tipo, kaptokvanto, kreskokurbo, seksa proporcio, kongrueco kun TM — tiel ke la individua vario restas enfermita en la fakoj de la skemo kaj la ruloj restas kompareblaj.
Aspektaj limigoj malhelpas la eligon disfali. La korpaj planoj venas el blanka listo de siluetoj, kiuj travivas bildon de 64×64: kvarpiedulo, ronĝulo, birdo, lacerto. La koloro estas elektata el nomita blanka listo, kaj la korpa koloro por la Pokédex estas derivata meĥanike. La trajtoj estas limigitaj al unu ĝis tri mallongaj pretaj esprimoj, kun bara listo, kiu rifuzas homajn trajtojn, sangon, armilojn kaj tekston. La kadro mem kunmetas la finan instrukcion kaj aldonas fiksan postparolon: unu sola estaĵo, tuta korpo, kohera anatomio, neniuj kromaj membroj, trankvila mieno.
Ĝi funkcias, kaj oni povas vidi ĝin funkcii. En unu registrita rulo la modelo proponis bazan statistikan sumon de 380; la validigilo repuŝis trifoje — 380, 360, 340 — ĝis la specifo surteriĝis ene de la zono, ĉe 320.
Kiel ĝi funkcias
La ludo mem generas nenion. La laboron faras loĝanta Python-procezo sur la komputilo, kaj la du duonoj interparolas per dosiera leterkesto, kiun Lua-skripto en mGBA kontrolas ĉe ĉiu kadro.
- Teksto. Loka modelo (
qwen3:8b) igas la vortojn validigita specio-registro. - Bildo. Bilda modelo desegnas referencan ilustraĵon, poste tri inter si koherajn vidojn: la antaŭan batalbildon, la malantaŭan kaj la teaman piktogramon.
- Konverto. La desegno estas kvantigita al komuna paletro de 15 koloroj kaj konvertita al la bilda formato de pokeemerald.
- Kodigo. La bildoj fariĝas GBA-duumaĵoj: kaheloj 4bpp kaj 1bpp,
gbapal-paletroj, kunpremo LZ77 kongrua kun la BIOS. - Enigo. La duumaĵoj estas skribitaj en rezervitan regionon de la ROM.
Skribi al la kartoĉo dum funkciado signifas, ke la kuranta ekzemplero prenas la novan specion sen restartigo, kaj ke la sama sinsekvo de bajtoj iras al la disko, tiel ke la ŝanĝo travivas relegon.
Tio, kio aperas, estas daŭra kaj nemalfarebla. Ĝi vagas: se vi fuĝas aŭ malvenkas, ĝi restas en la mondo. Se vi faligas ĝin, ĝi estas perdita por ĉiam.
Realigo
La generilo, la kadro de limigoj, la GBA-kodigiloj kaj la flikaĵo ĉe la flanko de la ludo estas plene publikigitaj: github.com/takafumihoriuchi/my-own-pokemon-generation.
Postskribo — pri alkroĉiĝo
La prototipo solvas teknikan demandon. Malantaŭ ĝi sidas tiu, kiu vere gravas al mi: ĉu Pokémon generita por vi, ekzistanta nenie alie, fine signifas pli ol tiu, kiu venis kun la ludo?
El la ludado de mia propra versio — provaĵo el unu, kaj legi pli en ĝi ne indas — ŝajnas eliri du kondiĉoj, kiuj regas la respondon.
- Kiom da vi mem eniris ĝin. Enigi ses vortojn estas partopreno, sed maldika: tio, kio revenas, sentiĝas liverita pli ol farita. Ŝajnas gravi ne la kvanto de la kontribuo, sed ĝia karaktero — peno, ripeto, spaco por refari, kaj iom da respondeco pri tio, kiel ĝi rezultis.
- Kvalito. Alkroĉiĝo ŝajnas postuli, ke la generitaĵo transpasu sojlon. Sub ĝi, la fakto, ke io estas unika kaj via, ne subtenas la senton per si mem.
Kazo el ekster la ludo parolas pri ambaŭ. Laborante mane kun ChatGPT, irante tien kaj reen ĝis mi kontentiĝis, mi dezajnis propran specion — Hanagitsune. Mi estas alkroĉita al ĝi. Mi estis farinta ĝin anstataŭ mendinta, kaj tio, kio eliris, transpasis la sojlon de kvalito.
Ambaŭ kondiĉoj estas atingeblaj. Pli profunda procezo de farado — elekti, refari, rifuzi — movas la unuan; pli bonaj modeloj kaj pli zorge dezajnita kadro de instrukcioj movas la duan. Tien ĉi tio iras plu.
Do la rezulto de la prototipo ne estas verdikto pri la demando. Ĝi estas la demando farita mezurebla: du variabloj, kiujn oni nun povas intence movi kaj observi.
Konstruita sur la malkompilaĵo pret/pokeemerald kiel persona esploro. Neniu ROM, ROM-flikaĵo aŭ ludmaterialo estas disdonata, kaj ĉiuj ĉi tie montrataj bildoj estas originalaj verkoj generitaj de artefarita intelekto. Pokémon estas varmarko de Nintendo, Creatures Inc. kaj GAME FREAK Inc.; ĉi tiu projekto estas nek ligita al ili nek aprobita de ili.