如何连接两个设备与实时服务器IP,而不是Godot 3.1中的本地主机?

时间:2019-04-13 06:09:27

标签: godot

我正在使用Godot 3.1。 创建两个玩家游戏,一个玩家自己,第二个玩家是服务器(另一个设备玩家)。

现在如何将两个播放器连接到实时服务器网络?

我正在创建一个两个玩家相互连接的演示,并且可以在本地服务器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(localhost ip)更改为我们的实时服务器IP地址,

2 个答案:

答案 0 :(得分:1)

您要执行两个选择,首先是Internet多人游戏。

对于Internet多人游戏

您必须在云中设置服务器并创建API。并将该服务器的服务器名称和IP地址存储在数据库中,以便您可以将客户端的信息作为可用房间提供。 因此,您可以在大厅中显示用户创建的会议室(可用的服务器),并为他们提供一个选择,然后与给定服务器的凭据连接。

用于创建API和相关教程的链接为here

另一种可能性是离线多人游戏。

局域网中的本地多人游戏

您现在拥有基本的可以正常工作的多人游戏,您所要做的就是在LAN上发现该服务器即可执行此操作,您可以在网络中所有节点上广播服务器信息,每当客户端尝试搜索该服务器信息时,收到该信息,然后尝试连接到该IP地址。

请记住,您必须为此创建一个新的套接字,并在游戏以外的端口上运行该套接字。

在搜索帮助框中搜索IP类别

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

答案 1 :(得分:0)

我认为您在创建服务器时应使用“ 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 )