Aller au contenu principal

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 touche
      • get_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 fichier project.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