multiplayer help

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By decord

how to synchronize camera movement and ui elements to server and make it unique for all players?

Player Script (input event)

func _input(event):
if is_network_master():
if not note_picked:
if event is InputEventMouseMotion:
head.rotation_degrees.y += sensitivity * event.relative.x
head_x.rotation_degrees.x += sensitivity * event.relative.y
head_x.rotation_degrees.x = clamp(head_x.rotation_degrees.x, -89, 89)
elif event is InputEventKey:
if Input.is_action_just_pressed(“flashlight”) and event.pressed and progressflash > 0:
timer2 = 0
flashlight_light.visible = !flashlight_light.visible
flashlight_sound.play()
elif event.scancode == KEY_SHIFT:
is_shift_pressed = event.pressed
elif Input.is_action_just_pressed(“duck”) and event.pressed:
is_crouching = !is_crouching
if is_crouching:
head.translation.y = CROUCH_HEIGHT
else:
head.translation.y = STAND_HEIGHT
elif event is InputEventMouseButton and not note_picked:
if is_mouse_captured:
# release the mouse capture and hide the cursor
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
is_mouse_captured = false
note_picked = false
else:
# capture the mouse and show the cursor
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
is_mouse_captured = true}

remote func update_remote_player(transform):
if not is_network_master():
global_transform = transform

Server Script(client)

extends Node

const DEFAULT_IP = “127.0.0.1”
const DEFAULT_PORT = 3234

var network = NetworkedMultiplayerENet.new()
var selected_IP
var selected_port

var local_player_id = 0
sync var players = {}
sync var player_data = {}

func _ready():
get_tree().connect(“network_peer_connected”, self, “_player_connected”)
get_tree().connect(“network_peer_disconnected”, self, “_player_disconnected”)
get_tree().connect(“connection_failed”, self, “_connected_fail”)
get_tree().connect(“server_disconnected”, self, “_server_disconnected”)

func _connect_to_server():
get_tree().connect(“connected_to_server”, self, “_connected_ok”)
network.create_client(selected_IP, selected_port)
get_tree().set_network_peer(network)

func _player_connected(id):
print(“Player: " + str(id) + " Connected”)

func _player_disconnected(id):
print(“Player: " + str(id) + " Disconnected”)

func _connected_ok():
print(“Successfully connected to server”)
register_player()
rpc_id(1, “send_player_info”, local_player_id, player_data)

func _connected_fail():
print(“Failed to connect”)

func _server_disconnected():
print(“Server Disconnected”)

func register_player():
local_player_id = get_tree().get_network_unique_id()
player_data = Savedata.save_data
players[local_player_id] = player_data

sync func update_waiting_room():
get_tree().call_group(“WaitingRoom”, “refresh_players”, players)

func load_game():
rpc_id(1, “load_world”)

sync func start_game():
var world = preload(“res://scenes/House3.tscn”).instance()
get_tree().get_root().add_child(world)
get_tree().get_root().get_node(“Menu”).queue_free()

Server Script (server)

extends Spatial

remote func update_player(transform):
rpc_unreliable(“update_remote_player”, transform)