我正在使用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地址,
答案 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 )