关于网络:处理网络游戏中的延迟

关于网络:处理网络游戏中的延迟

Dealing with Latency in Networked Games

我正在考虑制作网络游戏。我对此并不陌生,并且已经遇到了很多问题,试图为航位推测和网络延迟制定一个好的计划,因此,我很乐意看到一些有关该主题的好文献。我将描述我考虑过的方法。

最初,我只是将玩家的输入发送到服务器,然后在服务器上进行模拟,然后将游戏状态的变化广播给所有玩家。这使作弊变得困难,但是在高延迟情况下,事情很难控制,因为您不会立即看到自己的操作结果。

这篇GamaSutra文章提供了一种解决方案,该解决方案可以节省带宽并通过在客户端上进行模拟来使本地输入看起来更平滑,但是似乎使防骗措施显得格格不入。另外,我不确定当玩家开始操纵环境,推开石头之类的东西时该怎么办。这些以前中立的对象将暂时成为客户端需要发送PDU的对象,或者可能有多个播放器一次执行。谁的PDU会获胜?什么时候将停止对每个玩家进行双重跟踪(以与推算得出的版本进行比较)?天堂禁止两名玩家进行相扑比赛(例如开始互相推手)。

此gamedev.net位显示gamasutra解决方案不够充分,但描述了一种其他方法,该方法并不能真正解决我的协作式巨石推挤示例。我发现的大多数其他东西都是针对射手的。我希望看到更适合像SNES Zelda这样玩的游戏,但涉及更多的物理/动量。

  • 注意:我在这里不是关于物理模拟的问题-其他库已经介绍了。尽管存在网络延迟,但使游戏流畅且反应灵敏的只是策略。

查看Valve在源引擎中的工作方式:http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

如果是第一人称射击游戏,您可能必须深入研究他们提到的一些主题,例如:预测,补偿和插值。


n


n


n


在XNA Creator's Club网站上查看网络教育主题。它深入研究了诸如网络体系结构(对等或客户端/服务器),网络预测以及其他一些内容(当然在XNA的背景下)的主题。这可以帮助您找到所需的答案。

http://creators.xna.com/education/catalog/?contenttype=0


推荐阅读