多人游戏的完全/半自主P2P网络有多可行?
我一直在研究如何创建一个用于玩多人游戏的P2P系统(比如BitTorrent是用于文件)。这个想法是从多人体系结构中删除传统的服务器。我知道某种服务器可能是启动通信和发送世界更新等所必需的,但我对如何减少服务器上的负载和带宽压力感兴趣。多人游戏的完全/半自主P2P网络有多可行?
顺便说一下,这适用于任何尺寸的游戏,从双人跳棋游戏直到30人以上的FPS。
我疯了吗?
我一直在想同样的事情。我有一个长期的偏见,分布式系统应该是分布式,不需要中央控制器。 MMO或类似游戏的问题是每个玩家都应该能够看到相同的“世界”。你最终会遇到类似于爱因斯坦 - 伊恩相对论和“同时性”的问题 - 你越离开你,对世界的看法就越不同。
一般来说,解决方案是您必须能够将信息传播到您的邻居中的其他客户端 - 在游戏中的空间,不一定是物理空间 - 足够快,以便更新对所有本地球员。
我怀疑答案是每个玩家都有一个“服务器”或世界模型,而不是在世界服务器中将玩家表示为向量。
我当然不是专家,但对我来说听起来有点疯狂。根据我的经验,由于带宽和性能,您需要专用的游戏服务器。通过P2P,你会失去这两件事。在我看来,P2P有一些好处。分发文件和研究是其中之一。但是,这两件事情不需要实时数据。如果你有某种大型多人游戏世界,那么你可以使用P2P来分发游戏文件,甚至可以卸载数字。
我会说有可能性,但它们的数量似乎有限,虽然潜在的强大。
最大的问题是没有带宽或延迟或分布对游戏状态的更改。最大的问题是信任。
如果我告诉你我杀了一个怪物,你如何确认我确实做到了?你如何确认我实际上是45级?你如何确认我不是在世界各地传送?请记住,您无法检查服务器是否有任何细节:这就是我们想要避免的!
你需要玩家看球员,甚至可以一起作弊。我真的怀疑有人会很快设计一个值得信赖的p2p MMO。
+1引用Ralph Koster,客户掌握在敌人手中。 – 2009-03-02 16:37:25
有你的问题要考虑很多事情:
1)分布式大师 - 谁开始游戏呢?我在哪里可以找到第一个节点?如果每个人都决定同时关闭他们的P2P客户端呢?世界终结了吗?
2)分配规则 - 谁可以确认玩家77中的77人在x,y,z中杀死了怪物?我看到BIG麻烦在黑客/欺骗与“主管命令”...
3)延迟 - 何时有一个客户端收到所有数据?如果互联网崩溃怎么办?或者在局域网游戏中,如果硬盘驱动器死了会如何 - 这会让所有人都感到疯狂吗?
我确实认为P2P思想很有趣,但在所有的比赛中,我相信我们需要一个能够处理规则的“裁判”,因为当你与“匿名人士”竞争时,那么它的“好吧欺骗“很多人认为。
我认为某种网格计算可能是实现它的方式,但是如果网格中的某些内容掉出来或者对于渲染世界和发回结果太慢,那么我们将整个游戏“滞后“... =每个人都可怕的游戏......这已经在许多带有主服务器的FPS游戏中看到了。如果网络协议不能很好地处理延迟,那么它会越来越难以击中正在运行的人,或者他们在无意中出现在你面前。
一个昂贵的解决方案可能是让“子服务器”(代理服务器 - 游戏服务器)的某些数据更靠近玩家。我相信这需要你能够访问世界各地的许多服务器群(正如暴雪用WOW所做的那样),否则你将不得不开发某种智能的“P2P主机”,当带宽达到后,它将自动升级到“subserver”足够大,足够多的玩家靠近它(总是检查从它的角度来看滞后......)...现在让我们说这是可能的......如果这个子服务器和全局主gameloop再次?
LOL ...这可以继续下去......这听起来越来越像与互联网一般的麻烦:-)
编码愉快...!
我认为这在理论上可能是可能的,但还有很长的路要走。
正如其他文章中指出的那样,通过只保证附近其他玩家的更新,延迟可以保持在较低水平。这已经在分布式游戏中进行了很多年。
通过让几个节点负责每个数据,可以将数据丢失保持在可接受的水平。
关于信任问题,可能有一个协议,玩家可以“挑战”另一个玩家发现作弊。即挑战者会复制其他玩家计算的一部分,并要求比较结果。已经有加密协议可以做这种事情,但我不知道细节或者它们在实践中是否可行。
真正的问题,因为我看到它是没有什么理由开发,如系统。成本会很高并增加复杂性,但游戏体验(产品)不会有显着改善。节省开支的活动必须比开支节省更多的钱才能生存。
@SkippyFire:像Starcraft和Age Of Empires这样的许多RTS游戏都是P2P,正是因为这样,它们比通过服务器的**性能更好!在性能方面,我指的是延迟(这些游戏的带宽非常小) – yairchu 2009-07-22 11:30:42