首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iphone多人游戏设计

iphone多人游戏设计
EN

Stack Overflow用户
提问于 2011-01-12 21:58:57
回答 2查看 1.2K关注 0票数 4

我已经搜索和阅读了很多文章,并查看了GKTank apple示例(看不到关于我的问题的任何细节,似乎可以在事件发生时进行处理),但我看不到一个示例或教程可以回答以下问题

在通过蓝牙/互联网(也许)的多人游戏中,您如何同步玩家交互,以便在考虑延迟等因素的情况下出现正确的游戏结果。

例如:

在通过蓝牙连接的两个独立设备上,向每个玩家A和B显示一个按钮

玩家A按下按钮(玩家A正在托管游戏,因此延迟不是问题)玩家B在玩家A之前按下按钮,但他与玩家A的设备的连接至少有200ms的网络延迟

问题:游戏需要知道玩家B首先被按下,即使玩家A的触摸请求将首先到达游戏代码-即对主机玩家没有好处。

我知道触摸事件有时间戳,所以我可以确保按下的实际时间是从玩家B发送到游戏代码的……但不确定这是否是正确的方法,以及它是否是从那里开始的。

我希望答案就在某个游戏周期中,在游戏周期中,触摸不会立即处理,而是在游戏周期内处理……

任何关于这方面的帮助,或者指向教程或处理这一问题的特定源代码的指针都将不胜感激。

亚当

EN

回答 2

Stack Overflow用户

发布于 2011-01-12 23:05:31

你可能想在https://gamedev.stackexchange.com/上问这个问题,因为这是一个关于多人游戏延迟或延迟的一般性问题,并不是特定于iPhone的。

您可以使用时间戳对操作消息进行排序。我想iPhones和AT&T维护的日期时间服务器是同步的。

票数 2
EN

Stack Overflow用户

发布于 2011-01-12 23:05:53

嗯,我没有创建多人游戏的实际经验。但就像大多数游戏开发问题一样,我认为没有错或对,所以一些逻辑思维应该会起作用。

以下是你可能需要考虑的一些想法:

  • 即使在玩家A的设备上没有发生延迟,你也必须引入一些来补偿玩家B(反之亦然,因为从玩家B的角度来看,玩家A也是迟到的)
  • 因此,你需要引入某种“命令栈”来缓冲来自两个玩家的输入,并且一旦两个玩家都有机会为游戏时间
  • 中的给定点贡献他们的输入,就执行命令。你可能想引入ping命令来测量实际的等待时间。
  • 只有一个设备(主机)应该测量等待时间,并根据测量的等待时间将其通告给客户端
  • ,为堆栈中的命令计算时间偏移量(相对于主机时间)或延迟(使用等待时间将播放器B的时间戳转换为“本地”时间)如果可能,
  • 保持延迟动态,以补偿变化的等待时间(在整个会话期间保持测量等待时间如果实际等待时间达到峰值超过所计算的时间,则来自播放器B的命令可被延迟放到堆栈上-确保它们无论如何都将被执行)-在此point)
  • You'll实际上需要两个“层”-输入层,其交换、缓冲和同步实际输入,以及游戏层,其从输入层

接收延迟的命令

到目前为止,我的2美分;-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4669591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档