Player 3D Login, House Prototyping

This commit is contained in:
Torsten 2026-02-23 22:18:00 +01:00
parent 9c9b990678
commit efd7ab3896
9 changed files with 96 additions and 19 deletions

View file

@ -8,8 +8,8 @@ var local_camera: Camera3D = null
# Mapping der Areas
var area_paths = {
"keuwin_grasland": "res://05_worlds/area/outdoor/grass/keuwin_grasland.tscn",
"ahnenhalle": "res://05_worlds/area/planes/fugue/halle_der_ahnen.tscn"
"keuwin_grasland": "res://05_worlds/areas/outdoor/grass/keuwin_grasland.tscn",
"ahnenhalle": "res://05_worlds/areas/planes/fugue/halle_der_ahnen.tscn"
}
# Server-seitiges Tracking: peer_id -> SubViewportContainer
@ -37,9 +37,9 @@ func join_game(ip: String, username: String, password: String):
peer.create_client(ip, PORT)
multiplayer.multiplayer_peer = peer
func _on_player_connected(id):
print("Player connected with id:", id)
player_worlds[id] = null # SubViewport wird erst connected, wenn area geladen wurde.
cl_show_characters.rpc_id(id, [])
@ -62,7 +62,7 @@ func _on_player_disconnected(id):
func change_player_area(id: int, area_key: String):
if not multiplayer.is_server(): return
print("Server is loading ", area_key)
print("Server change_player_area: Server is loading ", area_key)
var path = area_paths[area_key]
var container_name = area_key + "_container"
@ -167,7 +167,7 @@ func setup_client_camera(node):
func _spawn_player_in_world(id, spawn_target_node):
var player_scene = load("res://systems/player/player.tscn")
var player_scene = load("res://04_entities/player/player.tscn")
var player = player_scene.instantiate()
player.name = str(id)
player.get_node("PlayerNameLabel").text = str(id)
@ -208,13 +208,17 @@ func cl_assign_camera_target(node_name: String):
@rpc("any_peer", "call_remote", "reliable")
func srv_handle_area_change_request(area_key: String):
print("Server received srv_handle_area_change_request")
var id = multiplayer.get_remote_sender_id()
if not player_worlds.has(id): return
if not player_worlds.has(id):
print("ERROR: Server srv_handle_area_change_request could not be handled because client peer_id is not in player_worlds list")
return
print("Server: Player ", id, " requests area change to ", area_key)
# 1. Alten Spieler finden und entfernen
# 1. Alten Spieler finden und entfernen falls vorhanden
var old_container = player_worlds[id]
if old_container:
print("container name=", old_container)
var old_viewport = old_container.get_child(0)
print("Viewport name=", old_viewport)
@ -223,10 +227,6 @@ func srv_handle_area_change_request(area_key: String):
if player_node:
player_node.queue_free()
else:
print("Old viewport:", old_viewport)
print("Player for erasing not found:", id)
# 2. Bestehende Funktion für den Wechsel aufrufen
change_player_area(id, area_key)

Binary file not shown.

View file

@ -0,0 +1,60 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dtaaopjfwugox"
path="res://.godot/imported/Haus1.blend-530b60ce89025181cf1629ef24bf4a52.scn"
[deps]
source_file="res://02_library/meshes/architecture/prototpye/Haus1.blend"
dest_files=["res://.godot/imported/Haus1.blend-530b60ce89025181cf1629ef24bf4a52.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2

View file

@ -29,3 +29,10 @@ func _on_character_item_list_item_activated(index: int) -> void:
print("Doubleclick for index=", index)
var item = character_item_list.get_selected_items()[0]
print("=>",character_item_list.get_item_text(item))
#for name in character_item_list.get_selected_items():
# #character_item_list.add_item(character.name)
# print(name)
print("sending to server: srv_handle_area_change_request")
NetworkManager.srv_handle_area_change_request.rpc_id(1, 'keuwin_grasland')
hide()

View file

@ -1,6 +1,7 @@
[gd_scene format=3 uid="uid://h5qt2pcidh8x"]
[ext_resource type="PackedScene" uid="uid://coq1j1cdrvqyn" path="res://05_worlds/prefabs/portal/portal.tscn" id="1_1yg6u"]
[ext_resource type="PackedScene" uid="uid://dtaaopjfwugox" path="res://02_library/meshes/architecture/prototpye/Haus1.blend" id="2_37qpy"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_d3jw7"]
@ -59,3 +60,6 @@ target_area_key = "ahnenhalle"
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=58641401]
_spawnable_scenes = PackedStringArray("uid://bjurf8vfd1fg8")
spawn_path = NodePath("../SpawnPoints")
[node name="Haus1" parent="." unique_id=1112241800 instance=ExtResource("2_37qpy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2224345, 0, 6.3797016)

View file

@ -1,4 +1,4 @@
[gd_resource type="ArrayMesh" format=4 uid="uid://8xlhk4wyhfhb"]
[gd_resource type="ArrayMesh" format=4 uid="uid://2lhp3qgi4k6g"]
[ext_resource type="Texture2D" uid="uid://cd2rwoon87c3r" path="res://blender_manual_export/quaternius_naturepack_commontree_1_Bark_NormalTree.png" id="1_i33fb"]
[ext_resource type="Texture2D" uid="uid://btqohxc787pms" path="res://blender_manual_export/quaternius_naturepack_commontree_1_Bark_NormalTree_Normal.png" id="2_buj6b"]

View file

@ -1,4 +1,4 @@
[gd_resource type="ArrayMesh" format=4 uid="uid://cfvrt8vkn1e7b"]
[gd_resource type="ArrayMesh" format=4 uid="uid://bfm6gvugkbxj5"]
[ext_resource type="Texture2D" uid="uid://bms40ms6ijpn7" path="res://quaternius_direct/Bark_NormalTree.png" id="1_ofe58"]
[ext_resource type="Texture2D" uid="uid://cchft2gjnqdu1" path="res://quaternius_direct/Bark_NormalTree_Normal.png" id="2_wrip3"]

BIN
workbench/prototyping/house/Haus1.blend (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.