我一直在考虑如何创建用于玩多人游戏的P2P系统(如BitTorrent用于文件)。我们的想法是从多人游戏架构中删除传统服务器。我知道启动通信和发送世界更新等可能需要某种服务器,但我对如何减少服务器上的负载和带宽压力感兴趣。
顺便说一句,这适用于任何规模的游戏,从两个玩家的跳棋游戏到拥有30多个玩家的FPS。
我疯了吗?
答案 0 :(得分:9)
最大的问题不是带宽或延迟或分配对游戏状态的改变。最大的问题是信任。
如果我告诉你我杀死了一个怪物,你如何证实我确实做到了?你怎么验证我实际上是45级?你如何证实我不是传送到世界各地?请记住,您无法检查服务器是否有任何细节:这就是我们要避免的事情!
你需要玩家观看玩家,即便如此,他们也可能共同作弊。我真的怀疑任何人都会很快设计出值得信赖的p2p MMO。
答案 1 :(得分:1)
我一直在考虑同样的事情。我有一个长期的偏见,即分布式系统应该分布式,而不需要中央控制器。 MMO或类似游戏的问题在于每个玩家都应该能够看到相同的“世界”。你最终会遇到类似于爱因斯坦 - 伊恩相对论和“同时性”的问题 - 你越远,你对世界的看法就越不同。
一般来说,解决方案是您必须能够将信息传播到您附近的其他客户端 - 在游戏玩家空间,不一定是物理空间 - 足够快,以便更新同时出现在所有本地播放器。
我怀疑答案是每个玩家都有一个“服务器”或世界模型,而不是将玩家表示为世界服务器中的向量。
答案 2 :(得分:1)
您的问题需要考虑很多事项:
1)分布式大师 - 谁开始游戏呢?我在哪里可以找到第一个节点?如果每个人都决定同时关闭他们的P2P客户端怎么办?世界会结束吗?
2)分配规则 - 谁可以确认102235中的玩家77杀死了x,y,z的怪物?我看到黑客/作弊中的大麻烦而没有“主管”......
3)延迟 - 客户什么时候收到所有数据?如果互联网崩溃怎么办?或者在局域网游戏中,如果硬盘驱动器死了怎么办 - 对于其他人来说这会让游戏变得疯狂吗?
我确实认为P2P思想很有意思,但在所有比赛中,我相信我们需要一个能够处理规则的“判断者”,因为当你与“匿名人士”竞争时,那么“可以作弊“很多人认为。
我认为某种类型的网格计算可能是这样做的方式,但同样,如果网格中的某些网格掉线或者太慢而无法渲染世界并将结果发回...那么我们整个游戏都会“落后” “... =每个人的糟糕游戏......这已经在许多带有主服务器的FPS游戏中看到了。如果网络协议不能很好地处理延迟,那么它就会越来越难以击中一个人,或者他们突然出现在你面前。
一个昂贵的解决方案可能是拥有“子服务器”(代理游戏服务器),其中你有一些数据更接近玩家。我相信这需要你能够访问世界各地的许多服务器厂(正如暴雪对WOW所做的那样),否则你将不得不发明某种智能“P2P主机”,当有带宽时,它将自己升级为“子服务器”。足够大,足够的玩家接近它(从它的角度来看总是检查滞后......)...现在让我们说这是可能的......如果这个子服务器和主游戏环之间的线被打破怎么办?再次?
大声笑......这可能会继续下去......听起来越来越像互联网的一般问题: - )快乐的编码......!
答案 3 :(得分:0)
我当然不是专家,但对我来说听起来有点疯狂。根据我的经验,由于带宽和性能,您需要专用的游戏服务器。使用P2P,你将失去这两件事。在我看来,P2P对一些事情有好处。其中包括分发文件和研究。但是,这两件事不需要实时数据。如果你有某种大型多人游戏世界,那么你可能会使用P2P来分发游戏文件,甚至可能会卸载数字运算。
我想说有可能,但它们的数量似乎有限,尽管可能很强大。
答案 4 :(得分:0)
我认为这在理论上可能是可能的,但它还有很长的路要走。
正如其他帖子中所述,只需保证对附近其他玩家的更新,延迟可以保持较低。这已经在分布式游戏中进行了多年。
通过让几个节点负责每个数据,数据丢失可以保持在可容忍的水平。
关于信任问题,可能会有一个协议,玩家可以“挑战”另一个玩家发现作弊行为。即挑战者会复制其他玩家计算的某些部分并要求比较结果。已经有加密协议可以做这种事情,但我不知道细节或它们在实践中是否可行。
我认为真正的问题是没有理由开发系统等。成本会很高并增加复杂性,但游戏体验(产品)不会得到显着改善。节约金钱的活动必须比成本节省更多的钱才能生存。