Takafumi Horiuchi

Generazione del tuo Pokémon unico al mondo

Panoramica

Dalle sei parole inserite durante il gioco, un'IA genera una nuova specie di Pokémon. Pochi minuti dopo, questa nuova specie appare nell'erba alta, e il giocatore può incontrarla, catturarla e darle un soprannome. È stato realizzato un prototipo di ricerca che compone sul momento non solo l'aspetto e il nome, ma anche il tipo, i valori di base, le mosse e i dati gestiti all'interno del gioco.

Nel prototipo, conversazioni, inserimento di parole, generazione in background, incontri selvatici, cattura e attribuzione del nome sono stati collegati in un'unica esperienza senza fermare il gioco. Le nuove specie vengono registrate non solo come semplici immagini, ma come razze che il sistema di gioco esistente può gestire.

Il fulcro di questo approccio non è il modello generativo in sé. Gli esseri umani progettano le condizioni per mantenere l'equilibrio del gioco e la coerenza visiva, e lasciano che l'IA esplori solo entro quei confini, creando una 'struttura di generazione'. Inoltre, ho sperimentato personalmente giocando, per esaminare preliminarmente se davvero si sviluppa affetto per un oggetto generato solo da sé.

Domanda — Se è unico al mondo, nascerà un attaccamento?

Nei giochi, c'è il piacere di scegliere, sviluppare e dare un nome a un personaggio, rendendolo un "essere unico" proprio. Tuttavia, il punto di partenza si trova tra le opzioni preparate dagli sviluppatori. Quando l'AI generativa permette di creare un essere unico del giocatore già dal punto di partenza, l'attaccamento diventerebbe probabilmente ancora più forte?

Per verificare questa domanda, non basta generare un'unica immagine. È necessario che l'entità generata entri nel mondo del gioco, incontri, venga catturata e possa essere utilizzata anche successivamente. Per questo, sono stati preparati due ingressi con diverso coinvolgimento del giocatore. Parlando con il nonno, la generazione avviene senza input, mentre parlando con la nonna il giocatore sceglie sei parole. Il metodo di generazione di quella partita viene determinato dal lato con cui si parla per primo.

Lo scopo di questo prototipo non è trarre conclusioni sull'attaccamento. Si tratta di creare una base per integrare i prodotti generati nell'esperienza di gioco normale e trovare le condizioni che potranno essere confrontate in futuro.

Flusso del gioco

Di seguito è illustrato il flusso di "generazione coinvolgente" in cui il giocatore sceglie le parole. Si parla con la nonna nella Foresta di Touka e si selezionano sei parole nel "dialogo semplice" presente originariamente nel gioco. Man mano che si continua a giocare, la generazione procede e, quando è pronta, si sente un verso. Entrando nell'erba alta appare una nuova specie, catturabile con le stesse modalità dei Pokémon selvatici normali. Nome, tipo, valori di base, mosse, sprite di battaglia frontale e posteriore e icona del team vengono generati a ogni esecuzione. L'intera sequenza di azioni può essere verificata anche in Video dimostrativo.

Una coppia di anziani si trova nella foresta di Touka. Nella finestra di dialogo è visualizzato «A quale tipo di creatura stai pensando?»
Inizia quando parli con la nonna.
Schermata di inserimento di una semplice conversazione intitolata
Con la 'conversazione facile' originaria di Emerald, trasmetti sei parole.
Il giocatore si trova vicino a un cespuglio nella foresta. Nella finestra di dialogo appare la scritta: 'Il cespuglio si sta muovendo... c'è qualcosa!'
La generazione richiede alcuni minuti sul PC. Il verso annuncia il completamento della preparazione.
Schermata di battaglia. Una lucertola rossa con fiamme sulla testa si trova di fronte al giocatore. È visualizzato il messaggio: 'È apparso un FLAMEREL selvaggio!'
La lucertola di tipo Fuoco FLAMEREL appare tra l'erba che ondeggia.
Durante la battaglia, una Poké Ball viene lanciata verso FLAMEREL.
Proprio come le altre razze, possono essere catturati con le Poké Ball.
Schermata di denominazione che chiede il soprannome di FLAMEREL. È inserito GGG.
Proprio come le altre razze, puoi avere un soprannome.
Schermata del portatile. Le specie generate hanno icone dedicate e sono affiancate ai tre normali Pokémon.
Proprio come le altre razze, ha un'icona dedicata e si allinea nell'inventario.
Schermata delle informazioni del Pokémon FLAMEREL. Tipo Fuoco, abilità Braciere, personalità Vivace, è mostrato che è stato incontrato nella Foresta di Touka a livello 7.
Proprio come per le altre razze, anche lo schermo delle statistiche funziona correttamente.

Problema di progettazione — se generato liberamente, il gioco si rompe

Il fatto che l'AI possa inventare un nuovo personaggio e il fatto che quel personaggio possa funzionare all'interno del gioco sono due questioni separate. Se le abilità sono troppo elevate, la difficoltà viene compromessa, e se il tipo e le mosse non sono compatibili, sarà difficile allenarlo. Se l'aspetto è troppo complesso, quando viene convertito in uno sprite da 64×64 pixel, la forma diventa illeggibile.

D'altra parte, se si fissa tutto, non ha senso che ogni esecuzione produca qualcosa di diverso. Ciò che era necessario non era eliminare la libertà dell'IA, ma separare le parti da proteggere come gioco da quelle a cui permettere variazioni.

Quindi, l'oggetto di design è stato spostato da un singolo Pokémon a uno spazio in cui i Pokémon possono essere generati. Gli esseri umani definiscono obiettivi, vincoli, divieti e metodi di verifica, mentre l'IA concretizza le opzioni all'interno di tali parametri. Questo è un esempio di design vincolato, La mia filosofia di design, testato come prototipo funzionante.

Approccio: progettare le condizioni di generazione, non il prodotto generato

Non far scrivere frasi libere al LLM, ma far compilare solo le voci prestabilite come nome, tipo, valori della razza, mosse, corporatura e colore. Non adottare direttamente l'output, ma verificarlo con un validatore. Se ci sono violazioni, restituire al modello quale regola è stata infranta e rigenerare fino a soddisfare le condizioni.

  1. L'essere umano stabilisce i confini. Trasformare l'equilibrio di gioco, la forma leggibile sullo schermo e le espressioni da evitare in regole verificabili.
  2. L'IA concretizza le proposte. Suggerire i valori delle voci consentite basandosi sulle parole del giocatore.
  3. La macchina verifica le regole. Valuta automaticamente numeri, combinazioni di tecniche ed espressioni vietate.
  4. Fornire feedback solo sulle violazioni. I candidati che non soddisfano i requisiti vengono restituiti con le motivazioni e rigenerati.

Vincoli che proteggono il gioco. Il totale dei valori di base è stato fissato nell'intervallo tra 280 e 360, e sono stati posti limiti superiori e inferiori anche per ogni abilità. Le mosse sono state estratte dai sorgenti del gioco e limitate ai tipi della specie o di tipo Normale. Inoltre, sono state escluse mosse one-hit KO, autodistruzione, danno fisso e mosse eccessivamente potenti, e sono stati controllati anche il numero di mosse offensive e la presenza di mosse dello stesso tipo. Tasso di cattura e velocità di crescita sono stati fissati in modo tale che le differenze generate rientrassero in un intervallo confrontabile.

Vincolo per proteggere l'aspetto. La forma del corpo è stata scelta da candidati che mantengono facilmente il contorno anche in piccoli sprite, e il vocabolario dei colori e delle caratteristiche è stato limitato. Sono escluse caratteristiche umane, sanguinamenti, armi, testi, ecc. Infine, condizioni per prevenire errori come "solo un corpo", "tutto il corpo" e "non creare arti extra" devono sempre essere aggiunte alle istruzioni per la generazione delle immagini.

Secondo un record, il modello ha inizialmente proposto un'idea con un totale dei valori di specie pari a 380. Il quadro rilevava le violazioni e incoraggiava la rigenerazione, portando infine a una specifica di 320. L'importante non è che venga fuori un buon risultato per caso, ma che sia stato progettato un processo che non adotta risultati fuori dal quadro.

Completare l'esperienza all'interno del gioco

L'unica cosa con cui il giocatore interagisce sono le conversazioni nel gioco, la scelta delle parole e gli incontri tra l'erba alta. Non è necessario aprire un'altra schermata per la generazione. D'altra parte, i processi di calcolo più complessi sono gestiti da un processo Python sul PC, che collabora con il gioco tramite file. Lo script Lua su mGBA fa da ponte tra i due, separando la sensazione di gioco tradizionale dall'elaborazione dell'intelligenza artificiale esterna.

  1. Creare le specifiche. Il modello linguistico locale converte sei parole in dati di specie verificati.
  2. Creare una figura. Il modello di immagini disegna un'illustrazione di riferimento e da essa genera icone frontali, posteriori e da mano in una postura coerente.
  3. Convertire in dati per il gioco. Ridurre l'immagine a 15 colori e convertire/comprimere in sprite e palette gestibili dal GBA.
  4. Riflettere sul gioco in esecuzione. Scrivi i dati nell'area prenotata e fai apparire una nuova specie senza riavviare il gioco.

Poiché gli stessi dati vengono scritti anche sul disco, la razza riflessa rimane anche se si ricarica il gioco. La generazione avviene una sola volta e non può essere annullata. Se si scappa o si perde durante un incontro, rimane nel mondo, ma se viene sconfitta non apparirà mai più. Questa irreversibilità è stata concepita anche come parte del design per dare all'esperienza il senso di 'un solo esemplare nel mondo'.

Cose che abbiamo potuto confermare con il prototipo

Questa è una verifica di fattibilità realizzata da una sola persona, e non un gioco completato né un esperimento con utenti. I punti raggiunti e le aree non verificate sono suddivisi come segue.

Il risultato dei miei esperimenti — solo essere unico non ha fatto nascere attaccamento.

Da quanto ho potuto giocare personalmente al prototipo, non è nata una forte affezione per i Pokémon generati. Questa è solo l'impressione di chi ha implementato il gioco e non costituisce un risultato sperimentale generalizzabile. Tuttavia, è stato un indizio utile per pensare a cosa cambiare e confrontare successivamente.

Ci sono due condizioni che sembrano influenzare l'attaccamento.

In contrast, there is "Hanagitsune," which was created through multiple interactions with generative AIs and manual work, separate from game-generated content. I am attached to this character, for whom I compared candidates, made corrections, and refined until it reached a satisfactory form. I believe this is because both sufficient quality and involvement, including trial and error, were present.

Vista frontale di un volpe dei fiori. Una volpe verde chiaro, con la coda che sembra cadere come un viticcio con fiori. Il dorso della volpe dei fiori. Si vede l'intera lunghezza della coda fiorita.
Hanagitsune — custode della foresta con una coda fiorita. Lungo le sue corse, spuntano erbe e fiori, e porta nuova vita persino nelle terre desolate. La sua figura è considerata un simbolo della crescita della foresta verso il futuro.
Schermata delle informazioni di Pokémon di Hanagi2ne. Tipo Erba, abilità Clorofilla, natura Audace, è mostrato che è stato incontrato al livello 7 nella Foresta di Touka. Lo sprite è una volpe verde chiaro con una coda fiorita. Schermata di battaglia. Hanagi2ne visto da dietro si trova di fronte a un Poochyena selvatico. È visualizzato 'Hanagi2ne usa Assorbimento!'.
Abbiamo implementato il "Hanagitsune", progettato attraverso dialogo e lavoro manuale, come razza all'interno del gioco.

Questo prototipo non risponde alla domanda «Il contenuto generato suscita attaccamento?». Ha suddiviso la domanda vaga in due elementi, la qualità del prodotto generato e la profondità del coinvolgimento, che possono essere intenzionalmente modificati. Nella verifica successiva sarà necessario integrare nella fase di produzione la scelta, il confronto e la correzione, uniformare la qualità del prodotto generato a un livello costante e permettere il confronto tra più partecipanti.

Implementazione

La pipeline di generazione, il quadro dei vincoli e della verifica, la conversione dei dati per GBA e le modifiche lato gioco sono pubblicati su Repository GitHub.

pret/pokeemerald È stato realizzato come ricerca personale basandosi sulla decompilazione. Non vengono distribuiti né ROM, né patch della ROM, né asset del gioco. Tutti gli sprite pubblicati qui sono originali generati dall'AI. Pokémon è un marchio di Nintendo, Creatures Inc. e Game Freak Inc., e questo progetto non ha alcun collegamento con queste aziende né ha ricevuto la loro approvazione.