6.1.2. GDScript Grundlagen

GDScript ist eine Skriptsprache, die speziell für die Godot Engine entwickelt wurde. Es ähnelt in der Syntax Python und JavaScript, ist aber für die Anforderungen der Spieleentwicklung optimiert. GDScript ist dynamisch typisiert und ermöglicht Entwicklern, schnell und effizient Skripte zu schreiben, die eng mit der Godot Engine integriert sind. Es ist auch für Anfänger leicht zu erlernen, da es eine saubere und lesbare Syntax hat.

gdscript

6.1.2.1. Konstanten und Variablen

In GDScript, wie in den meisten Programmiersprachen, sind Variablen und Konstanten essentielle Bestandteile. Variablen können zur Speicherung von Informationen wie der Gesundheit eines Charakters, der Anzahl gesammelter Gegenstände oder der aktuellen Spielstufe verwendet werden. Da sich diese Werte im Laufe des Spiels ändern, sind Variablen hierfür ideal. Konstanten hingegen werden häufig verwendet, um feste Werte zu definieren, die während des gesamten Spiels gleich bleiben, wie die maximale Geschwindigkeit eines Gegners oder die Anzahl der Leben, die ein Spieler zu Beginn hat. Durch die Verwendung von Konstanten kann vermieden werden, dass solche Werte versehentlich verändert werden, was zu unerwarteten Verhalten im Spiel führen könnte.

const SPEED = 300.0

Diese Konstanten stellen zum Beispiel die Geschwindigkeit des Charakters und die Sprungkraft dar. Variablen hingegen können sich ändern. Das Schlüsselwort var wird verwendet, um eine Variable zu deklarieren.

onready var health = max_health

In diesem Fall wird die Variable health verwendet, um die aktuelle Gesundheit des Charakters zu speichern.

6.1.2.2. Signale

In der Spieleentwicklung sind Signale eine wichtige Funktion für die Kommunikation zwischen verschiedenen Spielobjekten und Systemen. Durch Signale kann beispielsweise ein Charakterobjekt ein Signal aussenden, wenn es Schaden nimmt. Andere Systeme, wie das Benutzeroberflächensystem, können dieses Signal empfangen und darauf reagieren, etwa indem sie die Gesundheitsanzeige aktualisieren. Signale sind besonders nützlich, um den Code sauber und modular zu halten, da sie es ermöglichen, dass Systeme miteinander interagieren, ohne voneinander abhängig zu sein. In GDScript können Signale auch Parameter enthalten, was es ermöglicht, zusätzliche Informationen, wie die Menge an genommenem Schaden, zusammen mit dem Signal zu senden. Dies eröffnet eine Vielzahl von Möglichkeiten für komplexe Interaktionen und Reaktionen innerhalb des Spiels.

signal max_health_updated(health)
signal health_updated(health)
signal killed()

Diese Signale können von anderen Skripten abgefangen werden, um darauf basierend Aktionen auszuführen.

6.1.2.3. Funktionen

In der Spieleentwicklung sind Funktionen entscheidend für die Strukturierung des Codes und die Erstellung interaktiver Mechaniken. Durch Funktionen können spezifische Aufgaben wie das Bewegen eines Charakters, das Abfeuern von Projektilen oder das Überprüfen von Kollisionen in übersichtlichen Codeblöcken organisiert werden. Funktionen erlauben es auch, Code zu modularisieren und wiederverwendbar zu machen, was besonders wertvoll ist, wenn ähnliche Aktionen mehrfach im Spiel auftreten. In GDScript können Funktionen Parameter wie die Geschwindigkeit eines Charakters oder die Stärke einer Waffe enthalten. Diese Parameter ermöglichen es, die Funktion flexibel in verschiedenen Szenarien einzusetzen.

func shoot():
	if shooting_delay.is_stopped():
		shooting_delay.start()
		var projectile = preload("res://Entity/bullet.tscn")
		var bullet = projectile.instantiate()
		bullet.position = Vector2(0, -60) + position
		get_tree().current_scene.add_child(bullet)

Diese Funktion übernimmt die Aufgabe, Projektil abzufeuern innerhalb des Spiels. Zunächst überprüft sie, ob die Verzögerung für den Schuss abgelaufen ist, und erzeugt dann ein Projektil, das in die Szene eingefügt wird.

6.1.2.4. Benutzereingaben

In GDScript können Entwickler Benutzereingaben abfragen, was für die Interaktivität in Spielen entscheidend ist. Als ein Beispliet gilt die Funktion get_keyboard_input:

func get_keyboard_input():
	var input_direction = Input.get_vector("ui_left","ui_right", "ui_up","ui_down")
	velocity = input_direction * SPEED

Diese Funktion überwacht die Pfeiltasten und berechnet die Richtung, in die sich der Charakter bewegen soll. Die Input-Klasse ist ein wichtiges Werkzeug in GDScript, das Entwicklern ermöglicht, auf Benutzereingaben zuzugreifen und so reaktionsschnelle und interaktive Spiele zu schaffen.