Takafumi Horiuchi

Generi propran Pokémon: esplora prototipo ene de la ludo

Superrigardo

Mi konstruis esploran prototipon, kiu generas novan Pokémon-specion el ses vortoj elektitaj dum ludado. Kelkajn minutojn poste ĝi aperas en alta herbo, kie la ludanto povas renkonti ĝin, kapti ĝin kaj doni al ĝi kromnomon. La prototipo generas ĝiajn aspekton, nomon, tipon, bazajn statistikajn valorojn, movojn kaj la datumojn necesajn por integri ĝin en la ludon.

La prototipo kunligas enludan konversacion, vortelekton, fonan generadon, sovaĝajn renkontojn, kaptadon kaj nomadon sen haltigi la ludon. Ĉiu generita specio estas registrita en formo uzebla de la ekzistantaj ludsistemoj.

Mi koncentriĝis pri la generada kadro: difini postulojn por konservi la ludekvilibron kaj vidan koherecon, poste lasi AI esplori ene de tiuj limoj. Mi ankaŭ mem ludis la prototipon por fari preparan takson pri tio, ĉu unika rolulo sufiĉas por estigi emocian ligon.

Demando: ĉu unikeco estigas emocian ligon?

Ludoj ebligas al ludantoj elekti, kreskigi kaj nomi rolulojn ĝis ili sentas ilin unike siaj. Sed la deirpunkto ankoraŭ estas aro de ebloj preparitaj de la programisto. Se generativa AI ebligus al ludantoj formi rolulon jam dekomence, ĉu ili sentus pli fortan emocian ligon?

Nura generita bildo ne sufiĉas por esplori tiun demandon. La rolulo devas eniri la ludmondon, esti renkontata kaj kaptata, kaj resti uzebla poste. Mi kreis du vojojn kun malsamaj gradoj de ludanta partopreno: paroli al la maljunulo ekigas generadon sen enigo; paroli al la maljunulino ebligas elekti ses vortojn. La unua el tiuj roluloj, kun kiu la ludanto parolas, difinas la genermetodon por tiu ludpartio.

La prototipo ne establas konkludon pri emocia ligiĝo. Ĝia celo estas integri generitan enhavon en ordinaran ludadon kaj identigi kondiĉojn por estontaj komparoj.

Kiel ĝi funkcias dum ludado

La suba sinsekvo montras la vojon gvidatan de la ludanto. En la arbaro Petalburg la ludanto parolas al maljunulino kaj elektas ses vortojn el la ekzistanta vortprovizo Easy Chat de la ludo. Generado daŭras fone, dum la ludanto plu ludas. Krio signalas, ke la nova specio estas preta; eniri altan herbon ekigas renkonton, kaj la ludanto povas kapti ĝin per la kutimaj regiloj. Ĉiu generado produktas nomon, tipon, bazajn statistikajn valorojn, movojn, antaŭan kaj malantaŭan batalbildetojn, kaj grupikonon. La demonstra filmeto montras la tutan sinsekvon.

Maljuna paro staras antaŭ la ludanto en la arbaro Petalburg. La dialogo demandas, kian estaĵon la ludanto imagas.
La ludanto komencas parolante al la maljunulino.
La ekrano Easy Chat, kun la titolo «Picture the creature:» (Imagu la estaĵon), kaj la enigitaj vortoj BEAUTIFUL, ATTACK kaj FIRE.
La ludanto priskribas la ideon per ses vortoj el la ekzistanta vortprovizo Easy Chat de Pokémon Emerald.
La ludanto staras apud alta herbo en la arbaro. La dialogujo tekstas: «The tall grass is rustling... Something is in there!» (La alta herbo susuras… Io estas tie!).
Generado daŭras kelkajn minutojn en la komputilo. Krio signalas, ke la nova specio estas preta.
Batalekrano montranta ruĝan lacerton kun flamoj sur la kapo, fronte al la ludanto. La teksto estas «Wild FLAMEREL appeared!» (Sovaĝa FLAMEREL aperis!).
FLAMEREL, fajrotipa lacerto, aperas el la susuranta herbo.
Dum batalo oni ĵetas Poké Ball al FLAMEREL.
Kiel aliajn speciojn, oni povas kapti ĝin per Poké Ball.
La ekrano por doni kromnomon al FLAMEREL, kun «GGG» enigita.
Kiel al ajna alia Pokémon, oni povas doni kromnomon al la nova specio.
La ekrano de la grupo. La generita specio havas propran ikonon kaj aperas apud tri ekzistantaj Pokémon.
La nova specio ricevas propran ikonon kaj aperas en la grupo de la ludanto.
La resuma ekrano de FLAMEREL: fajrotipo, la kapablo Blaze, la naturo Naughty, kaj renkonto je nivelo 7 en la arbaro Petalburg.
La generitaj datumoj funkcias en la ekzistanta resuma ekrano de la ludo.

Dezajna defio: teni generitajn rolulojn ludeblaj

Generi novan rolulon kaj igi ĝin funkcii en ludo estas apartaj defioj. Tro altaj statistikaj valoroj povas perturbi la ekvilibron de ludmalfacileco, dum nekongruaj tipoj kaj movoj povas malfaciligi trejnadon de rolulo. Tro komplika aspekto povas fariĝi nerekonebla post redukto al bildeto de 64 × 64 pikseloj.

Fiksi ĉiun detalon nuligus la celon generi malsaman rezulton ĉiufoje. Mi devis distingi la elementojn esencajn por la ludado de tiuj, kiuj povus varii.

Mi tial koncentriĝis pri dezajno de la spaco de eblaj Pokémon. Homoj difinas la celojn, limigojn, malpermesitan enhavon kaj kontrolmetodojn; AI ellaboras kandidatojn ene de tiu kadro. Ĉi tiu funkcianta prototipo praktike aplikas mian aliron de dezajno laŭ limigoj.

Aliro: difini la kondiĉojn de generado

La sistemo petas grandan lingvomodelon (LLM) plenigi antaŭdifinitajn kampojn, kiel nomo, tipo, bazaj statistikaj valoroj, movoj, korpoformo kaj koloro, anstataŭ verki liberan prozon. Kontrolilo ekzamenas ĉiun respondon antaŭ ĝia akcepto. Se respondo malobservas regulon, la sistemo redonas la specifan malobservon kaj petas regeneradon ĝis la postuloj estas plenumitaj.

  1. Homoj difinas la limojn. Postuloj pri ludekvilibro, rekoneblaj bildetoj kaj akceptebla enhavo fariĝas eksplicitaj, kontroleblaj reguloj.
  2. AI ellaboras kandidatojn. La modelo uzas la vortojn de la ludanto por proponi valorojn por la permesitaj kampoj.
  3. La sistemo kontrolas la eligon kontraŭ la reguloj. Ĝi aŭtomate kontrolas nombrajn intervalojn, kombinojn de movoj kaj malpermesitan enhavon.
  4. La reagoj celas nur malobservojn. Kandidato, kiu malobservas regulon, estas resendata kun la kialo kaj regenerata.

Limigoj por protekti la ludadon. Mi fiksis la sumon de la bazaj statistikaj valoroj je 280–360, kun supra kaj malsupra limoj por ĉiu valoro. Movoj estis eltiritaj el la fontkodo de la ludo kaj limigitaj al movoj kongruaj kun la tipo de la specio aŭ al normal-tipaj movoj. Mi ekskludis movojn kaŭzantajn tujan senkapabligon per unu frapo, memdetruon, fiksan damaĝon aŭ troan potencon. La kontrolilo ankaŭ kontrolis la nombron de atakaj movoj kaj ĉu la specio havas movojn kongruajn kun sia tipo. Kaptoprobablo, kreskorapido kaj aliaj faktoroj estis fiksitaj por teni la generitajn diferencojn ene de amplekso taŭga por komparo.

Limigoj por konservi vidan klarecon. Korpoformoj estas elektataj el ebloj kun siluetoj rekoneblaj eĉ en malgrandaj bildetoj. Ankaŭ la vortprovizo por koloroj kaj trajtoj estas limigita. Homecaj trajtoj, sango, armiloj kaj teksto estas ekskluditaj. La bildogeneraj instrukcioj ĉiam enhavas protektajn kondiĉojn kiel «nur unu estaĵo», «montru la tutan korpon» kaj «neniuj kromaj membroj».

Dum unu registrita rulado la modelo unue proponis sumon de bazaj statistikaj valoroj de 380. La kontrolilo detektis la malobservon kaj petis regeneradon, kiu fine produktis specifon kun sumo de 320. La kontribuo estis procezo, kiu malakceptas eligojn ekster la difinitaj limigoj, sen dependi de hazarde sukcesa rezulto.

Teni la sperton ene de la ludo

La ludanto uzas nur enludajn konversaciojn, vortelekton kaj renkontojn en la herbo; ne ekzistas aparta genera ekrano. La kompute intensa laboro estas plenumata en Python-procezo sur la komputilo, kiu interŝanĝas datumojn kun la ludo per dosieroj. Lua-skriptoj rulantaj en la emulilo mGBA kunligas la du flankojn, konservante la konatajn regilojn de la ludo dum la AI-prilaborado restas ekstera.

  1. Generi la specifon. Loka lingvomodelo transformas la ses vortojn en datumojn de specio, kiuj estas kontrolataj antaŭ uzo.
  2. Generi la bildojn. Bildmodelo kreas referencan ilustraĵon, poste vide koherajn antaŭan kaj malantaŭan bildetojn kaj grupikonon.
  3. Konverti al ludaj datumoj. Bildoj estas reduktataj al 15 koloroj, poste konvertataj kaj kunpremataj al bildetoj kaj paletroj kongruaj kun Game Boy Advance (GBA).
  4. Integri en la rulantan ludon. Datumoj estas skribataj en rezervitan areon, enkondukante la novan specion sen restartigi la ludon.

La samaj datumoj estas skribataj ankaŭ surdiskon, do la generita specio restas post reŝargo de la ludo. Generado okazas nur unufoje kaj ne estas malfarebla. Se la ludanto fuĝas aŭ perdas la batalon, la Pokémon restas en la mondo. Se la ludanto venkas ĝin, ĝi neniam reaperas. Tiu neinversigebleco faras «nur unu en tiu ludpartio» parto de la sperto.

Kion la prototipo konfirmis

Mi konstruis ĉi tiun prototipon sola por provi teknikan realigeblon. Ĝi estas nek finita ludo nek studo kun uzantoj. La sekva listo distingas tion, kion mi kontrolis, kion mi realigis kaj kio restas neprovita.

Kion mi lernis ludante: unikeco sola ne estigis emocian ligon

Mem ludi la prototipon ne estigis ĉe mi fortan emocian ligon al la generita Pokémon. Tio estas mia propra impreso kiel programisto, ne rezulto ĝeneraligebla al aliaj ludantoj. Ĝi tamen sugestis, kion varii en estonta komparo.

Du faktoroj ŝajnis esplorindaj.

Kontraste, mi sentas emocian ligon al Hanagitsune, rolulo kreita ekster la aŭtomata luda generprocezo per ripetaj konversacioj kun pluraj generativaj AI-iloj kaj mana prilaborado. Mi komparis kandidatojn, korektis detalojn kaj daŭrigis ĝis mi estis kontenta. Mi opinias, ke kaj la kvalito de la rezulto kaj mia partopreno en la ripeta kreoprocezo kontribuis al tiu ligiĝo.

Antaŭa vido de Hanagitsune, palverda vulpo kun vosto simila al malsupren pendantaj grimpoplantoj kovritaj de floroj. Malantaŭa vido de Hanagitsune, montranta la tutan longon de ĝia floranta vosto.
Hanagitsune, arbara gardanto kun floranta vosto. Herboj kaj floroj elkreskas ĉie, kie ĝi kuras, alportante novan vivon eĉ al senfrukta tero. Ĝi estas rigardata kiel simbolo de la daŭra kresko de la arbaro.
La resuma ekrano de Hanagi2ne: herbotipo, la kapablo Overgrow, la naturo Brave, kaj renkonto je nivelo 7 en la arbaro Petalburg. Ĝia bildeto montras palverdan vulpon kun floranta vosto. Batalekrano montranta Hanagi2ne de malantaŭe, fronte al sovaĝa Poochyena. La teksto estas «Hanagi2ne used ABSORB!» (Hanagi2ne uzis ABSORB!).
Hanagitsune, dezajnita per ripeta dialogo kaj mana prilaborado, estis realigita kiel specio en la ludo.

Ĉi tiu prototipo ne respondas, ĉu generita enhavo estigas emocian ligon. Ĝi transformas tiun vastan demandon en du faktorojn intence varieblajn: la kvalito de la eligo kaj la profundo de partopreno. Estonta studo aldonus eblojn elekti, kompari kaj revizii dum kreado, portus la eligojn al konsekvenca kvalitnivelo, kaj komparus spertojn de pluraj partoprenantoj.

Realigo

La generada procezo, la kadro de limigoj kaj kontroloj, la konverto al GBA-datumoj kaj la ludflankaj modifoj estas publikigitaj en la GitHub-deponejo.

Ĉi tiu sendependa esplorprojekto baziĝas sur la malkompilado pret/pokeemerald. Ĝi distribuas nek ROM-ojn, nek ROM-flikaĵojn, nek ludajn rimedojn. Pokémon estas varmarko de Nintendo, Creatures Inc. kaj Game Freak Inc.; la projekto estas nek ligita al tiuj kompanioj nek aprobita de ili.