Я пытаюсь сделать выделенный сервер и клиент с Godot, я могу подключиться к серверу через Интернет, но когда я делаю RPC, я получаю эту ошибку:
ОШИБКА: узел не найден: gamestate
По адресу: scene / main / node.cpp: 1382
ОШИБКА: _process_get_node: не удалось получить путь от RPC: игровое состояние
По адресу: core / io / multiplayer_api.cpp: 248
ОШИБКА: получен неверный пакет. Запрашиваемый узел не найден.
По адресу: core / io / multiplayer_api.cpp: 194
Сервер:
func _client_connected(id):
print('Client ' + str(id) + ' is connected')
var newClient = load("res://remote_client.tscn").instance()
newClient.set_name(str(id))
get_tree().get_root().add_child(newClient)
remote func _register_player_to_server(id, info):
players_server[id] = info
Клиент:
func connect_to_server(player_nickname, ip):
self_data.name = player_nickname
get_tree().connect('connected_to_server', self, '_connected_to_server')
var peer = NetworkedMultiplayerENet.new()
if ip == null or ip == '':
peer.create_client(DEFAULT_IP, DEFAULT_PORT)
else:
peer.create_client(ip, DEFAULT_PORT)
get_tree().set_network_peer(peer)
func _connected_to_server():
players[get_tree().get_network_unique_id()] = self_data
print("here")
rpc_id(1, '_register_player_to_server', get_tree().get_network_unique_id(), self_data)
print("wtf")
Функция _conneccted_to_server()
должна вызывать функцию _register_player_to_server()
на сервере, который затем сохраняет информацию о значениях игроков.
Обратите внимание, что клиент находится в одноэлементном игровом состоянии и ошибка отображается в консоли сервера.