From 69a5616ae99357f78f7a92bbaaf17b1e6684c694 Mon Sep 17 00:00:00 2001 From: torsten Date: Mon, 16 Feb 2026 13:32:59 +0100 Subject: [PATCH] Trigger in Halle der Ahnen eingebaut --- weltenauge/PROJEKT_UEBERSICHT.md | 8 ++++---- weltenauge/maps/planes/fugue/halle_der_ahnen.tscn | 6 ++++++ weltenauge/systems/network/network_manager.gd | 4 ---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/weltenauge/PROJEKT_UEBERSICHT.md b/weltenauge/PROJEKT_UEBERSICHT.md index 8c6daea..6a00c36 100644 --- a/weltenauge/PROJEKT_UEBERSICHT.md +++ b/weltenauge/PROJEKT_UEBERSICHT.md @@ -56,9 +56,9 @@ Alle Skripte und die dazugehörige Logik sollen thematisch in Unterordnern unter - **Click-to-Move:** Die Spielerbewegung soll aus Performancegründen über eine AStar-Implementierung (`systems/navigation/`) gesteuert werden. - **GDScript-Konvention: `async`-Schlüsselwort vermeiden:** In GDScript 4 wird jede Funktion, die `await` enthält, automatisch von der Engine als asynchron behandelt. Das `async`-Schlüsselwort in der Funktionssignatur (`async func...`) ist optional und hat in diesem Projekt wiederholt zu schwer diagnostizierbaren Syntaxfehlern geführt. - - **Regel:** Das `async`-Schlüsselwort **darf nicht** verwendet werden. - - **Korrekt:** `func my_function(): await get_tree().process_frame` - - **Falsch:** `async func my_function(): await get_tree().process_frame` + - **Regel:** Das `async`-Schlüsselwort **darf nicht** verwendet werden. + - **Korrekt:** `func my_function(): await get_tree().process_frame` + - **Falsch:** `async func my_function(): await get_tree().process_frame` ## 6. Globale Skripte (Autoloads) @@ -127,4 +127,4 @@ Die Konfiguration des `MultiplayerSynchronizer` für wiederverwendbare Szenen (w ### Dynamische Konfiguration des MultiplayerSpawner - Handhabt nicht nur originäre Objekterzeugung in den Levels, sondern auch Objektaktualisierungen für "Late Joiner" -- Generischer MultiplayerSpawner in Basis Level, von dem alle Level erben, so dass die Spawnliste nur 1x bearbeitet werden muss \ No newline at end of file +- Generischer MultiplayerSpawner in Basis Level, von dem alle Level erben, so dass die Spawnliste nur 1x bearbeitet werden muss diff --git a/weltenauge/maps/planes/fugue/halle_der_ahnen.tscn b/weltenauge/maps/planes/fugue/halle_der_ahnen.tscn index 7ae1095..cf1514f 100644 --- a/weltenauge/maps/planes/fugue/halle_der_ahnen.tscn +++ b/weltenauge/maps/planes/fugue/halle_der_ahnen.tscn @@ -1,5 +1,7 @@ [gd_scene format=3 uid="uid://bef0tj7n6g8uo"] +[ext_resource type="PackedScene" uid="uid://coq1j1cdrvqyn" path="res://systems/interaction/portal/portal.tscn" id="1_4r2hu"] + [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_d3jw7"] sky_top_color = Color(0.055328622, 0.3637527, 0.67898166, 1) ground_bottom_color = Color(0.28193337, 0.24096331, 0.19489476, 1) @@ -57,3 +59,7 @@ shape = SubResource("ConcavePolygonShape3D_0hy1c") [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=1610787579] _spawnable_scenes = PackedStringArray("uid://bjurf8vfd1fg8") spawn_path = NodePath("../SpawnPoints") + +[node name="Portal" parent="." unique_id=988801188 instance=ExtResource("1_4r2hu")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.1332607, 0.014829755, 8.73144) +target_area_key = "keuwin_grasland" diff --git a/weltenauge/systems/network/network_manager.gd b/weltenauge/systems/network/network_manager.gd index 486f486..c25ef37 100644 --- a/weltenauge/systems/network/network_manager.gd +++ b/weltenauge/systems/network/network_manager.gd @@ -166,10 +166,6 @@ func _spawn_player_in_world(id, spawn_target_node): player.set_multiplayer_authority(1) spawn_target_node.add_child(player, true) - # SCHRITT 2: Explizit auf den nächsten Frame warten. - # Dies gibt Godot die Zeit, die _ready() Funktion des Spielers auszuführen. - await get_tree().process_frame - # SCHRITT 3: Jetzt ist der Spieler garantiert bereit und konfiguriert. # Alle folgenden Operationen sind sicher. var sync = player.get_node("MultiplayerSynchronizer")