我试图制作一个简单的多人(P2P)棋盘游戏,通过互联网连接玩家。到目前为止,我研究过的唯一网络应用程序只能通过HTTP与永久web服务器通信。
经过一些初步的阅读,我了解到现在大多数设备都受到NAT的影响,这使得P2P连接很难建立。我读过两种绕过NAT障碍的方法:
我还没有深入研究细节,但似乎NAT穿插要求我建立一个永久的婚介服务器(我怀疑这是在我的预算范围内),并管理它(我没有经验)。UPnP似乎是该走的路。
你说我的评估是准确的吗?还有其他选择吗?在设计/实现我的游戏之前,还有什么我应该考虑的吗?
(我计划用Qt编写我的游戏,以支持多种平台。有人使用http://www.mayaposch.com/uds.php库制作了一个MiniUPnPc,所以我正在考虑研究这个实现)
发布于 2013-12-18 16:45:29
为了避免这一问题,您可以做的一件事就是要求最终用户制作应用服务器的本地版本,并转发端口本身。只要给他们一个选项,要么“创建游戏”,要么“加入游戏”,如果他们创建一个游戏,让他们指定他们想要运行它的端口。那么他们的责任就是确保港口是开放的。
尽管如此,我最近使用Unity3d建立了一个婚介风格的网络游戏,我可以评论如何在这个框架内建立一个匹配服务器。
这个过程有两个部分,MasterServer和调解人,其中MasterServer只保存所有与游戏相关的信息,调解人处理到服务器的传入连接。
因为MasterServer/调解人只处理连接信息,所以它们是相当轻的进程,如果您不介意随时离开您的计算机,您就可以在您的主计算机上运行它们。
一旦你启动并运行,它就会自我调节。无论如何,它并不比运行标准的web服务器更困难。
我还没有探索过使用Internet设备来处理网络问题,但是看看wiki for it (协议),看起来自动处理NAT穿孔是一件神奇的事情。我对这个方法几乎没有做过什么研究,但是看起来它可能是必须安装在客户端的东西,我觉得这不是你想要的。如果你想办法使它按照你想要的方式运作,请告诉我,我很想看到它付诸行动。
https://stackoverflow.com/questions/20028785
复制相似问题