在线P2P游戏:在没有配对服务器的PC之间建立连接

时间:2013-11-17 08:36:40

标签: p2p nat upnp

我试图创建一个简单的多人(P2P)棋盘游戏,通过互联网连接玩家。到目前为止,我所使用的唯一网络应用程序只能通过HTTP与永久Web服务器进行通信。

经过初步阅读后,我了解到大多数设备现在都受到NAT的限制,这使得P2P连接难以建立。我已经阅读了关于NAT障碍的两种方法:

  1. 设置中央服务器以方便NAT穿越。
  2. 使用Internet网关设备(来自UPnP)进行自动端口转发。
  3. 我还没有仔细研究细节,但似乎NAT穿透要求我建立一个永久性的配对服务器(我怀疑是在我的预算范围内)并管理它(我没有经验)在)。 UPnP似乎是要走的路。

    您是否认为我的评估准确无误?还有其他选择吗?在设计/实施我的游戏之前还有什么需要考虑的吗?

    (我打算用Qt编写我的游戏,以支持多个平台。有人使用MiniUPnPc库制作了Qt-based P2P file sharer,所以我正在考虑研究这个实现)

1 个答案:

答案 0 :(得分:1)

您可以做的一件事就是要求最终用户制作应用服务器的本地版本并自行转发端口。只要给他们一个“创建游戏”或“加入游戏”的选项,如果他们创建游戏,他们就会指定他们想要运行它的端口。那么他们有责任确保港口是开放的。

话虽如此,我最近使用Unity3d设置了一个配对风格的网络游戏,我可以评论在该框架内设置配对服务器。

进程有两个部分,即MasterServer和Facilitator,MasterServer只保存所有与游戏相关的信息,Facilitator处理与服务器的传入连接。

因为MasterServer / Facilitator只处理连接信息,所以它们的处理速度相当轻,如果您不介意一直打开机器,您可以在家用机器的后台运行它们。

一旦你启动并运行,它几乎可以自我调节。无论如何,这并不比运行标准的Web服务器困难。

我没有探索使用Internet网关设备来处理网络,但是查看它的wiki(http://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol),看起来自动处理NAT穿孔只是一件神奇的事情。我对这种方法做了很少甚至没有研究,但看起来它可能是必须在客户端安装的东西,我觉得这不是你想要的。如果你找到一种方法让它以你想要的方式工作,请告诉我;我很想看到它在行动。