Move the real player authority to server
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

- Add rust bindings for the server player controller
- Implement reconciliation loop for checking the player state
- Place spawners on the test map
- Add Containerfile and helm chart
This commit is contained in:
2025-01-29 12:25:26 +01:00
parent 523900cc82
commit dfe888a918
94 changed files with 3002 additions and 144 deletions

View File

@ -16,20 +16,31 @@ func _on_connected_ok():
@rpc("any_peer", "reliable", "call_remote")
func register_player(id: int, name: String):
var player_state := PlayerState.new()
player_state.id = id
player_state.name = name
players[multiplayer.get_remote_sender_id()] = player_state
if multiplayer.is_server():
var player_state := PlayerState.new()
player_state.id = id
player_state.name = name
players[multiplayer.get_remote_sender_id()] = player_state
@rpc("any_peer", "reliable", "call_local")
func remove_player(id: int):
if multiplayer.is_server():
if players.has(id):
players.erase(id)
func _on_player_disconnected(id):
remove_player.rpc_id(1, id)
func _on_player_connected(id):
pass
#if multiplayer.is_server():
#GameServerManager.load_map.rpc_id(id, GameServerManager.current_map)
if multiplayer.is_server():
print("Player is connected with id: " + str(id))
func _ready() -> void:
multiplayer.peer_connected.connect(_on_player_connected)
multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.connected_to_server.connect(_on_connected_ok)
print("started")
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
@ -42,10 +53,10 @@ func set_map(name: String):
func create_server(player_data: PlayerManager) -> Error:
var peer = ENetMultiplayerPeer.new()
var err = peer.create_server(27015, 30)
multiplayer.multiplayer_peer = peer
if err:
return err
multiplayer.multiplayer_peer = peer
if DisplayServer.get_name() != "headless":
if not OS.has_feature("dedicated_server"):
var player_state := PlayerState.new()
player_state.id = 1
player_state.name = player_data.name
@ -54,7 +65,8 @@ func create_server(player_data: PlayerManager) -> Error:
func join_server(player_data: PlayerManager, ip: String, port: int) -> Error:
var peer = ENetMultiplayerPeer.new()
var err = peer.create_client("127.0.0.1", 27015)
print("trying to connect to: " + ip + ":" + str(port))
var err = peer.create_client(ip, port)
if err != OK:
return err
player_state_global.id = multiplayer.get_remote_sender_id()