# Einstellungen *Godot* Engine bietet das Spiel eine Reihe von Einstellungsmöglichkeiten, die es den Spielern erlauben, ihre Spielerfahrung anzupassen. Eines der wichtigsten Elemente jeder Spielerfahrung ist die Art und Weise, wie das Spiel auf dem Bildschirm dargestellt wird. In *StarRoamers* werden verschiedene Anpassungsoptionen zur Verfügung gestellt, wie zum Beispiel der Vollbildmodus, die Synchronisation mit der vertikalen Bildwiederholrate (V-Sync) und die Anzeige der FPS (Frames per Second). Die Implementierung erfolgt mithilfe von Godots Nodes und Signale, um eine benutzerfreundliche Benutzeroberfläche zu erstellen. ## Modes Zum Beispiel bietet der `fullscreen_dropdown` *OptionButton* dem Spieler die Möglichkeit, zwischen Vollbild und Fenstermodus zu wechseln. Der Zustand des OptionButtons wird durch die Zeile `fullscreen_dropdown.select(config.save_data["window_mode"])` aktualisiert, die den ausgewählten Index aus den zuvor gespeicherten Einstellungen lädt. V-Sync, ein wichtiger Aspekt bei der Vermeidung von Screen Tearing, kann durch das Markieren der *V-Sync-Checkbox* aktiviert oder deaktiviert werden. Dies geschieht durch die Methode `_on_v_sync_check_pressed`, die den aktuellen Status von V-Sync umkehrt (`config.save_data["vsync_on"] = !config.save_data["vsync_on"]`). ## Initialisierung In diesem Code werden die GUI-Elemente, die für die Einstellungen im Spiel "StarRoamers" verwendet werden, initialisiert. Mit dem `@onready`-Schlüsselwort stellt der Code sicher, dass die Variablen erst initialisiert werden, wenn alle Nodes bereit sind. Die `$`-Syntax ermöglicht es, auf bestimmte Elemente im Scene-Tree zuzugreifen. `fullscreen_dropdown` ist eine Referenz auf eine *OptionButton*-Komponente, die dem Spieler erlaubt, zwischen Vollbild- und Fenstermodus zu wählen. `vsync_button` ist eine Checkbox, mit der V-Sync ein- oder ausgeschaltet werden kann. `display_fps_button` ist ebenfalls eine Checkbox, die steuert, ob die Framerate (*FPS*) auf dem Bildschirm angezeigt wird. Schließlich wird die config Variable als eine Instanz eines zuvor erstellten Skripts initialisiert, welches zur Verwaltung von Konfigurationsdaten verwendet wird. ```gdscript onready var fullscreen_dropdown = $VBoxContainer/WindowMode/OptionButton onready var vsync_button = $VBoxContainer/Vsync/VSyncCheck onready var display_fps_button = $VBoxContainer/DisplayFPS/DisplayFPSCheck var config = preload("res://Scripts/config.gd").new() ``` ![game settings](../../img/starroamers/options.png "Einstellungen") ## Laden und Anwenden der Einstellungen In diesem Abschnitt gibt es zwei Funktionen: `load_options` und `render_changes`. Die `load_options`-Funktion ruft die `load_data`-Methode des `config`-Objekts auf, die die gespeicherten Einstellungen des Spielers lädt. Die `render_changes`-Funktion aktualisiert die GUI-Elemente mit den geladenen Einstellungen. Die *OptionButton*-Komponente wird mit der ausgewählten Option aus den geladenen Daten aktualisiert, während die Checkboxen für V-Sync und die FPS-Anzeige entsprechend aktiviert oder deaktiviert werden. ```gd func load_options(): config.load_data() func render_changes(): fullscreen_dropdown.select(config.save_data["window_mode"]) vsync_button.set_pressed_no_signal(config.save_data["vsync_on"]) display_fps_button.set_pressed_no_signal(config.save_data["display_fps"]) ```