Как подключить два устройства с IP-адресом сервера, а не с локальным хостом в Godot 3.1?

#godot

#godot

Вопрос:

Я использую Godot 3.1. Создаю игру для двух игроков, один игрок принадлежит, а второй игрок — сервер (игрок другого устройства).

Теперь как подключить два плеера к сети live server?

Я создаю одну демонстрационную версию, в которой два игрока подключаются друг к другу, и она работает с IP-адресом локального сервера 127.0.0.0 и портом 4242.

 var SERVER_PORT = 4242
var ip_address  = 127.0.0.1

func join_game(name, ip_address):
   # Initializing the network as server
   var host = NetworkedMultiplayerENet.new()
   host.create_client(ip_address, SERVER_PORT)
   get_tree().set_network_peer(host)

func host_game(name):
   # Initializing the network as client
   var host = NetworkedMultiplayerENet.new()
   host.create_server(SERVER_PORT, 2)
   get_tree().set_network_peer(host)
 

Приведенный выше код корректно работает на локальном сервере, но при изменении ip на нашем реальном сервере он не работает.
измените 127.0.0.1 (ip-адрес локального хоста) на наш IP-адрес текущего сервера,

Ответ №1:

Есть два варианта, которые вы хотите сделать, первый — многопользовательский режим в Интернете.

Для многопользовательской игры в Интернете

Вам нужно настроить сервер в облаке и создать API. И сохраните имя сервера и IP-адрес этого сервера в базе данных, чтобы вы могли предоставить информацию клиенту в виде доступных номеров. таким образом, вы можете показать пользователям созданные комнаты (доступные серверы) в лобби и предоставить им возможность выбора, а теперь подключиться с учетными данными данного сервера.

Ссылка для создания API и соответствующего руководства здесь

Другая возможность — многопользовательский режим в автономном режиме.

Локальный мультиплеер в локальной сети

Теперь у вас есть базовая работающая многопользовательская игра, теперь все, что вам нужно сделать, это просто найти этот сервер по локальной сети, для этого вы можете транслировать информацию о сервере на все узлы в сети, и всякий раз, когда клиент пытается выполнить поиск, он получит эту информацию и попытается подключиться к этому IP-адресу.

Имейте в виду, что для этого вам нужно создать новый сокет и запустить этот сокет на ПОРТУ, отличном от вашей игры.

Найдите класс IP в окне справки поиска

 IP.get_local_addresses() // this will return array of all addresses.
192.168.1.2, 127.0.0.1
 

Ответ №2:

я думаю, вам следует использовать «set_bind_ip» при создании сервера…

 var peer = NetworkedMultiplayerENet.new()
peer.set_bind_ip( IP_NUMBER ) #### HERE YOU SET THE IP_NUMBER FOR SERVER ...
peer.create_server( SERVER_PORT,1 )