Player 3D Login, House Prototyping
This commit is contained in:
parent
9c9b990678
commit
efd7ab3896
9 changed files with 96 additions and 19 deletions
|
|
@ -8,8 +8,8 @@ var local_camera: Camera3D = null
|
||||||
|
|
||||||
# Mapping der Areas
|
# Mapping der Areas
|
||||||
var area_paths = {
|
var area_paths = {
|
||||||
"keuwin_grasland": "res://05_worlds/area/outdoor/grass/keuwin_grasland.tscn",
|
"keuwin_grasland": "res://05_worlds/areas/outdoor/grass/keuwin_grasland.tscn",
|
||||||
"ahnenhalle": "res://05_worlds/area/planes/fugue/halle_der_ahnen.tscn"
|
"ahnenhalle": "res://05_worlds/areas/planes/fugue/halle_der_ahnen.tscn"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Server-seitiges Tracking: peer_id -> SubViewportContainer
|
# Server-seitiges Tracking: peer_id -> SubViewportContainer
|
||||||
|
|
@ -37,9 +37,9 @@ func join_game(ip: String, username: String, password: String):
|
||||||
peer.create_client(ip, PORT)
|
peer.create_client(ip, PORT)
|
||||||
multiplayer.multiplayer_peer = peer
|
multiplayer.multiplayer_peer = peer
|
||||||
|
|
||||||
|
|
||||||
func _on_player_connected(id):
|
func _on_player_connected(id):
|
||||||
print("Player connected with id:", 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, [])
|
cl_show_characters.rpc_id(id, [])
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -62,7 +62,7 @@ func _on_player_disconnected(id):
|
||||||
|
|
||||||
func change_player_area(id: int, area_key: String):
|
func change_player_area(id: int, area_key: String):
|
||||||
if not multiplayer.is_server(): return
|
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 path = area_paths[area_key]
|
||||||
|
|
||||||
var container_name = area_key + "_container"
|
var container_name = area_key + "_container"
|
||||||
|
|
@ -167,7 +167,7 @@ func setup_client_camera(node):
|
||||||
|
|
||||||
|
|
||||||
func _spawn_player_in_world(id, spawn_target_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()
|
var player = player_scene.instantiate()
|
||||||
player.name = str(id)
|
player.name = str(id)
|
||||||
player.get_node("PlayerNameLabel").text = str(id)
|
player.get_node("PlayerNameLabel").text = str(id)
|
||||||
|
|
@ -208,24 +208,24 @@ func cl_assign_camera_target(node_name: String):
|
||||||
|
|
||||||
@rpc("any_peer", "call_remote", "reliable")
|
@rpc("any_peer", "call_remote", "reliable")
|
||||||
func srv_handle_area_change_request(area_key: String):
|
func srv_handle_area_change_request(area_key: String):
|
||||||
|
print("Server received srv_handle_area_change_request")
|
||||||
var id = multiplayer.get_remote_sender_id()
|
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)
|
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]
|
var old_container = player_worlds[id]
|
||||||
print("container name=", old_container)
|
if old_container:
|
||||||
var old_viewport = old_container.get_child(0)
|
print("container name=", old_container)
|
||||||
print("Viewport name=", old_viewport)
|
var old_viewport = old_container.get_child(0)
|
||||||
var player_node = old_viewport.get_child(0).get_node("SpawnPoints").get_node(str(id))
|
print("Viewport name=", old_viewport)
|
||||||
|
var player_node = old_viewport.get_child(0).get_node("SpawnPoints").get_node(str(id))
|
||||||
|
|
||||||
if player_node:
|
if player_node:
|
||||||
player_node.queue_free()
|
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
|
# 2. Bestehende Funktion für den Wechsel aufrufen
|
||||||
change_player_area(id, area_key)
|
change_player_area(id, area_key)
|
||||||
|
|
|
||||||
BIN
weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend
(Stored with Git LFS)
Normal file
BIN
weltenauge/02_library/meshes/architecture/prototpye/Haus1.blend
(Stored with Git LFS)
Normal file
Binary file not shown.
|
|
@ -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
|
||||||
|
|
@ -29,3 +29,10 @@ func _on_character_item_list_item_activated(index: int) -> void:
|
||||||
print("Doubleclick for index=", index)
|
print("Doubleclick for index=", index)
|
||||||
var item = character_item_list.get_selected_items()[0]
|
var item = character_item_list.get_selected_items()[0]
|
||||||
print("=>",character_item_list.get_item_text(item))
|
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()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
[gd_scene format=3 uid="uid://h5qt2pcidh8x"]
|
[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://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"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_d3jw7"]
|
||||||
|
|
||||||
|
|
@ -59,3 +60,6 @@ target_area_key = "ahnenhalle"
|
||||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=58641401]
|
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=58641401]
|
||||||
_spawnable_scenes = PackedStringArray("uid://bjurf8vfd1fg8")
|
_spawnable_scenes = PackedStringArray("uid://bjurf8vfd1fg8")
|
||||||
spawn_path = NodePath("../SpawnPoints")
|
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)
|
||||||
|
|
|
||||||
|
|
@ -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://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"]
|
[ext_resource type="Texture2D" uid="uid://btqohxc787pms" path="res://blender_manual_export/quaternius_naturepack_commontree_1_Bark_NormalTree_Normal.png" id="2_buj6b"]
|
||||||
|
|
|
||||||
|
|
@ -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://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"]
|
[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
BIN
workbench/prototyping/house/Haus1.blend
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
workbench/prototyping/house/Haus1.blend1
Normal file
BIN
workbench/prototyping/house/Haus1.blend1
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue