Как мне исправить эту проблему с сетью Годо - PullRequest
0 голосов
/ 04 мая 2020

Я очень плохо знаком с сетевыми технологиями и пытался сделать многопользовательскую игру, я следовал учебному пособию на YouTube, это то, чем я закончил, я уверен, что вы можете заметить очень четкие ошибки, если вы все же сообщите мне !! Вот проблемы, с которыми я столкнулся:

- клиент не видит хост

- хост видит клиента, но он тоже его контролирует (и оно тоже имеет то же имя) (так что в основном хост играет с другой версией себя)

вот мой код в моем файле network.gd:

extends Node

var SERVER_PORT = 31899
var MAX_PLAYERS = 2
var SERVER_IP = "192.168.1.46"  #192.168.1.46

var players = { }
var self_data = { name = "", posiiton = Vector2(360, 180) }


func _ready() -> void:
    get_tree().connect("network_peer_disconnected", self, "_player_disconnected")


func CreateServer(player_nickname):
    self_data.name = player_nickname
    players[1] = self_data
    var peer = NetworkedMultiplayerENet.new()
    peer.create_server(SERVER_PORT, MAX_PLAYERS)
    get_tree().set_network_peer(peer)
    get_tree().change_scene("res://scenes/TestScene.tscn")


func JoinServer(player_nickname):
    self_data.name = player_nickname
    get_tree().connect("connected_to_server", self, "_connected_to_server")
    var peer = NetworkedMultiplayerENet.new()
    peer.create_client(SERVER_IP, SERVER_PORT)
    get_tree().set_network_peer(peer)
    get_tree().change_scene("res://scenes/TestScene.tscn")


func _connected_to_server():
    players[get_tree().get_network_unique_id()] = self_data
    rpc("_send_player_info", get_tree().get_network_unique_id(), self_data)


func _player_connected(id):
    print("Player connected" + str(id))


func _player_disconnected(id):
    print("Player disconnected" + str(id))
    players.erase(id)


remote func _send_player_info(id, info):
    if get_tree().is_network_server():
        for peer_id in players:
            rpc_id(id, "_send_player_info", peer_id, players[peer_id])
    players[id] = info

    var new_player = load("res://entity/player.tscn").instance()
    new_player.name = str(id)
    new_player.set_network_master(id)
    get_tree().get_root().add_child(new_player)


func update_position(id, position):
    players[id].position = position 
...