Godot
Notes sur le moteur de jeu Godot.
Concepts
- Un jeu = un arbre de scènes, et chaque scène est un arbre de nœuds. Ces nœuds communiquent entre eux avec des
signals
. - Scene = un personnage, une arme, un menu, un niveau,...
.tscn
= "text scene"
- Signal = la version Godot du pattern
observer
- Script
- Attaché à un noeud
- 4 langages possibles => GDScript (recommandé), C#, et C et C++ via GDExtension. On peut utiliser différents langages dans le même projet.
- Chaque script GDScript est implicitement une classe
- Fonctions courantes
_ready()
: quand le nœud est instancié_process()
: appelée à chaque frame_unhandled_input()
: à chaque fois que le joueur appuie sur une toucheget_node()
: récupération d'un nœud (raccourci$
)
Architecture
Designer autour des scènes et non autour d'architectures abstraites :
- "We recommend dismissing architectural code patterns when making games with Godot, such as Model-View-Controller (MVC) or Entity-Relationship diagrams" => à la place imaginer les différents éléments que voit le joueur et structurer le code autour d'eux (joueur, ennemi, arme, missile, obstacle,...)
- Exemple => une ville a un pont, un personnage, et une citadelle. La citadelle hérite de la maison, qui a une chambre et une porte,...
Troubleshooting
- Pb de compat windows ? => modifier
renderer/rendering_method="gl_compatibility"
dans[rendering]
dans le fichierproject.godot
GDScript
Similaire au python
Définition d'une fonction :
func my_function(my_parameter):
var truc = 100
while [operation]:
# Do something
for [variable] in range(3):
# Do something
# Array manipulation
my_array.append(truc)
my_array.pop_front() # Pops the first value
my_array.pop_back() # Pops the last value
return