P2P网络游戏/应用程序:一个“battle.net”好样的选择匹配服务器(P2P network

2019-07-30 14:26发布

我在做一个网络游戏(1V1),其中在游戏中的P2P - 无需游戏服务器。

然而,让玩家能够“找到对方”,而不需要另一种介质中,以协调和输入IP地址(类似于网络游戏的调制解调器天),我需要有一个协调/匹配的服务器。

我不能使用常规的网络托管,因为:

  • 客户端将在UDP通信。
  • 因此,我需要做的UDP打孔,以便能够经过NAT
  • 这将需要服务器在UDP说话,知道客户端的IP和端口
  • 据我所知与普通虚拟主机(PHP /等),我只能拿到客户端的IP地址,并且只能在TCP(HTTP)进行通信。

选项我目前考虑:

  • 使用托管解决方案,我的计划可以接受UDP连接。 (任何建议?)

  • UDPonNAT似乎要做到这一点,但使用的GTalk,并要求每一个客户对此有一个GTalk的帐户(这可能使得它不适合的解决方案)

有任何想法吗? 谢谢 :)

Answer 1:

首先,让我说,这是很好了我的专业境界,但我发现自己非常感兴趣,所以我一直在做一些搜索和阅读。

看来,对于UDP NAT穿越最常用的解决方案是使用一个STUN服务器。 我做了一些快速搜索,看是否存在将只是直线上升为您提供STUN托管解决方案的任何公司,但如果有,即使是有,他们被埋在简单的虚拟主机的广告桩。

幸运的是,似乎有几个STUN服务器是已经投入运行,并免费供市民使用。 有一个在公共STUN服务器的列表voip-info.org 。

此外,还有很多,如果你探索可拿更多信息SO标记为“NAT”的问题 。



Answer 2:

我没有看到任何其他的选择,而不是在运行代码的专用服务器。 你提出的其他解决方案,应当说,达不到最佳。

如果你从小做起,虚拟主机会被罚款。 成本是相当小。



Answer 3:

而不是一个全面的专用服务器,你可以只得到一个廉价的共享主机服务,并让应用程序接口与PHP页面,该页面与一个MySQL数据库后端转接口。

例如, Lunarpages的具有$ 3 /月起动机包,其中包含的空间和带宽的50GB 5GB。 对于一些这个简单,这就是你应该需要。

然后你只需要你的应用程序轮询的游戏列表中的网页,并以自己的游戏添加到列表中提交一个POST请求。

当然,这种方法需要学习PHP和MySQL,如果你还不知道他们。 如果你这样做是正确的,你可以有PHP页面进入一种无限循环,以保持连接打开,只是给您的客户端,而不是投票的页面每隔几秒钟,浪费了大量的带宽。 这是这个答案虽然范围之外的方式。

哦,如果你正在寻找一个免费的PHP主机东西完全免费的,搜索。 那些存在呢! 即使有广告支持的主机,你的应用程序可能只是抓住页面,当您分析的游戏列表忽略广告。 我知道, T35曾经是我的最爱之一,因为他们的自由计划不跟踪空间或带宽(它限制了每个文件的大小,以消除被用来作为一个媒体分享他们的服务,但它不应该是一个问题对于PHP文件)。 但当然,我认为从长远来看,你会更好使用付费主机去。

编辑:T35还写着“免费主机允许1个域被托管,而支付提供了无限的域名托管。” 所以,你甚至可以只支付了一个域名,并将其链接到他们! 我认为在短期内,这是你最好的(最便宜)的赌注。 当然,这一切都是假设你知道或者愿意学习PHP才能做到这一点。 :)



Answer 4:

没有什么,每一个网络连接的支持。 STUN可能是好的,UPnP的可连续工作这一点。

然而,据传言,大多数防火墙可以被引诱通过UDP端口53(DNS)来传递几乎所有的东西。 你可能有虽然有关于您访问​​该端口的OS争论。

此外,检查出SIP ,它的另一个协议,专为这样的事情。 随着VoIP的普及,有可能在多个防火墙这个体面的内置支持。

如果你真的致力于UDP,您也可以考虑它隧道通过HTTP。



Answer 5:

你怎么样把问题分解成两个部分 - 让游戏匹配的客户端(即从游戏不同),可以通过HTTP进行通信,以你的便宜/共享的虚拟主机。 谁愿意利用游戏匹配功能的所有玩家使用。 游戏客户端匹配然后启动与获得来自服务器的信息后,正确的参数(IP,等等等等),实际的游戏。

那么游戏将使用标准的方式来UDP冲通NAT,等等等等,按您的网络代码。 该游戏其实不需要了解的匹配客户端或服务器匹配任何东西 - 在P2P真正意义上的(如山洪,一旦你能获得你的同行的IP地址,您甚至可以从跟踪器断开)。

这样一来,你的问题变得更小。



Answer 6:

托管自己的专用服务器和严格的P2P网络环境之间的中间解决方案是Gnutella的模型。 在该模型中,存在像本地服务器,具有公知的IP地址和连接到(并且因此具有的知识)更多的客户比典型的对等体的超级同层 。 这仍然需要你运行至少一个超级自己,但它给你让其他人经营自己的超级同的选项。



文章来源: P2P network games/apps: Good choice for a “battle.net”-like matching server