Fiche de révision : Créer un jeu 2D avec Godot

Plan du Cours

  1. Projet et installation de Godot
  2. Scènes, nœuds et arborescence
  3. Tilemaps et décor du jeu
  4. Physique et collisions
  5. Joueur et animations
  6. Déplacements et script physique
  7. Déplacements et commandes du joueur
  8. Animations du personnage
  9. Roulade et gestion du temps
  10. Objet à attraper et lancer
  11. Scène d’interface utilisateur
  12. Interface et gestion des points de vie
  13. Fléchettes et système de spawn
  14. Déclenchement de la victoire
  15. Export du jeu

1. Projet et installation de Godot

★ À maîtriser

  • 🔄 L’installation de Godot se fait en plusieurs étapes :

    1. Télécharger la version standard depuis le site officiel.
    2. Décompresser le fichier ZIP téléchargé.
    3. Lancer l’exécutable.
  • 🔄 La création d’un projet se déroule ainsi :

    1. Cliquer sur Create.
    2. Nommer le projet.
    3. Cliquer de nouveau sur Create.
  • Les fichiers du projet sont organisés dans le FileSystem, où l’on crée les dossiers asset, scripts et scène avant d’y glisser les fichiers d’assets.

Compléments

  • Le projet présenté est un jeu de plateforme 2D où le héros court, saute et roule, évite des fléchettes et rapporte un donut au panier pour gagner.

📌 La version standard de Godot est conseillée, sauf si l’on prévoit de programmer en C#.

  • Les assets du projet peuvent être ceux de l’utilisateur ou les assets temporaires fournis avec le projet, qui pourront être remplacés plus tard.

2. Scènes, nœuds et arborescence

Notions clés & Définitions

  • Scène : Groupe de nœuds organisé en arborescence autour d’un nœud racine, auquel les autres nœuds sont attachés comme enfants.
  • Nœud : Élément d’un jeu Godot, comme un joueur, un ennemi, une image ou un son.

★ À maîtriser

  • Une scène peut être réutilisée dans une autre scène.

Compléments

  • Modifier une scène réutilisée met automatiquement à jour ses occurrences dans les autres scènes.

  • Une scène peut représenter :

    • Un personnage
    • Un menu
    • Un objet à ramasser
    • Un niveau entier

Astuce mémo

Visualise une scène comme un arbre : le nœud racine porte ses nœuds enfants.

3. Tilemaps et décor du jeu

Notions clés & Définitions

  • Sprite sheet : Image qui regroupe de petites images appelées tuiles, représentant notamment des éléments de décor comme le sol, les murs ou le fond.
  • TileSet : Ressource qui indique à Godot comment découper une sprite sheet et comment se comportent ses tuiles, notamment si elles ont une collision.
  • TileMap : Grille sur laquelle on peint un niveau à l’aide des tuiles d’un TileSet.

Points essentiels

  • Pour créer le décor, on crée une scène 2D principale nommée game, on la sauvegarde dans scène puis on la définit comme scène principale du jeu.

  • Pour créer un TileSet à partir d’une sprite sheet, on ajoute un TileMapLayer, crée un nouveau TileSet dans l’inspecteur, y glisse la sprite sheet puis accepte la détection automatique des tuiles.

📌 Dans la version de Godot utilisée, TileMap est indiqué comme obsolète et TileMapLayer est présenté comme le choix récent à utiliser.

4. Physique et collisions

Notions clés & Définitions

  • Collision : Interaction qui permet au moteur de traiter un objet comme solide et d’empêcher le passage à travers lui.
  • Caméra 2D : Élément qui définit la partie du jeu visible à l’écran.

★ À maîtriser

📌 Les nœuds liés à la physique, comme CharacterBody2D, RigidBody2D, StaticBody2D et Area2D, nécessitent une CollisionShape2D ou un CollisionPolygon2D pour que le moteur connaisse leur forme.

  • Les principaux types de corps physiques sont :
    • StaticBody2D, immobile et adapté au sol ou aux murs
    • CharacterBody2D, adapté aux joueurs ou ennemis mobiles
    • RigidBody2D, réagissant à la physique comme un objet poussable
    • Area2D, servant à détecter sans interaction physique

Compléments

  • Pour attribuer une collision aux tuiles, on ajoute un élément dans les Physics Layers du TileSet, puis on sélectionne cette propriété dans l’éditeur de propriétés et on la peint sur les tuiles concernées.

  • Les layers et les masques déterminent avec quels objets un objet peut entrer en collision.

  • Le décor de l’exemple utilise deux TileMap superposés, l’un pour le fond et l’autre pour la plateforme, afin de combler la transparence de certaines tuiles d’herbe.

  • Multiplier les TileMap superposés peut avoir un impact sur les performances du jeu.

Astuce mémo

Le StaticBody2D reste immobile, tandis que le CharacterBody2D porte les déplacements du joueur.

5. Joueur et animations

Notions clés & Définitions

  • CharacterBody2D : Type de nœud qui gère le mouvement, les collisions et les interactions d’un personnage avec le monde.
  • AnimatedSprite2D : Nœud qui affiche plusieurs images successives afin de créer l’animation visuelle d’un personnage.

Points essentiels

  • Pour créer une animation depuis une sprite sheet, on règle la grille pour isoler un personnage par case, sélectionne les images dans leur ordre de lecture puis les ajoute à l’animation.

  • Le personnage reçoit une CollisionShape2D dont la forme et la taille sont ajustées à son apparence.

  • L’animation idle est configurée en autoplay afin qu’elle se lance automatiquement lorsque le personnage est placé dans le jeu.

  • Les animations du héros sont :

    • Idle
    • Mort
    • Touché
    • Saut
    • Roulade
    • Course
  • La vitesse d’une animation se règle en modifiant son nombre de FPS.

6. Déplacements et script physique

Notions clés & Définitions

  • _physics_process : Fonction appelée à chaque tick du moteur physique et utilisée pour les calculs liés à la physique, comme le saut, la gravité et les collisions.

★ À maîtriser

  • Dans Godot, l’axe Y pointe vers le bas de l’écran ; une valeur négative de vitesse en Y fait donc monter le personnage.

Compléments

  • Lorsque le personnage n’est pas au sol, le script applique la gravité pour le faire retomber ; le facteur delta adapte le déplacement aux FPS du jeu et au tick du moteur physique.

📌 La condition is_on_floor vérifie que le personnage est au sol avant d’autoriser le saut déclenché par l’action de saut.

  • Le template CharacterBody2D basic movement fournit un script de déplacement qui permet au personnage de bouger et de sauter.

7. Déplacements et commandes du joueur

Notions clés & Définitions

  • Action préconfigurée : Une action préconfigurée dans l’Input Map est un nom auquel on associe une ou plusieurs touches et auquel le code peut faire référence sans dépendre directement des touches choisies.
  • move_and_slide : La fonction move_and_slide déplace le personnage en gérant automatiquement ses collisions avec le décor, notamment avec les murs et le sol.

Points essentiels

  • Quand la direction est non nulle, le personnage se déplace dans la direction correspondante ; quand elle est nulle, move_toward rapproche progressivement sa vitesse horizontale de 0.

📌 La condition « être au sol » limite le saut au personnage posé au sol et doit être modifiée pour permettre les doubles ou triples sauts.

  • La méthode de récupération de l’axe renvoie −1 quand le joueur appuie à gauche, 1 quand il appuie à droite et 0 quand il n’appuie sur aucune de ces directions.

Astuce mémo

Une action abstrait les touches ; une touche codée en dur lie le code au contrôle choisi.

8. Animations du personnage

★ À maîtriser

📌 Quand la direction est supérieure à zéro, le personnage regarde à droite sans retournement horizontal ; quand il part à gauche, son animation est retournée horizontalement avec flip_h.

📌 Le personnage joue l’animation idle s’il est au sol et immobile, l’animation de course s’il est au sol et se déplace, et l’animation de saut s’il n’est pas au sol.

Compléments

  • La référence au nœud AnimatedSprite2D est créée et renseignée au moment où Godot exécute la fonction _ready lorsque la variable est précédée de @onready.

9. Roulade et gestion du temps

★ À maîtriser

  • Pendant la roulade, le jeu décrémente roll_timer du delta à chaque appel de _physics_process, arrête la roulade lorsque le timer devient inférieur à zéro, applique la vitesse selon l’orientation du personnage et lance l’animation de roulade.

📌 La roulade se déclenche lorsque le joueur appuie sur l’action dédiée, est au sol et n’est pas déjà en train de rouler.

Compléments

📌 La condition « ne pas être en roulade » empêche les mouvements classiques et leurs animations de remplacer ceux de la roulade pendant qu’elle est active.

📌 La constante roll_speed définit la vitesse de roulade, roll_duration sa durée, is_rolling indique si la roulade est en cours et roll_timer en mesure le temps restant.

  • Dans l’exemple, roll_duration vaut 0,25 seconde.

  • Dans l’exemple, l’action « roll » est associée à la touche W, choisie selon le clavier utilisé.

10. Objet à attraper et lancer

★ À maîtriser

  • Quand le joueur appuie sur pick à proximité d’un objet, le script vérifie que le corps détecté est le joueur et que can_pick l’autorise, marque l’objet comme pris, désactive la possibilité d’en prendre un autre et place l’objet sur le marqueur du joueur.

📌 Pour que l’objet entre en collision avec le décor sans bloquer le joueur, son corps rigide utilise le layer 3 et le masque 2, tandis que le masque du joueur ne doit pas inclure le layer 3.

📌 Le collisionneur du corps rigide sert aux collisions physiques avec le décor, tandis que l’Area2D détecte la proximité du joueur pour permettre l’interaction avec l’objet.

Compléments

  • Pour lancer l’objet, le script réinitialise son état physique, applique une force horizontale de 50 multipliée par la direction du joueur et une force verticale de −200, puis désactive le signal de lancement pour éviter de répéter l’appel.

📌 Après un drop ou un throw, le script réinitialise l’état de prise et rétablit can_pick afin que le joueur puisse attraper un autre objet.

  • Les actions configurées pour l’interaction avec l’objet sont pick pour l’attraper, drop pour le lâcher et throw pour le lancer ; l’exemple associe Q à pick, S à drop et D à throw.

  • La configuration proposée place le joueur sur le layer 1, le décor sur le layer 2 et l’objet sur le layer 3 ; le masque du joueur cible le décor et l’Area2D détecte l’entrée du joueur dans sa zone.

Astuce mémo

Approcher, attraper, lâcher ou lancer.

11. Scène d’interface utilisateur

Notions clés & Définitions

  • CanvasLayer : Un CanvasLayer est un type de nœud qui permet d’afficher l’interface indépendamment de la caméra.

Points essentiels

  • La scène d’interface présentée contient les éléments suivants : un nœud Control, un Sprite2D pour le cœur, un label life pour le nombre de vies, un label game_status pour le message de victoire ou de défaite, un bouton restart_button pour redémarrer la partie

12. Interface et gestion des points de vie

★ À maîtriser

  • 🔄 Lorsqu’une fléchette touche le joueur, le script :

    1. vérifie qu’il n’est pas déjà mort
    2. lui retire un point de vie
    3. actualise l’interface
    4. active l’état blessé et son timer
    5. lance l’animation de blessure
    6. vérifie si sa vie atteint zéro
  • Quand les points de vie atteignent zéro, le joueur est marqué comme mort, sa vitesse est supprimée, l’animation de mort est lancée et l’écran de défaite est affiché.

📌 Si le joueur est mort, les fonctions de contrôle interrompent leur exécution afin qu’il ne puisse plus se déplacer, sauter ou faire une roulade.

  • Dans Godot, les éléments game status et restart button sont masqués au départ afin de ne s’afficher qu’à la victoire ou à la défaite.

  • La méthode set life affiche le nombre de vies restantes, tandis que les méthodes de victoire et de défaite affichent le statut correspondant et rendent visible le bouton restart.

  • Le joueur commence avec un nombre de points de vie égal à max health, dont la valeur présentée est 10 et qui peut être modifiée, par exemple à 20.

  • La durée d’invincibilité après un coup est réglée par défaut à 0,15 seconde.

Compléments

  • Le redémarrage recharge la scène actuelle du jeu.

📌 Le signal pressed du bouton restart doit être connecté à sa méthode de script pour que l’action de redémarrage soit déclenchée.

  • Le script attaché au CanvasLayer récupère les références au label des vies, au statut du jeu et au bouton restart.

  • La scène UI est ajoutée à la scène game au-dessus de TileMap Background Layer pour afficher l’interface par-dessus le jeu.

  • Après un coup, le joueur est marqué comme blessé, son timer d’invincibilité reçoit la valeur de heat duration et le timer diminue avec delta jusqu’à zéro.

Astuce mémo

Vie à zéro → mort et écran Game Over

13. Fléchettes et système de spawn

★ À maîtriser

  • À chaque frame, le script supprime la fléchette si elle sort de l’écran ; sinon, il avance sa position selon sa direction, sa vitesse et delta.

  • 🔄 À chaque expiration du timer, le spawner :

    1. instancie une fléchette
    2. récupère le joueur
    3. choisit aléatoirement un côté d’apparition
    4. ajoute la fléchette à la scène en cours

📌 Lorsque la fléchette entre en collision avec un objet nommé Player, elle appelle hit by arrow sur le joueur puis se supprime.

📌 Le signal timeout du timer appelle la méthode de spawn, et la propriété Autostart doit être activée pour que le timer se déclenche sans démarrage manuel.

  • Le spawner choisit entre deux côtés : une fléchette arrive de la droite et se déplace vers la gauche, ou elle apparaît en haut et se déplace vers le bas.

Compléments

📌 Le signal body entered de l’Area2D de la fléchette doit être connecté à sa méthode de collision pour que celle-ci soit appelée.

  • La scène d’une fléchette utilise un Area2D, un CollisionShape2D de forme rectangulaire et un Sprite2D pour son apparence.

  • La vitesse de la fléchette est une variable exportée réglée à 150, ce qui permet de la modifier dans l’inspecteur de Godot.

  • La direction initiale de la fléchette est Vector2.Left, soit une direction vers la gauche.

  • Le spawner récupère une référence à la scène de fléchette, au timer spawn timer et à la taille de l’écran.

  • Le wait time du timer détermine l’intervalle entre les apparitions de fléchettes ; une valeur de 0,5 seconde est choisie dans l’exemple.

  • Pour choisir le côté, le spawner utilise un nombre entier aléatoire modulo 2, qui produit 0 ou 1 avec une chance sur deux pour chaque résultat.

  • Pour une fléchette venant de la droite, un tirage aléatoire détermine si elle vise le joueur ou si sa position verticale est choisie dans la partie supérieure de l’écran.

  • La fonction clamp limite la position de la fléchette afin qu’elle ne sorte pas excessivement de l’écran.

Astuce mémo

Timer → création → direction → collision

14. Déclenchement de la victoire

★ À maîtriser

  • Lorsque le donut entre dans le panier, le script désactive les fonctions régulières du joueur pour empêcher ses contrôles, puis affiche l’écran de victoire.

📌 La méthode de collision de la win zone vérifie que l’objet entrant porte le nom Swable Object, puis déclenche les actions de victoire.

  • Dans la configuration décrite, le donut se trouve sur le layer 3 et la win zone est placée sur le layer 4 avec un masque autorisant les interactions avec le layer 3.

Compléments

📌 Le signal body entered de la win zone doit être connecté à sa méthode de collision pour détecter l’objet entrant.

  • La win zone est une scène Area2D dotée d’un CollisionShape2D rectangulaire et de sprites représentant un panier et un drapeau.

Astuce mémo

Donut dans le panier → victoire

15. Export du jeu

★ À maîtriser

  • Pour préparer l’export, il faut installer les modèles d’export via Editor puis Manage Export Templates et Download and Install.

  • 🔄 Pour exporter sur Mac, : activer Advanced Settings dans les paramètres du projet, activer le réglage d’importation ETC, enregistrer et redémarrer Godot, renseigner un Bundle Identifier, exporter le projet

Compléments

  • L’option Embed PCK permet de regrouper les fichiers sources du projet dans un seul exécutable lors de l’export Windows.

Teste tes connaissances

Teste tes connaissances sur Créer un jeu 2D avec Godot avec 40 questions à choix multiples et corrections détaillées.

1. Vous téléchargez la version standard de Godot sous forme de fichier ZIP. Quelle démarche permet ensuite de lancer le moteur ?

2. Dans le gestionnaire de projets, une débutante veut créer un projet nommé « Aventure ». Quelle suite d’actions doit-elle effectuer ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Créer un jeu 2D avec Godot avec 94 flashcards interactives.

Comment lancer Godot après avoir téléchargé sa version standard ?

Décompresser le fichier ZIP puis lancer l’exécutable, sans installation supplémentaire.

Quelles actions permettent de créer un projet Godot ?

Cliquer sur Create, nommer le projet, puis cliquer de nouveau sur Create.

Quels dossiers crée-t-on dans le FileSystem pour organiser un projet Godot ?

Les dossiers asset, scripts et scène.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches