Passer au contenu

Créer un jeu Javascript avec ChatGPT

Une fois par an, chez getDigital, nous lançons notre tristement célèbre Jeu de Pâques getDigitalNous y posons plus de 50 questions amusantes dont le niveau de difficulté ne cesse d'augmenter : Pour la dernière question, il faut compter plusieurs jours pour la résoudre. Cependant, même les questions les plus faciles peuvent être amusantes et à la fin, tous les participants seront tirés au sort pour gagner de superbes prix.

Pour l'énigme, nous préparons les questions longtemps à l'avance et avec beaucoup d'efforts : la création d'une question demande généralement plus d'efforts que sa résolution, nous y passons donc plus de 100 heures chaque année. Cette année, nous voulions absolument utiliser ChatGPT pour une question. L'idée était de créer un simple jump-and-run en Javascript, mais qui nécessitait des connaissances d'intello en plus de l'habileté. Nous avons d'abord fait une demande très générale à ChatGPT (version 4) :

Le résultat n'est pas encore très convaincant : Ceci (en cliquant avec la souris, le bloc saute en l'air, mais tu ne peux pas faire grand-chose d'autre). J'étais donc un peu perdu :

C'est là que ça devient vraiment fascinant : ChatGPT a généré le code pour déplacer et faire sauter le bloc bleu avec les touches fléchées ! Voilà à quoi ressemblait le jeu.

Continuons :

C'est devenu Cette version.

Dans les étapes suivantes, j'ai ajouté un compte à rebours et des plates-formes sur lesquelles le joueur peut sauter. Voilà à quoi cela ressemblait.

Comme tu peux le voir, cela ne fonctionne pas correctement : le bloc du joueur flotte au-dessus des plates-formes et ne les touche pas. J'ai donc demandé à ChatGPT de corriger le bug et c'est là que ça devient intéressant. ChatGPT a essayé de changer n'importe quoi dans la fonction checkPlatformCollision() pour corriger le bug, mais cela n'a fait qu'empirer les choses :

Chaque modification supplémentaire ajoutée par ChatGPT n'a fait qu'empirer les choses. Finalement, je lui ai demandé de rejouer le code avant les corrections de bug et je me suis mis à chercher l'erreur moi-même : il y avait tout simplement une erreur de logique dans le code de la fonction checkPlatformCollision(), qui détermine si le joueur a atteint le haut de la plateforme. Mais pour trouver cette erreur, il fallait que j'examine la logique de près et que je réfléchisse aux contrôles qui seraient corrects : ChatGPT n'était apparemment pas en mesure de le faire. Au lieu de cela, il a changé des choses de manière relativement impuissante, ce qui ressemblait plus à des essais sauvages qu'à une véritable réflexion.

Le processus s'est poursuivi de la même manière : l'intégration de nouvelles fonctionnalités dans le jeu a fonctionné de manière fascinante, mais à chaque fois qu'il y avait des bugs qui nécessitaient une étude détaillée de la logique, ChatGPT échouait. Un autre exemple était un bug dans la détection des collisions avec les blocs ennemis : le code de ChatGPT ne vérifiait que la collision avec le bord supérieur du bloc, alors que le joueur pouvait toucher le bord inférieur sans danger. Une fois de plus, je n'ai pu m'en sortir qu'en vérifiant la logique des collisions, ChatGPT n'a fait qu'aggraver la situation à chaque tentative de résolution. Même si j'ai écrit exactement à quel endroit se trouve le bug.

Je pense que les limitations que j'ai observées sont essentielles : ChatGPT n'est pas en mesure de comprendre réellement ce qu'il produit. Il ne fait "que" sortir ce qui correspond bien à ce qui est écrit dans la demande et les réponses produites jusqu'à présent. Cela fonctionne étonnamment bien, mais il ne faut pas faire l'erreur de penser que ChatGPT développe une véritable compréhension de ce qu'il écrit.

Nous utiliserons le jeu final avec toutes les corrections de bugs de ma part dans l'énigme de Pâques 2023. Il ressemble à ceci.

 

Article précédent Le casse-tête de Pâques 2023
Articles suivant Nos entrepôts et nos bureaux ont été résiliés, nous avons dû déménager.