Am Montag, den 06.03.2023, findet von 08:00 – 16:00 Uhr eine Lehrerfortbildung zur Game-Engine Godot im InfoLab statt.
Asset Packs
- Spaceship Shooter: ansimuz.itch.io/spaceship-shooter-environment
- Einige Inhalte auf itch.io
- Alle Inhalte auf www.kenney.nl
- Inhalte auf opengameart.org
- Einige Inhalte auf craftpix.net
- (Einige Inhalte auf assetstore.unity.com – nur eingeschränkt zu empfehlen)
- Inhalte auf freesound.org
CoderDojo-Spezial vom 17.12.2022
Zweitägiger Kurs des CoderDojo Saar
Protokoll der Fortbildung
Download des ganzen Godot-Projekts:
Neues Projekt anlegen
- Godot starten
- Sprache einstellen, z.B. Deutsch
- Neues Projekt im neuen Ordner starten
- Projekteinstellungen von quer auch Hochkant breit 600, hoch 1024 px
- Ansicht auf ‚2d“
Asset Pack herunterladen und installieren
- Asset Pack herunterladen (ohne Bezahlung)
- Zip entpacken
- Entpacktes Verzeichnis zum Dateisystem des Projekts hinzufügen (rechter Mausklick unten links)
- Benötig: Desert/backgrounds/desert-background.png, spritesheets/ ..
- „Import“, Filter ausstellen, weil Pixel zu sehen sein sollen: Flags -> Filter (nicht An)
Hintergrund hinzufügen
- Background Bild per Drag and Drop in die Szene ziehen
- Hintergrund in der Größe auf den blauen Rahmen der 2D-Ansicht ziehen
- Szene speichern und benennen
Kamera hinzufügen
- Kamera hinzufügen
- + Knopf
- nach „Camera“ suchen
- Fehlt: Wurzelknoten
- + Knopf: Node 2D hinzufügen
- Rechter Mausklick auf Node2D: Als Szenenwurzel festlegen
- Kamera parallel zum Hintergrund legen
- Alles um (0,0) zentrieren
- Kamera anklicken
- FYI: Dokumentation über rechten Mausklick z.B. zur Kamera
- Kamera und Hintergrund anklicken und rechts im Objekt-Inspektor bei „Transform“ auf Reset klicken
- Kamera anklicken, Objekt-Inspektor, Current „An“
Erster Test
- Test von Szene und Kamera: Play-Knopf, Szene auswählen (ist nur eine), Szene speichern, DEBUG läuft
- 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
- Spieler hinzufügen
- Neue Szene -> Anderes Node -> KinematicBody2D (bei Godot 4.0 CharacterBody)
- KinematicBody auswählen -> + Knopf -> AnimatedSprite hinzufügen
- AnimatedSprite auswählen -> Objekt Inspector
- Neues Fenster unter der Szene
- Waben-Knopf
- ship.png auswählen
- Horizontal 5, Vertikal 2
- Die beiden mittleren Bilder auswählen
- 2 Frames hinzufügen
- Animated Sprite auswählen
- Playing im Objekt Inspector anklicken (andere Position des Knopfes in Godot 4.0)
Collider für Player festlegen
- KinematicBody2D/CharacterBody auswählen und umbenennen: Player
- Rechtsklick auf Player -> Node hier anhängen
- CollisionShape 2d hinzufügen
- CollisionShape2D auswählen -> ObjektInspektor -> Shape [leer] -> Neues Rectangle Shape (oder andere Form)
- Größe anpassen
- Anpassung: Objekt im Baum anders anordnen. Dann ist das Objekt über der blauen Collider-Box zu sehen
Erste Programmierung (Pfeiltastensteuerung)
- Player auswählen
- Skript hinzufügen
- Alle Funktionen, die die Engine aufruft, beginnen mit _ (Unterstrich)
- Kommetar entfernen (Zeilen 16, 17): func _process(delta): pass
- ui_left = Pfeiltaste nach links
- Zeilen kopieren, rechts für links schreiben und speed statt -speed
Spieler hinzufügen
- Zu Main wechseln
- Node2D auswählen
- Drag and Drop mit Player.tscn
- Spieler vergrößern: Player im Objektbaum auswählen -> Objekt Inspektor -> Transform -> Scale x 3, y 3
Spieler fliegt nicht mehr aus dem Spielfeld
Schuss hinzufügen
- Neue Szene hinzufügen
- KinematicBody2D hinzufügen
- AnimatedSprite hinzufügen
- Sprites laden
- 2 horizontal, 2 vertikal
- 2 Frames hinzufügen
- Playing im Objektinspektor anklicken
- CollisionShape hinzufügen, CapsuleShape auswählen
- KinematicBody2D umbenennen in Schuss
Schuss programmieren
- Skript hinzufügen
- Zeile 4: Animation starten (Godot 4.0)
- Zeilen 6+7: Wenn ein Schuss erscheint, fliegt er nach oben
Schuss hinzufügen
- Projekt -> Projekteinstellungen -> Eingabe-Zuordnung
- Aktion „schuss“ hinzufügen
- Aktion bei „schuss“ hinzufügen „+ Knopf“
- Space hängt an „schuss“
- Fenster schließen
- Zu Player.gd wechseln
- Programmierung ab Zeile 25
Godot 4.0: schussSzene.instantiate() statt schussSzene.instance() (Zeile 28)
Alternative Schussinstantierung
Gegner hinzufügen
- Neue Szene
- KinematicBody hinzufügen
- AnimatedSprite hinzufügen
- Sprite auswählen: AnimatedBig
- vertical 2, horizontal 2
- 2 Frames hinzufügen
- Skript hinzufügen, Vorlage empty
- in _ready die Animation abspielen
- Node2D hinzufügen, kann umbenannt werden „Enemies“
- ‚Enemies“ den Feind hinzufügen
Mehr Feinde zufällig erzeugen
- Neues Objekt „Timer“ erzeugen
- Timer mit Main-Knoten verbinden
- neue Funktion entsteht: func _on_Timer_timeout()
- alles aus _ready (bis auf rng.randomize()) in die neue Funktion verschieben
Gegner abschießen
- Schuss.gd
- 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
- Skript Schuss.gd
- Zeile 10 ergänzen
Explosion bei Treffer
- Szene hinzufügen
- AnimatedSprite hinzufügen
- in Explosion umbenennen
- Die Funktion on_Animation_finished mit sich selbst verbinden: self.queue_free()
Objekte löschen, wenn sie den sichtbaren Bereich verlassen
- Knoten „Visible on Screen Notifier“ hinzufügen
- „on screen exited“ hinzufügen
- queue_free()