3

我一直在考虑如何创建一个用于玩多人游戏的 P2P 系统(例如 BitTorrent 用于文件)。这个想法是从多人游戏架构中删除传统服务器。我知道启动通信和发送世界更新等可能需要某种服务器,但我对如何减少服务器上的负载和带宽压力很感兴趣。

顺便说一句,这适用于任何规模的游戏,从两人跳棋游戏到 30 多人的 FPS。

我疯了吗?

4

5 回答 5

9

最大的问题不是带宽或延迟或将更改分布到游戏状态。最大的问题是信任。

如果我告诉你我杀了一个怪物,你如何确认我真的做到了?你如何验证我实际上是 45 级?你如何确认我没有在世界各地传送?请记住,您无法检查服务器的每一个小细节:这就是我们试图避免的!

你需要玩家观察玩家,即使那样他们也可能会一起作弊。我真的怀疑有人会很快设计出值得信赖的 p2p MMO。

于 2009-02-28T02:08:36.577 回答
1

我一直在考虑同样的事情。我长期以来一直认为分布式系统应该是分布式的,不需要中央控制器。MMO 或类似游戏的问题是每个玩家都应该能够看到相同的“世界”。你最终会遇到一个类似于爱因斯坦的相对论和“同时性”的问题——你离得越远,你对世界的看法就越不同。

一般来说,解决方案是您必须能够将信息传播到您附近的其他客户端——在游戏内空间,不一定是物理空间——足够快,以使所有本地玩家同时显示更新。

我怀疑答案是每个玩家都有一个“服务器”或世界模型,而不是将玩家表示为世界服务器中的向量。

于 2009-02-28T01:54:15.473 回答
1

在你的问题中有很多事情需要考虑:

1) 分布式大师 - 那么谁开始游戏呢?我在哪里可以找到第一个节点?如果每个人都决定同时关闭他们的 P2P 客户端怎么办?世界末日了吗?

2) 分布式规则——谁能确认 102235 中的 77 号玩家在 x,y,z 处杀死了一个怪物?在没有“总司令”的情况下,我看到黑客/作弊的大麻烦......

3) 延迟 - 客户端何时收到所有数据?如果互联网出现故障怎么办?或者在局域网游戏中,如果硬盘死了怎么办——这会让其他人疯狂吗?

我确实相信 P2P 的思想很有趣,但是就像在所有比赛中一样,我相信我们将需要一个能够处理规则的“裁判”,因为当你与“匿名者”比赛时,那么“可以作弊”a很多认为。

我认为某种网格计算可能是做到这一点的方法,但同样,如果网格中的一些掉出来或者渲染世界和发送结果太慢......那么我们整个游戏“滞后”...... . = 对每个人来说都是糟糕的游戏……这已经在许多带有主服务器的 FPS 游戏中看到了。如果网络协议不能很好地处理延迟,那么它会越来越难撞到一个正在跑步的人,或者他们会突然出现在向你开枪。

一个昂贵的解决方案可能是拥有“子服务器”(代理游戏服务器),您可以在其中拥有一些更接近玩家的数据。我相信这需要你访问世界各地的许多服务器群(就像暴雪对 WOW 所做的那样),或者你必须发明某种智能的“P2P 主机”,当带宽达到时,它会将自身升级为“子服务器”足够大,足够多的玩家接近它(总是从它的角度检查滞后......)......现在可以说这是可能的......如果这个子服务器和全球主要游戏循环之间的界限被打破怎么办再次?

大声笑......这可能会继续......这听起来越来越像互联网的一般问题:-)

快乐的编码......!

于 2009-08-19T11:47:40.840 回答
0

我当然不是专家,但对我来说这听起来有点疯狂。根据我的经验,由于带宽和性能,您需要专用的游戏服务器。使用 P2P,您将失去这两样东西。在我看来,P2P 有一些好处。其中包括分发文件和研究。但是,这两件事不需要实时数据。如果你有某种大型多人游戏世界,那么你可能会使用 P2P 来分发游戏文件,甚至可以卸载数字运算。

我会说有一些可能性,但它们的数量似乎有限,尽管可能很强大。

于 2009-02-28T01:32:58.597 回答
0

我认为这在理论上可能是可能的,但还有很长的路要走。

正如在其他帖子中所指出的,仅通过保证对附近的其他玩家进行更新,可以将延迟保持在较低水平。这在分布式游戏中已经做了很多年。

通过让多个节点负责每条数据,可以将数据丢失保持在可容忍的水平。

关于信任问题,有可能有一个协议,一个玩家可以“挑战”另一个玩家来揭露作弊行为。即挑战者将复制其他玩家计算的某些部分并要求比较结果。已经有加密协议可以做这种事情,但我不知道细节或者它们在实践中是否可行。

在我看来,真正的问题是几乎没有理由开发这样的系统。成本会很高并增加复杂性,但游戏体验(产品)不会显着改善。一项省钱的活动必须节省比成本更多的钱才能可行。

于 2009-08-19T12:07:07.697 回答