#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 )