Développement de jeux avec Godot 🤖

Skip to content

Ceci est un texte traduit par une machine qui peut contenir des erreurs !

D’où viennent ces informations ?

Beaucoup de ceci n’est qu’une reformulation de la documentation officielle de Godot. Vous trouverez ci-dessous quelques liens utiles vers la documentation officielle (que je vous recommande vivement par rapport à celle-ci sur Piggy, mais si vous préférez celle-ci, n’hésitez pas à l’utiliser !)

Ressources utiles :

Qu’en est-il des graphismes, dois-je les créer moi-même ?

Non ! Vous pouvez trouver de nombreux assets gratuits ici :

Autres liens utiles :

Autres moteurs de jeu ?

Si vous préférez, vous pouvez utiliser d’autres moteurs de jeu. Des exemples d’autres moteurs de jeu sont :

Il existe beaucoup d’autres également, n’hésitez pas à chercher si vous souhaitez essayer autre chose !

Qu’est-ce que Godot ?

Godot (Prononcé Guh-doh), est un ‘Game Engine’. Pour faire simple, c’est un programme qui vous permet de créer des jeux (ou des applications classiques si vous le souhaitez). Godot peut faire la plupart des choses que peuvent faire les autres game engines, en 2D et en 3D.

Exemples de jeux créés avec Godot : Godot Showcase

Ce n’est pas seulement des jeux indépendants qui ont été créés avec Godot, Sonic Colors Ultimate a été créé avec Godot !

Comment obtenir Godot ?

Vous pouvez télécharger Godot depuis :

Téléchargez et installez simplement (ou exécutez sur steam).

Mettre en place un projet !

Lorsque vous démarrez Godot, vous obtenez cette fenêtre :

Godot Projet

Ici, on vous demande quel langage de programmation utiliser, GDScript ou C#. GDScript est très similaire à Python.

Différences entre GDScript et Python (sans couleurs) :

def hello():
    text = "Hello world!"

    print(text)
func hello():
    var text = "Hello world!"

    print(text)

Pour les variables en Python, vous n’avez besoin que d’écrire le nom de la variable. En GDScript, vous devez écrire var en premier. Pour créer des fonctions, vous écrivez func au lieu de def.

Scènes & Nœuds

L’un des concepts les plus importants dans Godot est Scènes et Nœuds. Nous pouvons commencer par les nœuds. Un nœud est un objet dans Godot, et il peut représenter n’importe quoi. Il peut s’agir de quelque chose représentant un joueur, un ennemi, un bouton dans un menu, du texte à l’écran, tout ce que vous voulez. Les scènes sont une collection de nœuds.

Voici que nous allons créer un exemple très simple.

Partie 1a - Configurer la scène “player”

En haut de la fenêtre Godot, cliquez sur le bouton “2D” pour modifier la vue en vue 2D.

Sur le côté gauche de la fenêtre, vous voyez l’interface suivante :

Create Scene

Cliquez sur le bouton “Other Node”, puis recherchez “CharacterBody2D”, sélectionnez-le et cliquez sur “Create”. Il s’agit d’un nœud utilisé pour un joueur 2D. Vous remarquerez peut-être qu’il y a un triangle d’avertissement ⚠️ à côté du nœud “CharacterBody2D”. C’est parce qu’il manque quelques éléments qu’il aimerait avoir.

Si vous faites un clic droit sur le nœud, il y a un bouton “+ Add Child Node…”. Utilisez-le pour ajouter deux nœuds, Sprite2D et CollisionShape2D. Sprite2D est utilisé pour ajouter des graphismes au joueur, tandis que le second est utilisé pour vérifier les collisions. Vous pouvez également leur donner des noms si cela vous aide à vous y retrouver. J’ai donné à mon CharacterBody2D le nom “Player”. La scène devrait maintenant ressembler à ceci :

Scene currently

Partie 1b - Corriger ⚠️ sur CollisCollisionShape2D

Le triangle d’avertissement dans ce cas est que le CollisCollisionShape2D manque de collision réelle. Vous pouvez corriger cela en cliquant sur le nœud (à gauche), puis un panneau apparaît du côté droit. Vous y trouverez une multitude d’informations sur le nœud que vous pouvez modifier. N’hésitez pas à expérimenter avec ce qui s’y trouve. Mais celui sur lequel nous allons nous concentrer est “Shape”, réglez-le sur, par exemple, RectangleShape2D. Ce n’est pas très important, nous n’utiliserons pas les collisions ici.

Partie 1c - Ajouter un Sprite, graphique

Si vous cliquez sur Sprite2D à gauche, le champ à droite apparaît, où il est écrit “Texture”. Vous pouvez y insérer une image pour le joueur. Il suffit de glisser-déposer une image dans le champ.

Voilà à quoi cela ressemblera après avoir ajouté un sprite.

Menu Sprite

Partie 2 - Ajouter des entrées, contrôler

En haut de la fenêtre, il y a un menu, “Scène - Projet - Débogage - Éditeur - Aide”. Appuyez sur “Projet” puis “Paramètres du projet”. Ici, vous obtenez un menu avec beaucoup de paramètres. Appuyez sur “Carte d’entrée”. Ici, vous pouvez configurer les touches du clavier.

  • Dans le champ “Ajouter une nouvelle action”, écrivez “left”, puis appuyez sur “Ajouter”.
  • Ajoutez ensuite “right”, “up” et “down”.
  • Ceux-ci deviennent connus sous le nom d‘“Actions”
  • Pour chaque “Action”, vous pouvez ajouter des touches en appuyant sur le bouton + à droite.

Bouton plus

  • Il suffit d’appuyer sur le clavier, puis d’appuyer sur Ajouter.
  • Ajoutez des touches pour toutes les actions.

Partie 3 - Ajouter un script pour contrôler le joueur.

Pour pouvoir ajouter de la logique de jeu, c’est-à-dire faire quelque chose avec le joueur, l’arrière-plan, ou quoi que ce soit dans le jeu, nous avons besoin d’un script. Les scripts sont du code, et peuvent être écrits dans deux langages, GDScript ou C#, GDScript est le langage par défaut.

  • Appuyez sur le nœud “CharacterBody2D” (je l’ai appelé “Player”).
  • Appuyez sur le bouton “Attach Script” (voir ci-dessous)

Attach script button

  • Ici, une fenêtre s’affiche où vous pouvez choisir le langage (choisissez GDScript) et un chemin (laissez-le simplement avec le nom par défaut, mais vous pouvez lui donner un nom), puis cliquez sur “suivant”. Ici, une fenêtre “Script” s’affiche. Il n’y a pas grand-chose ici pour commencer.

extends CharacterBody2D
# Definerer hastigheten til karakteren
# Defines the character's speed
var speed = 200

Le seul ce code dit pour l’instant est que le code doit appartenir à un nœud du type “CharacterBody2D”, qui est notre joueur.

Nous allons ajouter une fonction ici que nous allons utiliser pour manipuler le joueur :

extends CharacterBody2D

func _physics_process(delta: float) -> void:
   # return
   # retour

Processus Physique ?

_physics_process est une fonction qui est mise à jour à chaque “frame”, soit environ 60 fois par seconde (par défaut). Il existe une autre fonction qui s’appelle simplement _process, qui est mise à jour tout le long. Si vous voulez que le joueur se déplace à un rythme régulier, utilisez _physics_process.

C’est ici que nous allons ajouter le code qui déplace le joueur.

Partie 4 - Entrée de base

Dans la partie 2, vous avez ajouté des boutons d’entrée, maintenant nous allons les utiliser. Il existe un objet intégré appelé Input que nous pouvons utiliser pour vérifier si le joueur a appuyé sur ce que nous avons configuré dans “Input Map”.

Essayez d’insérer ce code dans le code _physics_process :

if Input.is_action_pressed('right'):
   # Hvis høyre tasten trykkes, sett x-hastigheten til 100
   # Si la touche droite est pressée, définir la vitesse x à 100
   velocity.x = 100

move_and_slide()

Qu’est-ce que move_and_slide() ?

move_and_slide() est une fonction intégrée dans Godot qui est utilisée lorsque nous voulons réellement déplacer ce sur quoi nous l’appliquons. Sans cela, le joueur ne se déplacerait pas.

Warning

L’espacement sur les lignes est très important, cela ressemble à ce que l’on trouve en Python.

Que se passe-t-il lorsque vous démarrez le programme en appuyant sur le bouton lecture dans la fenêtre Godot, puis en appuyant sur “right” ?

Si rien ne se passe maintenant :

  • Avez-vous pensé à configurer quelque chose dans “Input Map” ?
  • Avez-vous écrit right et non Right ? Autrement dit, ce que vous avez écrit dans le code est-il le même que le nom dans le input map ?

Tout le code jusqu’à présent
extends CharacterBody2D

func _physics_process(delta: float) -> void:
    if Input.is_action_pressed('right'):
        velocity.x = 100

    move_and_slide()

Essayons maintenant d’ajouter du code pour 'left', 'up', 'down'.

Qu’est-ce que velocity.x doit être pour left ? Et pour up et down ?

Tout le code maintenant
extends CharacterBody2D

func _physics_process(delta: float) -> void:
    if Input.is_action_pressed('right'):
        velocity.x = 100
    if Input.is_action_pressed('left'):
        velocity.x = -100
    if Input.is_action_pressed('down'):
        velocity.y = 100
    if Input.is_action_pressed('up'):
        velocity.y = -100

    move_and_slide()

Partie 5 - Corriger le code

Vous pourriez remarquer que le joueur ne s’arrête pas lorsque vous relâchez une direction. Nous pouvons corriger cela maintenant !

Avant tous les if, ajoutez une ligne qui définit la vélocité à 0. Vous pouvez le faire en écrivant velocity = Vector2()

Toutes les vitesses et directions dans Godot sont des vecteurs, il s’agit d’un concept mathématique sur lequel nous n’allons pas entrer dans le détail maintenant, mais si vous voulez en savoir plus sur ce que cela signifie, vous pouvez consulter ceci : Wikipedia vectors.

Tout le code maintenant
extends CharacterBody2D

func _physics_process(delta: float) -> void:
    velovity = Vector2()

    if Input.is_action_pressed('right'):
        velocity.x = 100
    if Input.is_action_pressed('left'):
        velocity.x = -100
    if Input.is_action_pressed('down'):
        velocity.y = 100
    if Input.is_action_pressed('up'):
        velocity.y = -100

    move_and_slide()

Lorsque vous démarrez le jeu maintenant, vous pouvez déplacer le personnage :

Par la suite, vous pouvez modifier le code pour que la vitesse ne soit pas qu’un nombre, mais puisse être stockée ailleurs.

Vous pouvez par exemple (avant la fonction) ajouter une constante qui garde la trace de la vitesse.

Toute la code à la fin avec const
extends CharacterBody2D

const SPEED = 100

func _physics_process(delta: float) -> void:
    velovity = Vector2()

    if Input.is_action_pressed('right'):
        velocity.x = SPEED
    if Input.is_action_pressed('left'):
        velocity.x = -SPEED
    if Input.is_action_pressed('down'):
        velocity.y = SPEED
    if Input.is_action_pressed('up'):
        velocity.y = -SPEED

    move_and_slide()

Partie 6 - Jouez et expérimentez par vous-même !

Si vous retournez à la première partie, Ressources Utiles, vous pouvez y trouver ce avec quoi vous pouvez continuer à jouer.

Après cela, vous pouvez essayer de créer votre propre jeu. Ce que vous créez vous appartient ! Si vous voulez créer quelque chose de complètement nouveau, faites-le ! Si vous voulez essayer d’imiter un jeu qui existe déjà, faites-le ! La meilleure façon d’apprendre est d’essayer !