feat: replace lobby with 3D tavern, cleanup legacy files, update docs

This commit is contained in:
2026-04-14 01:34:53 +02:00
parent b0c7cfa3d4
commit 623947632d
58 changed files with 1970920 additions and 111 deletions

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

597074
Anna_Model/Anna_Model_1.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

402352
Anna_Model/Anna_Model_2.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

386952
Anna_Model/Anna_Model_3.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

584436
Anna_Model/Anna_Model_4.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -0,0 +1,2 @@
# Blender 5.1.0 MTL File: 'None'
# www.blender.org

View File

@@ -12,12 +12,13 @@ Zuletzt aktualisiert: 2026-04-13
- CLAUDE.md mit vollständiger Spielkonzept-Dokumentation
- **Multiplayer Grundgerüst** — ENet Server/Client, NetworkManager Autoload, welcome RPC verifiziert
- **Lobby + Rollen** — Join-UI, Warteraum, Spieler/DM-Rollen, Sync, Kick, Spiel-Start-Signal
- **Tavern Lobby** — 3D-Taverne ersetzt die flache Lobby-UI; SceneManager Autoload eingeführt
### 🔄 In Arbeit
— (nichts aktiv)
### ⏳ Als nächstes
- **Szenen-Wechsel nach Spielstart** — lobby.tscn → Spielszene (Eingangshalle)
- **Szenen-Wechsel nach Spielstart** — game_started → Spieler in ihre Chamber, DM in DM-Ansicht
Plan: noch zu erstellen
---
@@ -27,10 +28,12 @@ Zuletzt aktualisiert: 2026-04-13
1. ✅ MCP eingerichtet
2. ✅ Multiplayer Grundgerüst (Server, Clients verbinden, rpc testen)
3. ✅ Lobby + Rollen (Spieler registrieren sich, DM kriegt Sonderrechte)
4. ⏳ Refektorium — asymmetrische Wahrnehmung (erster Raum)
5.DM Regiepult Basics — Overlay-Toggle
6.Alle Räume aufbauen
7.Polish — Audio, Nebel, Licht, Würfel-UI
4. ✅ Tavern Lobby — 3D-Taverne als Warteraum, SceneManager Autoload
5.Szenen-Wechsel nach Spielstart — Chamber/DM-Szene nach game_started
6.Refectorium — asymmetrische Wahrnehmung (erster Raum)
7.DM Regiepult Basics — Overlay-Toggle
8. ⏳ Alle Räume aufbauen
9. ⏳ Polish — Audio, Nebel, Licht, Würfel-UI
---

View File

@@ -1,42 +0,0 @@
[gd_scene load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/lobby.gd" id="1"]
[node name="Lobby" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource("1")
[node name="JoinPanel" type="VBoxContainer" parent="."]
offset_left = 300.0
offset_top = 200.0
offset_right = 700.0
offset_bottom = 500.0
[node name="Title" type="Label" parent="JoinPanel"]
text = "Ruf der Pilze"
[node name="NameInput" type="LineEdit" parent="JoinPanel"]
placeholder_text = "Dein Name"
[node name="RoleOption" type="OptionButton" parent="JoinPanel"]
[node name="JoinButton" type="Button" parent="JoinPanel"]
text = "Beitreten"
[node name="WaitPanel" type="VBoxContainer" parent="."]
visible = false
offset_left = 300.0
offset_top = 200.0
offset_right = 700.0
offset_bottom = 500.0
[node name="WaitLabel" type="Label" parent="WaitPanel"]
text = "Warte auf Spieler..."
[node name="PlayerList" type="ItemList" parent="WaitPanel"]
custom_minimum_size = Vector2(0, 150)
[node name="StartButton" type="Button" parent="WaitPanel"]
text = "Spiel starten"
visible = false

View File

@@ -1,64 +0,0 @@
extends Control
var _local_role: String = ""
var _pending_player_name: String = ""
func _ready() -> void:
$JoinPanel/RoleOption.add_item("Spieler")
$JoinPanel/RoleOption.add_item("DM")
$JoinPanel/JoinButton.pressed.connect(_on_join_pressed)
$WaitPanel/StartButton.pressed.connect(_on_start_pressed)
NetworkManager.connected_to_server.connect(_on_connected)
NetworkManager.connection_failed.connect(_on_connection_failed)
NetworkManager.player_joined.connect(_on_player_joined)
NetworkManager.player_left.connect(_on_player_left)
NetworkManager.player_list_synced.connect(_rebuild_player_list)
NetworkManager.game_started.connect(_on_game_started)
func _on_join_pressed() -> void:
var player_name: String = ($JoinPanel/NameInput as LineEdit).text.strip_edges()
if player_name.is_empty():
return
_local_role = "dm" if $JoinPanel/RoleOption.selected == 1 else "player"
_pending_player_name = player_name
NetworkManager.join_server("127.0.0.1", 4242)
func _on_connected() -> void:
NetworkManager.register.rpc_id(1, _pending_player_name, _local_role)
$JoinPanel.visible = false
$WaitPanel.visible = true
$WaitPanel/StartButton.visible = (_local_role == "dm")
func _on_connection_failed() -> void:
push_error("[Lobby] Verbindung fehlgeschlagen")
_local_role = ""
_pending_player_name = ""
func _on_player_joined(_peer_id: int, _player_name: String, _role: String) -> void:
_rebuild_player_list()
func _on_player_left(_peer_id: int) -> void:
_rebuild_player_list()
func _rebuild_player_list() -> void:
$WaitPanel/PlayerList.clear()
for p in NetworkManager.players.values():
$WaitPanel/PlayerList.add_item("%s (%s)" % [p.name, p.role])
func _on_start_pressed() -> void:
NetworkManager.request_start_game.rpc_id(1)
func _on_game_started() -> void:
# Platzhalter: Szenen-Wechsel kommt im nächsten Feature
print("[Lobby] Spiel gestartet!")

View File

@@ -0,0 +1 @@
uid://bnso80wya18vk

View File

@@ -0,0 +1 @@
uid://body4kd5nok48