# Grafiken In der Entwicklung von Spielen sind Grafiken und Assets entscheidende Elemente. Die *Godot* Engine verfügt über ein effizientes System zur Verwaltung von Grafiken und Assets, das Entwicklern hilft, organisiert zu bleiben und ihre Projekte effektiv zu gestalten. Im bereitgestellten Codebeispiel sieht man, wie verschiedene Assets wie Charaktere und Gegner in der *Godot* Engine eingebunden werden. ```gdscript [ext_resource type="PackedScene" uid="uid://c2s6gi16ko3jx" path="res://Entity/player.tscn" id="1_ipr83"] [ext_resource type="PackedScene" uid="uid://do0ubuaoovk4v" path="res://Entity/shooter.tscn" id="2_2x7wi"] [ext_resource type="PackedScene" uid="uid://c4e50js24oq0h" path="res://Entity/charger.tscn" id="3_y1k2p"] ``` In diesem Code werden externe Ressourcen geladen, die *PackedScenes* sind. Diese repräsentieren in *Godot* komplette Szenen, die wiederum aus mehreren Elementen bestehen können, einschließlich Grafiken, Scripts und mehr. ## Spielobjekten Sobald die Assets im Projekt verfügbar sind, müssen sie auf der Szene platziert werden. In *Godot* wird dies durch das Hinzufügen von Knoten erreicht. Jedes Spielobjekt ist ein Knoten und kann Eigenschaften wie Position, Rotation und Skalierung haben. ```gdscript [node name="Player" parent="." instance=ExtResource("1_ipr83")] position = Vector2(565, 318) [node name="Shooter1" parent="." instance=ExtResource("2_2x7wi")] position = Vector2(379, 141) move_direction = 1 [node name="Charger" parent="." instance=ExtResource("3_y1k2p")] position = Vector2(542, 63) ``` Hier kann man sehen, wie Spielobjekte (*Player*, *Shooter1*, *Charger*) auf der Szene platziert werden, indem ihre Positionseigenschaften festgelegt werden. Diese Knoten sind Instanzen der zuvor geladenen PackedScenes und werden an bestimmten Positionen auf der Szene platziert. ## Szenen und Skripte In *Godot* sind Szenen die Bausteine eines Spiels. Eine Szene kann ein Charakter, ein Gegenstand, eine Ebene oder eine beliebige andere Spielkomponente sein. Szenen können auch Skripte enthalten, die das Verhalten der in ihnen enthaltenen Objekte definieren. ```gdscript [node name="Spawner" type="Node" parent="."] script = ExtResource("4_w1nbr") ``` In diesem Codeausschnitt wird ein Knoten namens *Spawner* erstellt und mit einem Skript verknüpft, das sein Verhalten steuert. Das Skript ist auch eine externe Ressource und wird durch seine ID geladen. ## Modularität und Wiederverwendbarkeit Ein wichtiger Aspekt der Arbeit mit *Godot* ist die Modularität und Wiederverwendbarkeit von Assets und Szenen. Durch das Verpacken von Objekten und Logik in PackedScenes können Entwickler wiederverwendbare Komponenten erstellen, die in verschiedenen Teilen des Spiels oder sogar in zukünftigen Projekten wiederverwendet werden können. Insgesamt ermöglicht die *Godot* Engine Entwicklern durch ihre Knoten- und Szenenstruktur, Grafiken und Assets effektiv zu verwalten, was zu einer schnelleren Entwicklung und einem besser organisierten Projekt führt. Im Kontext des *StarRoamers* bedeutet dies, dass Entwickler Assets wie Raumschiffe, Gegner und Hintergründe effektiv organisieren und platzieren können, während sie ein hohes Maß an Modularität und Wiederverwendbarkeit beibehalten. ![game over](../../img/starroamers/gameover.png "Game Over!")