Creare un Tetris con l’AI generativa è un gioco da ragazzi
Nei giorni subito successivi al rilascio di GPT 4o vi è stato un vero e proprio fiorire di cloni di videogiochi famosi realizzati con un unico prompt. La cosa è sicuramente stupefacente, ma a ben vedere si trattava perlopiù di Proof Of Concept che, passato lo stupore iniziale, non erano poi così completi e divertenti da giocare.
Avendo a disposizione una mezza giornata durante un week end ho voluto fare una prova più approfondita per capire quanto, effettivamente, ci si possa spingere nell’utilizzo dell’Intelligenza Artificiale Generativa per realizzare un gioco completo in tutti i suoi aspetti e che risulti anche divertente.
Vediamo come realizzare un clone Tetris e i risultati – spoiler …. ottimi – che si riescono ad ottenere.
Iniziamo dalle specifiche base
Come primo passo, avendo scelto di creare un clone di Tetris, chiedo a ChatGPT di definire i “requisiti funzionali” del gioco in maniera tale da essere sicuro di non scordare alcun particolare importante del gioco e, soprattutto, spiegarlo in una maniera facilmente comprensibile per la stessa AI che si dovrà occupare dello sviluppo del gioco.
Il risultato, nonostante non abbia usato alcuna particolare tecnica di prompting (impersonificazione, chain of thoughts, …), è molto soddisfacente: sono contemplati tutti gli elementi chiave del gioco e le sue dinamiche principali.
Una prima versione funzionante
Una volta definiti i requisiti chiedo, anche in questo caso senza alcun accorgimento, a ChatGPT di elaborare il codice in HTML5. Il risultato ottenuto è del codice HTML5, CSS e Javascript che, una volta salvati in locale, danno vita ad una versione molto semplice, ma funzionante del gioco.
Come immaginavo, sebbene il codice non presenti dei problemi, il gioco non è di per sé particolarmente raffinato o divertente.
Arricchiamo l’esperienza di gioco
Proprio per questo chiedo a ChatGPT stesso di darmi degli spunti su come migliorare il mio gioco. La risposta è molto interessante e strutturata perché suddivisa tra aspetti relativi alla grafica, altri alla giocabilità ed, infine, altri ancora rispetto alla performance e alla compatibilità tra diverse piattaforme.
Tematizziamo il gioco
Decido di partire con i miglioramenti grafici e chiedo a ChatGPT qualche suggerimento su come tematizzare il gioco. La risposta ricevuta non è poi così interessante e i consigli che mi ha fornito avrebbero reso il mio gioco abbastanza pacchiano e inconsistente.
Ispirato dal mio videogioco arcade preferito – Pang – allora gli propongo un giro intorno al mondo. In questo caso ChatGPT è molto bravo a individuare dei luoghi iconici che avrebbero fatto da sfondo ai livelli del mio gioco.
Creiamo la grafica
E’ venuto il momento di provare le capacità grafiche di GPT 4o con la creazione degli asset per le location che lei stessa mi aveva suggerito. Dopo un paio di tentativi sono soddisfatto della resa grafica, in uno stile ispirato ai manga anni 80, di una vista di Parigi.
Chiedo l’ID dell’immagine in modo da usarlo nella generazione delle altre location così da avere una coerenza visiva, che in effetti ottengo, tra i diversi livelli.
Musica, maestro!
Per quanto riguarda la musica mi sono affidato a Suno che si è dimostrato abbastanza soddisfacente. Con i giusti prompt sono riuscito a realizzare le musiche di sottofondo per i dieci livelli riuscendo ad ottenere una certa uniformità di stile.
Alcune non sono propriamente dei capolavori, ma – a discolpa dello strumento – devo ammettere che lo conosco abbastanza poco e, probabilmente, potrebbero esservi degli accorgimenti tali da ottenere dei risultati decisamente migliori.
Realizziamo i tool di sviluppo
L’output di Suno è in .mp3, mentre nel mio gioco, per ottenere una dimensione minore dei file ho deciso di utilizzare il formato .ogg e allo stesso tempo gli effetti sonori generati da MyEdit AI avevano delle parti mute che volevo eliminare.
Per fare queste trasformazioni ho chiesto ChatGPT di crearmi dei semplici tool a supporto dello sviluppo, questa volta in Python, che coprissero le mie esigenze. Inutile sottolineare come in questo caso – senza stupore conoscendo l’abilità dello strumento di OpenAI in questo ambito – il codice fosse perfettamente funzionante al primo colpo.
Alcune difficoltà
Nello sviluppo del gioco ci sono state un paio di situazioni che hanno messo in difficoltà ChatGPT: un bug in una particolare situazione di rotazione del tetromino e l’implementazione dell’animazione di distruzione della riga. In entrambi i casi, nonostante i molti tentativi l’AI continuava a generare codice errato.
E’ stato comunque possibile risolvere tutti e due i problemi chiedendo a ChatGPT di scordare tutto e ricominciare da zero oppure aprendo una nuova chat, dandogli in pasto il codice buggato e chiedendo all’LLM stesso di correggerlo.
Considerazione finali
Sono molto soddisfatto di questo esperimento per il risultato finale ottenuto, ma soprattutto per come ho potuto apprezzare il funzionamento degli strumenti di Intelligenza Artificiale Generativa in questo specifico contesto.
E, sinceramente, penso che in un futuro pomeriggio a disposizione potrei tornare su questo progetto per arricchirlo ancora andando ad inserire dei passaggi narrativi o degli elementi per diversificare ancor più il gameplay.
Non sono un programmatore e, per di più, per questo progetto ho scelto appositamente una combinazione di linguaggi – HTML5 + CSS + Javascript – che non conosco per nulla, pertanto non avevo modo di “aiutare” l’AI quando questa si inceppava in bug o imprecisioni.
Probabilmente una conoscenza, anche di base, di javascript avrebbe reso il processo di realizzazione del gioco ancora più veloce.
Sicuramente una conoscenza approfondita dei linguaggi avrebbe reso il tutto non solo più veloce, ma anche avrebbe portato ad un codice più pulito e ottimizzato.
Se volete provare T-AI-tris, in questa versione solo da computer direttamente nel browser, potete giocarlo proprio qua.
Buon divertimento!
Pingback: AI nei videogiochi e diritti dei lavoratori - 00lab