Lehrerfortbildung zur Game-Engine Godot

Am Montag, den 06.03.2023, findet von 08:00 – 16:00 Uhr eine Lehrerfortbildung zur Game-Engine Godot im InfoLab statt.

Asset Packs

CoderDojo-Spezial vom 17.12.2022

Zweitägiger Kurs des CoderDojo Saar

Protokoll der Fortbildung

Download des ganzen Godot-Projekts:

Neues Projekt anlegen

  1. Godot starten
  2. Sprache einstellen, z.B. Deutsch
  3. Neues Projekt im neuen Ordner starten
  4. Projekteinstellungen von quer auch Hochkant breit 600, hoch 1024 px
  5. Ansicht auf ‚2d“

Asset Pack herunterladen und installieren

  1. Asset Pack herunterladen (ohne Bezahlung)
  2. Zip entpacken
  3. Entpacktes Verzeichnis zum Dateisystem des Projekts hinzufügen (rechter Mausklick unten links)
  4. Benötig: Desert/backgrounds/desert-background.png, spritesheets/ ..
  5. „Import“, Filter ausstellen, weil Pixel zu sehen sein sollen: Flags -> Filter (nicht An)

Hintergrund hinzufügen

  1. Background Bild per Drag and Drop in die Szene ziehen
  2. Hintergrund in der Größe auf den blauen Rahmen der 2D-Ansicht ziehen
  3. Szene speichern und benennen

Kamera hinzufügen

  1. Kamera hinzufügen
  2. + Knopf
  3. nach „Camera“ suchen
  4. Fehlt: Wurzelknoten
  5. + Knopf: Node 2D hinzufügen
  6. Rechter Mausklick auf Node2D: Als Szenenwurzel festlegen
  7. Kamera parallel zum Hintergrund legen
  8. Alles um (0,0) zentrieren
  9. Kamera anklicken
  10. FYI: Dokumentation über rechten Mausklick z.B. zur Kamera
  11. Kamera und Hintergrund anklicken und rechts im Objekt-Inspektor bei „Transform“ auf Reset klicken
  12. Kamera anklicken, Objekt-Inspektor, Current „An“

Erster Test

  1. Test von Szene und Kamera: Play-Knopf, Szene auswählen (ist nur eine), Szene speichern, DEBUG läuft
  2. Ausgabe unter dem Fenster mit Fehlermeldungen. Das sind keine Fehler des Programms. Es liegen im Ordner Dateien, die nicht benötigt werden, z.B. wegen MacOSX-Ordner.

Spielfigur hinzufügen

  1. Spieler hinzufügen
  2. Neue Szene -> Anderes Node -> KinematicBody2D (bei Godot 4.0 CharacterBody)
  3. KinematicBody auswählen -> + Knopf -> AnimatedSprite hinzufügen
  4. AnimatedSprite auswählen -> Objekt Inspector
  5. Neues Fenster unter der Szene
  6. Waben-Knopf
  7. ship.png auswählen
  8. Horizontal 5, Vertikal 2
  9. Die beiden mittleren Bilder auswählen
  10. 2 Frames hinzufügen
  11. Animated Sprite auswählen
  12. Playing im Objekt Inspector anklicken (andere Position des Knopfes in Godot 4.0)

Collider für Player festlegen

  1. KinematicBody2D/CharacterBody auswählen und umbenennen: Player
  2. Rechtsklick auf Player -> Node hier anhängen
  3. CollisionShape 2d hinzufügen
  4. CollisionShape2D auswählen -> ObjektInspektor -> Shape [leer] -> Neues Rectangle Shape (oder andere Form)
  5. Größe anpassen
  6. Anpassung: Objekt im Baum anders anordnen. Dann ist das Objekt über der blauen Collider-Box zu sehen

Erste Programmierung (Pfeiltastensteuerung)

  1. Player auswählen
  2. Skript hinzufügen
  3. Alle Funktionen, die die Engine aufruft, beginnen mit _ (Unterstrich)
  4. Kommetar entfernen (Zeilen 16, 17): func _process(delta): pass
  5. ui_left = Pfeiltaste nach links
  6. Zeilen kopieren, rechts für links schreiben und speed statt -speed

Player.gd (Zeile 12 für Godot 4.0)

Spieler hinzufügen

  1. Zu Main wechseln
  2. Node2D auswählen
  3. Drag and Drop mit Player.tscn
  4. Spieler vergrößern: Player im Objektbaum auswählen -> Objekt Inspektor -> Transform -> Scale x 3, y 3

Spieler fliegt nicht mehr aus dem Spielfeld

Zeile 19+23 hinzugefügt. Zeilen 20+24 weiter eingerückt (Player.gd)
Alternativeschreibweise (Zeile 22 in Player.gd)

Schuss hinzufügen

  1. Neue Szene hinzufügen
  2. KinematicBody2D hinzufügen
  3. AnimatedSprite hinzufügen
  4. Sprites laden
  5. 2 horizontal, 2 vertikal
  6. 2 Frames hinzufügen
  7. Playing im Objektinspektor anklicken
  8. CollisionShape hinzufügen, CapsuleShape auswählen
  9. KinematicBody2D umbenennen in Schuss

Schuss programmieren

  1. Skript hinzufügen
  2. Zeile 4: Animation starten (Godot 4.0)
  3. Zeilen 6+7: Wenn ein Schuss erscheint, fliegt er nach oben
Schuss.gd

Schuss hinzufügen

  1. Projekt -> Projekteinstellungen -> Eingabe-Zuordnung
  2. Aktion „schuss“ hinzufügen
  3. Aktion bei „schuss“ hinzufügen „+ Knopf“
  4. Space hängt an „schuss“
  5. Fenster schließen
  6. Zu Player.gd wechseln
  7. Programmierung ab Zeile 25
Player.gd

Godot 4.0: schussSzene.instantiate() statt schussSzene.instance() (Zeile 28)

Alternative Schussinstantierung

Gegner hinzufügen

  1. Neue Szene
  2. KinematicBody hinzufügen
  3. AnimatedSprite hinzufügen
  4. Sprite auswählen: AnimatedBig
  5. vertical 2, horizontal 2
  6. 2 Frames hinzufügen
  7. Skript hinzufügen, Vorlage empty
  8. in _ready die Animation abspielen
  9. Node2D hinzufügen, kann umbenannt werden „Enemies“
  10. ‚Enemies“ den Feind hinzufügen

Mehr Feinde zufällig erzeugen

  1. Neues Objekt „Timer“ erzeugen
  2. Timer mit Main-Knoten verbinden
  3. neue Funktion entsteht: func _on_Timer_timeout()
  4. alles aus _ready (bis auf rng.randomize()) in die neue Funktion verschieben

Gegner abschießen

  1. Schuss.gd
  2. Rückgabewert von move_and_collide() in Variable merken

Ebenen

Player auf Ebene 1
Enemy auf Ebene 2
Schuss auf Ebene 1 und 2

Auch den Schuss bei Treffer entfernen

  1. Skript Schuss.gd
  2. Zeile 10 ergänzen

Explosion bei Treffer

  1. Szene hinzufügen
  2. AnimatedSprite hinzufügen
  3. in Explosion umbenennen
  4. Die Funktion on_Animation_finished mit sich selbst verbinden: self.queue_free()

Objekte löschen, wenn sie den sichtbaren Bereich verlassen

  1. Knoten „Visible on Screen Notifier“ hinzufügen
  2. „on screen exited“ hinzufügen
  3. queue_free()