|
@@ -5,64 +5,52 @@ Faire un jeu avec le Godot Engine
|
|
|
Orga
|
|
|
----
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
|
|
|
- Laisser les parties son à Nomys
|
|
|
- Nomys sera plus dispo à partir de mercredi
|
|
|
- Jovial fonce sur le guide le plus possible
|
|
|
- Ajustements sur le jeu dans un second temps
|
|
|
|
|
|
-\
|
|
|
|
|
|
Le jeu
|
|
|
------
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
Le dépôt git :
|
|
|
-<https://gogs.jovian-hersemeule.eu/DricomDragon/RaquetteFracassante>\
|
|
|
-\
|
|
|
+<https://gogs.jovian-hersemeule.eu/DricomDragon/RaquetteFracassante>
|
|
|
|
|
|
Le guide
|
|
|
--------
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
|
|
|
### Introduction
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
|
|
|
-#### Principe de l\'atelier
|
|
|
+#### Principe de l'atelier
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
|
|
|
- Projet starter.
|
|
|
- - Le projet qui servira de base à l\'atelier est un casse brique
|
|
|
- classique qui s\'appelle Raquette Fracassante.
|
|
|
+ - Le projet qui servira de base à l'atelier est un casse brique
|
|
|
+ classique qui s'appelle Raquette Fracassante.
|
|
|
- Chaque niveau doit être complété en cassant toutes les briques à
|
|
|
- l\'écran grâce à une balle qui accélère à chaque rebond. Il faut
|
|
|
+ l'écran grâce à une balle qui accélère à chaque rebond. Il faut
|
|
|
ainsi renvoyer la balle de plus en plus vite avec la raquette
|
|
|
tout en visant les briques à casser.
|
|
|
- Le jeu comporte des pouvoirs bonus qui pourront être débloqué en
|
|
|
récupérant les capsules qui tombent de certaines briques une
|
|
|
fois celles-ci détruites.
|
|
|
|
|
|
-Attention aux briques qui nécessitent d\'être frappées plusieurs fois !\
|
|
|
-\
|
|
|
+Attention aux briques qui nécessitent d'être frappées plusieurs fois !
|
|
|
+
|
|
|
Le projet sera disponible en deux versions permettant aux personnes
|
|
|
-présentes lors de l\'atelier d\'orienter leur découverte du Godot Engine
|
|
|
-:\
|
|
|
+présentes lors de l'atelier d'orienter leur découverte du Godot Engine
|
|
|
+:
|
|
|
|
|
|
- Version **architecte** : Parcours conception de niveaux (le jeu est
|
|
|
complet, il faut juste ajouter de nouveaux niveaux)
|
|
|
- - Cela permet de découvrir l\'interface du Godot Engine en douceur
|
|
|
- et d\'utiliser des fonctionnalités simples. On pourra produire
|
|
|
+ - Cela permet de découvrir l'interface du Godot Engine en douceur
|
|
|
+ et d'utiliser des fonctionnalités simples. On pourra produire
|
|
|
en peu de temps un résultat testable sur le champs et apprendre
|
|
|
- ainsi en s\'amusant.
|
|
|
+ ainsi en s'amusant.
|
|
|
- Version **artisan** : Parcours construction du jeu (le jeu contient
|
|
|
uniquement des fonctionnalités minimales et tout le reste est à
|
|
|
faire soi-même)
|
|
@@ -70,118 +58,118 @@ présentes lors de l\'atelier d\'orienter leur découverte du Godot Engine
|
|
|
(interface, visuels, audio ou gameplay) et appréhender la façon
|
|
|
dont les fonctionnalités dépendent les unes des autres. Par
|
|
|
exemple pour ajouter un écran de victoire ou de défaite (élément
|
|
|
- d\'interface), il faut d\'abord que le jeu sache quand est-ce
|
|
|
- qu\'on gagne ou qu\'on perd (fonctionnalité de gameplay).
|
|
|
- - Vous êtes libres de faire les étapes dans l\'ordre que vous
|
|
|
+ d\'interface), il faut d'abord que le jeu sache quand est-ce
|
|
|
+ qu'on gagne ou qu'on perd (fonctionnalité de gameplay).
|
|
|
+ - Vous êtes libres de faire les étapes dans l'ordre que vous
|
|
|
voulez, mais attention aux dépendances ! Repérez vous grâce à la
|
|
|
carte fournie.
|
|
|
|
|
|
-\
|
|
|
+
|
|
|
Image : carte des dépendances
|
|
|

|
|
|
-\
|
|
|
+
|
|
|
Note : Afin que le chacun et chacune puisse ici s\'y retrouver, nous
|
|
|
présenteront les fonctionnalités par domaine et par niveau de
|
|
|
difficulté. Ainsi même les débutants vont pouvoir ajouter des
|
|
|
-fonctionnalités qui les intéressent à notre casse-brique minimaliste.\
|
|
|
-\
|
|
|
+fonctionnalités qui les intéressent à notre casse-brique minimaliste.
|
|
|
+
|
|
|
|
|
|
##### Décommenter le code
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
Il y aura du code déjà présent à décommenter dans les scripts. Essayez
|
|
|
-de comprendre chaque bout de code vous-même.\
|
|
|
-\
|
|
|
-Les commentaires en Godot commencent avec \#. Raccourci pour décommenter
|
|
|
-les lignes selectionnées : Ctrl + K.\
|
|
|
-\
|
|
|
-Note : les commentaires doubles \#\# sont des commentaires spéciaux dits
|
|
|
+de comprendre chaque bout de code vous-même.
|
|
|
+
|
|
|
+Les commentaires en Godot commencent avec #. Raccourci pour décommenter
|
|
|
+les lignes selectionnées : Ctrl + K.
|
|
|
+
|
|
|
+Note : les commentaires doubles ## sont des commentaires spéciaux dits
|
|
|
de documentation (docstrings). Il ne faut pas les décommenter ! Le texte
|
|
|
-associé est visible dans l\'éditeur.\
|
|
|
-\
|
|
|
+associé est visible dans l'éditeur.
|
|
|
+
|
|
|
|
|
|
#### Description de Godot
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- Def moteur de jeu
|
|
|
- Un **moteur de jeu** est un ensemble de composants logiciels qui
|
|
|
effectuent des calculs de géométrie et de physique utilisés dans
|
|
|
- les jeux vidéo. L\'ensemble forme un simulateur en temps réel
|
|
|
+ les jeux vidéo. L'ensemble forme un simulateur en temps réel
|
|
|
souple qui reproduit les caractéristiques des mondes imaginaires
|
|
|
dans lesquels se déroulent les jeux. Le but visé par un moteur
|
|
|
de jeu est de permettre à une équipe de développement de se
|
|
|
concentrer sur le contenu et le déroulement du jeu plutôt que la
|
|
|
résolution de problèmes informatiques. (Wikipédia)
|
|
|
|
|
|
-\
|
|
|
+
|
|
|
|
|
|
- Avantages de Godot
|
|
|
- Rapidité et facilités de création et de prototypage (idéal pour
|
|
|
faire des game jam),
|
|
|
- - Beaucoup d\'outils accessibles sans code,
|
|
|
+ - Beaucoup d'outils accessibles sans code,
|
|
|
- GDScript (langage interne) facile à lire pour les débutants et
|
|
|
débutantes,
|
|
|
- Possibilité de coder en C++ pour les développeureuses (ou
|
|
|
- d\'autres languages via des addons),
|
|
|
- - Bibliothèque d\'addons disponible dans le moteur directement,
|
|
|
+ d'autres languages via des addons),
|
|
|
+ - Bibliothèque d'addons disponible dans le moteur directement,
|
|
|
- Aide accessible directement dans le moteur,
|
|
|
- - Espace de travail modulaire pour s\'adapter aux préférences de
|
|
|
+ - Espace de travail modulaire pour s'adapter aux préférences de
|
|
|
chacun et chacune,
|
|
|
- Moteur complet au niveau des fonctionnalités de base (2D, 3D,
|
|
|
réseau, audio, UI).
|
|
|
-- et inconvénients\...
|
|
|
+- et inconvénients...
|
|
|
- Pas encore au niveau sur certains aspects très pointus (3D et
|
|
|
gestion audio notamment).
|
|
|
|
|
|
-\
|
|
|
+
|
|
|
|
|
|
#### Éditeur Godot
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
|
|
|
#### Concepts Godot
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- Nœuds (débutant)
|
|
|
- Les nœuds sont les briques de construction de bases de Godot.
|
|
|
- Ils sont agencés sous forme d\'arbres dont un nœud est la racine
|
|
|
+ Ils sont agencés sous forme d'arbres dont un nœud est la racine
|
|
|
dont part ensuite des nœuds enfants, des nœuds petits-enfants et
|
|
|
ainsi de suite. Chaque une arborescence de nœuds constitue un
|
|
|
- \*\*scène\*\*. Les scènes peuvent avoir un nombre variable de
|
|
|
+ **scène**. Les scènes peuvent avoir un nombre variable de
|
|
|
nœuds suivant les besoins.
|
|
|
- Les scènes vont être ce qui va être sauvegarder dans les
|
|
|
fichiers du projet sous la forme de fichiers terminant par
|
|
|
- l\'extension \".tscn\". Enfin, les scènes peuvent être appeller
|
|
|
- les unes dans les autres, on dit alors qu\'elle est instanciée
|
|
|
+ l'extension ".tscn". Enfin, les scènes peuvent être appeller
|
|
|
+ les unes dans les autres, on dit alors qu'elle est instanciée
|
|
|
- Scripts (avancé)
|
|
|
- Permet de décrire les règles et comportements que doivent suivre
|
|
|
les nœuds. Par exemple déplacer la balle à chaque image, éclater
|
|
|
- une brique quand elle n\'a plus de vie, ou changer de musique au
|
|
|
- chargement d\'un niveau. Les scripts sont écrits via l\'éditeur
|
|
|
+ une brique quand elle n'a plus de vie, ou changer de musique au
|
|
|
+ chargement d'un niveau. Les scripts sont écrits via l'éditeur
|
|
|
de code intégré, et permettent de décrire comment réagir aux
|
|
|
- événements du jeu. Godot étant un moteur riche, il n\'y a pas
|
|
|
- besoin d\'écrire beaucoup de texte pour faire fonctionner notre
|
|
|
- jeu. Pour qu\'un script soit interprété par Godot, il faut
|
|
|
- l\'attacher à un nœud, via l\'éditeur.
|
|
|
+ événements du jeu. Godot étant un moteur riche, il n'y a pas
|
|
|
+ besoin d'écrire beaucoup de texte pour faire fonctionner notre
|
|
|
+ jeu. Pour qu'un script soit interprété par Godot, il faut
|
|
|
+ l'attacher à un nœud, via l'éditeur.
|
|
|
- Definition **variable** : valeur qui peut changer en cours du
|
|
|
temps, que nous pouvons lire ou écrire depuis un script via son
|
|
|
- nom (exemple : boolean a\_perdu\_vie ; Vector2
|
|
|
- direction\_rebond).
|
|
|
- - Une variable attachée au nœud s\'appelle **propriété** ou
|
|
|
+ nom (exemple : boolean a_perdu_vie ; Vector2
|
|
|
+ direction_rebond).
|
|
|
+ - Une variable attachée au nœud s'appelle **propriété** ou
|
|
|
attribut (exemple : Vector2 position pour un Node2D).
|
|
|
- - Une variable qui est une entrée d\'une fonction s\'appelle
|
|
|
+ - Une variable qui est une entrée d'une fonction s'appelle
|
|
|
un **argument**
|
|
|
- Definition **fonction** : bout de script associé à un nom qui
|
|
|
- est exécuté quand on l\'appelle.
|
|
|
- - Une fonction attachée à un nœud s\'appelle aussi **méthode**
|
|
|
- - Le nom d\'une fonction doit contenir un verbe, car appeler
|
|
|
- une fonction c\'est faire quelque chose.
|
|
|
+ est exécuté quand on l'appelle.
|
|
|
+ - Une fonction attachée à un nœud s'appelle aussi **méthode**
|
|
|
+ - Le nom d'une fonction doit contenir un verbe, car appeler
|
|
|
+ une fonction c'est faire quelque chose.
|
|
|
- Pas à pas :
|
|
|
<https://docs.godotengine.org/fr/4.x/tutorials/scripting/gdscript/gdscript_basics.html>
|
|
|
- Bonnes pratiques
|
|
@@ -191,30 +179,30 @@ associé est visible dans l\'éditeur.\
|
|
|
<https://docs.godotengine.org/fr/4.x/tutorials/scripting/gdscript/static_typing.html>
|
|
|
- Héritage
|
|
|
- Des scripts internes existent dans Godot, afin de coder les
|
|
|
- comportements des nœuds existants. Au début d\'un script, on
|
|
|
+ comportements des nœuds existants. Au début d'un script, on
|
|
|
désigne de quel autre script on souhaite hériter, via le
|
|
|
- mot-clef \`extends\`. Le cas le plus commun est d\'hériter un
|
|
|
- script interne à Godot, mais on peut aussi hériter d\'un de nos
|
|
|
- scripts déjà existants. Lorsque nous héritons d\'un script, nous
|
|
|
+ mot-clef `extends`. Le cas le plus commun est d'hériter un
|
|
|
+ script interne à Godot, mais on peut aussi hériter d'un de nos
|
|
|
+ scripts déjà existants. Lorsque nous héritons d'un script, nous
|
|
|
pouvons appeler toutes ses méthodes et accéder à ses propriétés.
|
|
|
Par exemple, un script qui hérite de Node2D peut modifier la
|
|
|
- propriété position, et ainsi déplacer l\'objet !
|
|
|
- - Classe : une classe est un script qui a nom : \`class\_name
|
|
|
- Balle\`. Quand on écrit un script, on ne peut hériter que
|
|
|
- d\'une classe. Heureusement, tous les scripts internes de
|
|
|
+ propriété position, et ainsi déplacer l'objet !
|
|
|
+ - Classe : une classe est un script qui a nom : `class_name
|
|
|
+ Balle`. Quand on écrit un script, on ne peut hériter que
|
|
|
+ d'une classe. Heureusement, tous les scripts internes de
|
|
|
Godot sont aussi des classes. :-)
|
|
|
- - Bonjour grand-père : l\'héritage peut être cumulatif. Si
|
|
|
+ - Bonjour grand-père : l'héritage peut être cumulatif. Si
|
|
|
vous héritez de Sprite2D, qui hérite lui-même de Node2D,
|
|
|
votre script possède à la fois les propriétés de Sprite2D
|
|
|
(comme texture par exemple) et de Node2D (position).
|
|
|
- Signaux (médium)
|
|
|
|
|
|
Mécanique idéale pour faire communiquer des nœuds entre eux. Les signaux
|
|
|
-permettent d\'envoyer des messages à zéro, un ou plusieurs destinataires
|
|
|
-en même temps. À chaque émission de signal correspond l\'exécution
|
|
|
-d\'une fonction pour tous les nœuds connectés à ce signal. Les nœuds de
|
|
|
+permettent d'envoyer des messages à zéro, un ou plusieurs destinataires
|
|
|
+en même temps. À chaque émission de signal correspond l'exécution
|
|
|
+d'une fonction pour tous les nœuds connectés à ce signal. Les nœuds de
|
|
|
la bibliothèque offrent des signaux et des fonctions déjà utilisables,
|
|
|
-et il est possible d\'en créer dans nos scripts.\
|
|
|
+et il est possible d'en créer dans nos scripts.
|
|
|
|
|
|
- - Pas à pas :
|
|
|
<https://docs.godotengine.org/fr/4.x/getting_started/step_by_step/signals.html>
|
|
@@ -224,13 +212,13 @@ et il est possible d\'en créer dans nos scripts.\
|
|
|
<https://docs.godotengine.org/fr/4.x/classes/class_signal.html>
|
|
|
|
|
|
- Espace
|
|
|
- - Les objets 2D sont positionnés dans l\'espace via deux
|
|
|
+ - Les objets 2D sont positionnés dans l'espace via deux
|
|
|
coordonnés : x et y. Très souvent utilisées ensemble, ces
|
|
|
coordonnées sont regroupées dans un même objet : un vecteur.
|
|
|
- Dans Godot, les coordonnées sont en pixel (en 2D). Ici, l\'écran
|
|
|
+ Dans Godot, les coordonnées sont en pixel (en 2D). Ici, l'écran
|
|
|
est un carré de 420 pixels de côté. Si un nœud est positionné en
|
|
|
- x=0, y=0, il sera en haut à gauche. S\'il est en x=210, y=420,
|
|
|
- il sera au milieu tout en bas de l\'écran.
|
|
|
+ x=0, y=0, il sera en haut à gauche. S'il est en x=210, y=420,
|
|
|
+ il sera au milieu tout en bas de l'écran.
|
|
|
- Image : voir l'illustration des axes de l'écran
|
|
|
- Comprendre les vecteurs :
|
|
|
<https://docs.godotengine.org/fr/4.x/tutorials/math/vector_math.html>
|
|
@@ -242,24 +230,24 @@ et il est possible d\'en créer dans nos scripts.\
|
|
|
|
|
|
### Étapes
|
|
|
|
|
|
-#### Lancer le jeu depuis l\'éditeur
|
|
|
+#### Lancer le jeu depuis l'éditeur
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
|
|
|
- Actions
|
|
|
- - Démarrer l\'exécutable de Godot.
|
|
|
+ - Démarrer l'exécutable de Godot.
|
|
|
|
|
|
-La fenêtre de gestion des projets s\'ouvre (importation, création de
|
|
|
-nouveau projet, lancement de l\'éditeur, etc).\
|
|
|
+La fenêtre de gestion des projets s'ouvre (importation, création de
|
|
|
+nouveau projet, lancement de l'éditeur, etc).
|
|
|
|
|
|
-- - Importer l\'un des projets de casse-brique fournis.
|
|
|
+- - Importer l'un des projets de casse-brique fournis.
|
|
|
|
|
|
-L\'éditeur s\'ouvre automatiquement, sinon sélectionner le projet dans
|
|
|
-la liste et cliquer sur \"Éditer\".\
|
|
|
+L'éditeur s'ouvre automatiquement, sinon sélectionner le projet dans
|
|
|
+la liste et cliquer sur "Éditer".
|
|
|
|
|
|
-- - Pour démarrer le jeu via l\'éditeur, cliquer sur le bouton
|
|
|
- \"lecture\" situé en haut à droite de l\'écran (à côté du bouton
|
|
|
+- - Pour démarrer le jeu via l'éditeur, cliquer sur le bouton
|
|
|
+ "lecture" situé en haut à droite de l'écran (à côté du bouton
|
|
|
\"stop\" notamment).
|
|
|
|
|
|
Une nouvelle fenêtre s\'ouvre et le jeu démarre.\
|
|
@@ -538,19 +526,19 @@ Niv. 3\
|
|
|
- Réf AnimatedSprite2D\#flip\_v :
|
|
|
<https://docs.godotengine.org/fr/4.x/classes/class_sprite2d.html#class-sprite2d-property-flip-v>
|
|
|
|
|
|
- \
|
|
|
+
|
|
|
Note pour améliorer la performance : stocker la référence vers le nœud
|
|
|
dans une variable pour éviter de demander à Godot de chercher le nœud à
|
|
|
-chaque fois.\
|
|
|
-\@onready image : Sprite2D = \$Image\
|
|
|
-\
|
|
|
+chaque fois.
|
|
|
+\@onready image : Sprite2D = \$Image
|
|
|
+
|
|
|
|
|
|
##### Effet électrique
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
-Niv. 4\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
+Niv. 4
|
|
|
+
|
|
|
|
|
|
- Prérequis
|
|
|
- Pouvoir éclair
|
|
@@ -565,12 +553,12 @@ Niv. 4\
|
|
|
- Référence : AnimatedSprite2D
|
|
|
<https://docs.godotengine.org/fr/4.x/classes/class_sprite2d.html>
|
|
|
|
|
|
-\
|
|
|
+
|
|
|
|
|
|
##### Effet de récupération de pouvoir
|
|
|
|
|
|
-\
|
|
|
-\
|
|
|
+
|
|
|
+
|
|
|
Niv. 4\
|
|
|
\
|
|
|
|