Creare un gioco Javascript con ChatGPT
Una volta all'anno noi di getDigital lanciamo il nostro famigerato puzzle pasquale di getDigitalProponiamo più di 50 domande nerd con un livello di difficoltà sempre crescente: Per l'ultima domanda, puoi aspettarti di passare diversi giorni a cercare di risolverla. Tuttavia, puoi divertirti molto anche con le domande più semplici e, alla fine, tutti i partecipanti parteciperanno a un'estrazione per vincere fantastici premi.
Ci impegniamo molto per creare le domande del rompicapo con molto anticipo: di solito la creazione di una domanda richiede più impegno della sua risoluzione, quindi ogni anno ci dedichiamo più di 100 ore. Quest'anno volevamo davvero utilizzare ChatGPT per una domanda. L'idea era quella di creare un semplice "jump-and-run" in Javascript che richiedesse conoscenze nerd oltre che abilità. Per prima cosa abbiamo fatto una richiesta molto generica a ChatGPT (versione 4):
Il risultato non è ancora così convincente: Questo (cliccando con il mouse il blocco salta in aria, ma non puoi fare molto altro). Quindi ero un po' confuso:
Ora la cosa si fa davvero affascinante: ChatGPT ha generato il codice per far muovere e saltare il blocco blu con i tasti freccia! Ecco come appariva il gioco dopo.
Continuiamo:
È diventato questa versione.
Nelle fasi successive, ho aggiunto un timer per il conto alla rovescia e piattaforme su cui il giocatore può saltare. Ecco come appariva in seguito.
Come puoi vedere, non funziona correttamente: il blocco giocatore fluttua sopra le piattaforme e non le tocca. Ho quindi chiesto a ChatGPT di risolvere il bug e le cose si sono fatte interessanti. ChatGPT ha provato a cambiare qualcosa nella funzione checkPlatformCollision() per risolvere il bug, ma ha solo peggiorato la situazione:
Ogni altra modifica aggiunta da ChatGPT non ha fatto altro che peggiorare la situazione. Alla fine gli ho chiesto di ripristinare il codice prima della correzione del bug e sono andato a cercare io stesso il bug: c'era semplicemente un errore logico nel codice della funzione checkPlatformCollision() che determina se il giocatore ha raggiunto la cima della piattaforma. Per trovare questo errore, però, ho dovuto esaminare attentamente la logica e valutare quali fossero i controlli corretti: ChatGPT non era apparentemente in grado di farlo. Al contrario, cambiava le cose in modo relativamente impotente, il che sembrava più un tentativo di errore che una vera e propria riflessione.
Il processo è continuato allo stesso modo: ha funzionato benissimo per integrare ulteriori funzionalità nel gioco, ma ogni volta che c'erano bug che richiedevano un esame dettagliato della logica, ChatGPT falliva. Un altro esempio era un bug nel rilevamento delle collisioni con i blocchi nemici: il codice di ChatGPT controllava solo le collisioni con il bordo superiore del blocco, mentre il giocatore poteva tranquillamente toccare il bordo inferiore. Anche in questo caso, l'ho capito solo controllando attentamente la logica delle collisioni, ChatGPT non ha fatto altro che peggiorare il problema ogni volta che ho cercato di risolverlo. Anche quando ho scritto esattamente dove si trovava il bug.
Credo che le limitazioni che ho osservato siano significative: ChatGPT non è in grado di capire realmente cosa sta producendo. "Semplicemente" produce solo ciò che corrisponde a ciò che è contenuto nella richiesta e nelle risposte prodotte fino a quel momento. Questo funziona sorprendentemente bene, ma non bisogna commettere l'errore di pensare che ChatGPT sviluppi una reale comprensione di ciò che sta scrivendo.
Utilizzeremo il gioco finale con tutte le correzioni di bug da me apportate nel puzzle di Pasqua 2023. L'aspetto è questo.