Passer au playerPasser au contenu principalPasser au pied de page
  • avant-hier
Transcription
00:00J'ai créé un jeu avec ChatGPT.
00:02Un petit jeu, certes, qui se termine en 30 secondes chrono, mais quand même,
00:05on peut s'y déplacer, sauter, accélérer et même prendre des tremplins.
00:09Alors, je le précise, c'est la première fois de ma vie que je touche à un moteur de création de jeu,
00:14même si, j'avoue, j'ai quelques heures sur RPG Maker et sur Dreams.
00:17Blague à part, pour cette vidéo, je partais de zéro.
00:20Et justement, l'idée, c'était de voir jusqu'où on pouvait aller sans la moindre connaissance en développement,
00:25juste avec l'aide d'une IA.
00:26Avant de vous montrer ce que ça donne, petit disclaimer,
00:28on a bien conscience que les IA génératifs sont déjà prisés par de gros acteurs de l'industrie
00:33et qu'elles sont parfois le levier tout trouvé pour réduire les coûts et licencier des développeurs.
00:37En ce qui nous concerne, on ne se range pas du tout de ce côté-là.
00:40On veut simplement montrer ce qu'on peut faire avec une IA quand on est amateur et qu'on veut créer un petit jeu vidéo.
00:45De toute façon, comme vous allez le voir, ce n'est pas demain qu'on pourra se passer de vrais développeurs.
00:53Créer un jeu vidéo avec une IA, c'est bien beau, mais ça demande de réfléchir un tout petit peu avant de se lancer.
00:58Déjà, de quel type de jeu on parle ?
01:00De mon côté, j'ai décidé de partir sur un jeu de plateforme en 2D en défilement horizontal,
01:05tout simplement parce que c'est le genre qui me paraissait le plus abordable.
01:08Bien sûr, un plateformeur, ça peut prendre pas mal de forme,
01:11mais pour tout ce qui touche au game design, ma vision,
01:14c'est affiné au fur et à mesure des obstacles que j'ai rencontrés.
01:17On aura l'occasion d'y revenir.
01:18Donc on a notre genre de jeu, un plateformeur,
01:21et maintenant il nous faut un logiciel pour concevoir le jeu à proprement parler, un moteur.
01:25Et comme je suis parti pour arriver à mes fins avec le moindre d'effort possible,
01:28j'ai posé la question à l'ami ChatGPT.
01:31Enfin non, pour être honnête, je lui ai juste dit que je voulais créer un jeu de plateforme avec son aide,
01:35et il m'a conseillé de lui-même Godot, le moteur de jeu que j'ai utilisé pour cette vidéo.
01:40J'en avais jamais entendu parler,
01:41mais il y a me dit que c'est une excellente option pour un débutant comme moi
01:44qui veut créer un jeu de plateforme, donc bon.
01:47De toute façon, on n'est pas là pour se poser des questions,
01:49je le télécharge, j'installe,
01:51et c'est à ce moment que je réalise dans quoi je m'embarque.
01:53Parce que oui, ChatGPT a beau me dire que Godot est un super moteur pour les débutants,
01:58bah ça reste un moteur de jeu,
01:59c'est-à-dire un truc super velu avec des dizaines d'onglets,
02:02des sous-menus et des trucs et des machins pour faire tout et n'importe quoi.
02:05Je vais pas vous mentir,
02:06mes premiers pas sur Godot ont été laborieux.
02:09Il n'y a pas de gros boutons avec marqué
02:10« Créer un personnage qui avance et qui saute », non non non.
02:13Alors au début, on tente des clics par-ci par-là,
02:15mais rapidement, il faut se rendre à l'évidence,
02:18on est comme face à un mur.
02:19Heureusement, ChatGPT est là et je lui ai demandé de l'aide
02:22quelques minutes après avoir ouvert le logiciel.
02:24Je suis déjà en galère,
02:25qu'est-ce que je dois faire après avoir créé une scène et un node 2D ?
02:28Bon, à ce moment,
02:29l'IA a dû me prendre pour un gros débile
02:31parce que j'ai même pas pensé à lui demander comment créer un personnage.
02:34Non, j'ai juste écrit « Je suis en galère, aide-moi ».
02:37Bref, la première étape logique, c'est donc de créer un personnage.
02:40Là, ChatGPT me parle de sprite et de texture,
02:43bon ça, ça va,
02:44mais aussi de nœuds parents et enfants,
02:46de Kinematic Body 2D,
02:47et il balance même mes premières lignes de code.
02:49Bon, posture Feng Shui, ça va aller.
02:52En suivant pas à pas ce que me dit l'IA,
02:54j'arrive à créer mon personnage,
02:55ou plutôt à faire apparaître un placeholder au milieu d'un vide intersidéral,
02:58et je comprends rapidement qu'il y a une forme de hiérarchie
03:01entre les différentes choses liées à gauche de l'écran.
03:03Le node 2D, par exemple,
03:05je l'interprète comme mon projet en général,
03:07et le caractère Body,
03:08c'est le nœud parent de mon personnage,
03:10auquel j'associe une apparence et une boîte de collision.
03:13Je fais tout en forme de carré,
03:14comme ça c'est beaucoup plus simple à gérer.
03:16D'ailleurs, à ce stade,
03:17je réalise que ChatGPT a des petits soucis de terminologie.
03:20Le caractère Body, que je viens d'évoquer,
03:22ben lui, il l'appelle Kinematic Body.
03:24C'est en fait un nom issu d'une ancienne version de Godot,
03:27et soit ChatGPT s'est emmêlé les pinceaux sur le coup,
03:29soit c'est une histoire de mise à jour.
03:31Parce que oui,
03:32pour rappel,
03:32les IA génératives ne sont pas omniscientes,
03:35et elles ont besoin d'être mises à jour
03:36pour être toujours plus pertinentes.
03:37Pour en revenir à nos boutons,
03:39la suite logique,
03:40c'est de créer une plateforme
03:41pour éviter que mon personnage tombe dans le vide infini.
03:43C'est pas super compliqué en soi,
03:45il suffit de créer un corps statique,
03:47lui donner une boîte de collision,
03:48et une apparence.
03:49Plus facile à dire qu'à faire,
03:50en fait,
03:51j'ai pas mal galéré pour créer une texture,
03:53parce que Godot ne fournit pas d'assets tout près,
03:55comme c'est le cas pour le personnage.
03:57Au final,
03:57je me suis retrouvé avec un dégradé noir et blanc bien moche,
04:00mais on verra plus tard,
04:01ça me permettra d'orienter mon game design.
04:03Suspense.
04:04Maintenant, c'est du sérieux,
04:05parce que j'ai une plateforme,
04:07un personnage,
04:08et il serait peut-être temps
04:09de mettre un peu de mouvement dans tout ça.
04:10Pour commencer,
04:11je me la joue sobre,
04:12je veux juste que mon cube puisse sauter
04:14et se déplacer à gauche et à droite.
04:16La mini chat GPT me génère un code
04:18que je copie-colle dans Godot.
04:19Première tentative,
04:20ça marche pas,
04:21mais je comprends vite pourquoi.
04:22Cette triple bus d'IA
04:23a encore remplacé character body
04:25par kinématique body,
04:27le tout dès la première ligne du code,
04:28ce qui plombe tout le reste des commandes.
04:30A ce moment,
04:31je réalise deux trucs,
04:32le code c'est ultra exigeant,
04:34la moindre erreur fait planter tout le reste,
04:36et l'autre truc,
04:36c'est que Godot surligne chaque commande
04:38qui plante en rouge,
04:39ce qui va s'avérer très utile
04:41pour demander des corrections précises
04:43à ChatGPT.
04:44Après deux autres allers-retours du genre,
04:45toutes les lignes du code sont en vert,
04:47et il ne me reste plus qu'à associer
04:48chaque action de mon personnage
04:50aux touches du clavier.
04:51Et là,
04:51c'est l'heure du verdict,
04:52j'appuie sur Play.
04:53Bon, c'est sûr,
04:54le Godot c'est pas pour tout de suite,
04:56mais j'ai une base de travail.
04:57Mon cube se déplace bel et bien
04:58à gauche et à droite,
05:00et il saute,
05:00comme s'il était sur la lune.
05:02Bon, ça je peux le modifier tout seul,
05:04j'avais déjà repéré dans le code
05:05les valeurs qui conditionnent la vitesse,
05:07la force de saut
05:07et la gravité de mon personnage.
05:09Il suffit donc de jouer avec ces valeurs
05:11jusqu'à avoir un résultat qui me convient.
05:12Et voilà,
05:13là, ça me paraît pas mal.
05:14J'ai pas l'impression de me traîner
05:15et le timing du saut me plaît bien.
05:17Dans la foulée,
05:18je crée un petit obstacle
05:19pour savoir si c'est agréable
05:20de sauter par-dessus des machins
05:21et déterminer la hauteur
05:23que je vais devoir respecter
05:24pour pas que mon cube
05:24se retrouve bêtement bloqué.
05:25Je teste aussi des trucs
05:26avec la hitbox
05:27parce que c'est pas forcément
05:29super agréable
05:29de cogner au pixel près sur tout
05:31et n'importe quoi,
05:32et assez rapidement,
05:32je me retrouve avec un truc
05:33qui marche pas trop mal.
05:35À ce moment,
05:35je crois que je prends un peu la confiance
05:37parce que je me dis
05:38que ce serait judicieux
05:39d'enchaîner sur
05:40la création d'un ennemi,
05:41ce qui est quand même
05:42autrement plus compliqué
05:43que tout ce que j'ai fait jusqu'à présent.
05:44Je pose donc la question suivante
05:46à ChatGPT.
05:47Est-ce que tu peux m'expliquer
05:48comment on crée un ennemi simple
05:49qui se déplace et qui meurt
05:50quand on lui saute dessus ?
05:51Bon, sa réponse est plutôt longue,
05:53il y a pas mal de codes,
05:54mais je connais tous les termes
05:55qui me sortent
05:56à l'exception d'Area2D,
05:57un truc qui sert à détecter
05:59les collisions
05:59et qui, dans ce cas précis,
06:01permettrait à l'adversaire
06:02de disparaître
06:03si je lui saute dessus.
06:04Mais ça va être la galère.
06:06J'ai littéralement 30 minutes
06:07de capture
06:08où on me voit faire
06:09des allers-retours désespérés
06:10entre Godot et ChatGPT.
06:11J'ai des erreurs dans tous les sens,
06:13Lya arrive pas à les régler,
06:14et là, je vous avoue
06:15que j'ai un peu hésité
06:16à laisser tomber.
06:17En fait, c'est bien beau
06:18de vouloir faire un jeu
06:19avec ChatGPT
06:19avec zéro connaissance,
06:21mais quand on a un problème
06:22et que Lya ne peut rien pour vous,
06:23on est un peu démuni.
06:25Et je suis sûr
06:25qu'avec quelques notions de base,
06:27j'aurais pu m'éviter pas mal d'ennuis.
06:28Au final, j'ai eu de la chance
06:29dans mon malheur
06:30puisque cette mésaventure
06:31m'a obligé à réfléchir
06:32plus attentivement
06:33aux jeux de plateforme
06:34que je voulais créer.
06:35Et donc, pourquoi pas faire
06:36un jeu de plateforme sans ennemis,
06:38comme une sorte de géométrie d'âge
06:39en beaucoup moins énervé ?
06:40Je me suis aussi mis à imaginer
06:42un système de score
06:43qui pourrait descendre
06:44à chaque fois qu'on touche un obstacle,
06:45mais ça, on verra plus tard.
06:47Là, j'ai surtout envie
06:48de faire du level design.
06:49Je vous passe les détails,
06:50mais avant d'en arriver là,
06:51j'ai dû créer un système
06:52de scrolling horizontal
06:53pour pouvoir tester tranquillement
06:54dans mon niveau,
06:55sinon la caméra restait braquée
06:56sur les trois premiers mètres.
06:58Entre temps,
06:58ChatGPT m'a encore pris la tête
07:00et là, j'en ai eu marre,
07:01je suis passé à une autre RIA
07:02qui s'appelle Claude
07:03et qui a la réputation
07:04de mieux fonctionner avec Godot.
07:06Le seul hic,
07:06c'est que la version gratuite de Claude
07:08a un nombre limité de prompt.
07:09Bref, après tout ça,
07:10je me suis penché sur le level design,
07:12c'est-à-dire sur l'architecture même du niveau.
07:14C'est super important
07:15parce que pour que le jeu soit réussi,
07:17il faut qu'il y ait une cohérence
07:18entre mon personnage
07:19et son environnement,
07:20que les deux soient presque en symbiose.
07:22Sauf que pour l'instant,
07:23dans mon jeu,
07:23il n'y a pas grand-chose.
07:24Il fallait donc que je trouve
07:25un moyen de créer du lien
07:26entre mon cube et le niveau.
07:28J'ai d'abord pensé à un sprint
07:30dispo à tout moment
07:31pour que le joueur puisse sauter plus loin
07:32et franchir des obstacles
07:34tout en longueur,
07:35mais du coup,
07:35ça rendait les petits obstacles
07:36complètement anecdotiques.
07:38Puis, j'ai eu la bonne idée,
07:39un bonus qui fait accélérer le joueur
07:41pendant quelques instants.
07:43C'est tout bête,
07:43mais ça règle tous mes problèmes.
07:45Les petits obstacles gardent leur intérêt,
07:47comme c'est moi qui choisis
07:48l'emplacement des bonus,
07:49ça me rajoute une nouvelle mécanique
07:51et ça me permet même
07:52d'amener le joueur
07:52à faire une action
07:53à un moment donné,
07:54du genre sauter pour choper le bonus
07:56sous peine de louper l'obstacle d'après.
07:57Bien sûr,
07:58il y a eu quelques galères,
07:59sinon c'est pas drôle.
08:00Au début,
08:00l'accélération se déclenchait
08:02pas immédiatement
08:02et mon personnage
08:03conservait de la vitesse
08:04beaucoup trop longtemps.
08:05Après,
08:06j'ai galéré à donner
08:06une texture à mon bonus
08:08et je me suis retrouvé
08:09avec une boule jaune
08:10qui avançait exactement
08:11à la même allure
08:11que mon personnage.
08:12C'était un peu bizarre.
08:13Mais au bout du compte,
08:14j'y suis arrivé.
08:15Après tout ça,
08:15j'ai enfin pu m'attaquer
08:21mes idées bien en place,
08:22j'avais juste à dessiner un niveau.
08:24J'ai copié-collé mes obstacles,
08:25j'ai placé mes bonus
08:26là où je voulais
08:27et j'ai testé le truc en boucle
08:29jusqu'à être content du résultat.
08:30D'ailleurs,
08:31pendant cette étape,
08:31j'ai mis en place
08:32d'autres trucs,
08:33une zone de freinage
08:34qui fait revenir
08:34la vitesse du joueur
08:35à la normale
08:36et que j'ai placée
08:37à la fin de chaque série d'obstacles.
08:39Dans un souci de simplicité,
08:40j'ai aussi découpé mon niveau
08:41en trois portions
08:42de même longueur
08:43avec mon dégradé super moche
08:44qui indique
08:44quand le joueur
08:45s'approche de la fin d'une zone.
08:47Je vous avais dit
08:47que ça allait servir à quelque chose.
08:48Puis j'ai réalisé
08:49qu'il me fallait plus
08:50que des obstacles
08:51et des bonus
08:51pour créer un niveau intéressant.
08:52Le résultat final
08:53comporte donc aussi
08:54des tremplins
08:55qui m'ont étonnamment
08:56pas trop causé de soucis
08:57ainsi que des pics acérés
08:58qui propagent la mort
08:59sur leur passage.
09:00Non, je rigole,
09:01en fait, c'est juste une texture,
09:02je ne me suis même pas amusé
09:02à les coder.
09:03Ah, et vous vous souvenez
09:04de mon histoire de score ?
09:05Ben, c'était tellement la galère
09:06que j'ai complètement laissé tomber.
09:08J'ai essayé plusieurs méthodes,
09:09même avec d'autres IA
09:10que Claude et ChatGPT
09:12et pas moyen
09:12d'avoir un truc qui fonctionne.
09:14J'ai même failli
09:14bousiller mon projet
09:15dans l'opération.
09:16Au final,
09:17tout ce que j'ai réussi à faire,
09:18c'est afficher un petit quelque chose
09:19en haut à droite de l'écran.
09:21Je vous laisse admirer le résultat.
09:22Pour finir,
09:22je ne pouvais pas me permettre
09:23de montrer mon jeu
09:24sans un look digne de ce nom.
09:25J'ai donc créé
09:26un formidable cube JV
09:27pour remplacer
09:28le placeholder de Godot
09:29et j'ai pris
09:30le premier plan 2D
09:31qui passait sur Google.
09:32Et donc, roulement de tambour,
09:33voici votre nouveau
09:34plateformeur préféré.
09:44On espère que ça vous a plu.
09:46N'hésitez pas à laisser un like
09:47et nous, on vous dit
09:48à la prochaine sur JV.

Recommandations