首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在与GKSession进行对等时获得精确的时钟同步?

如何在与GKSession进行对等时获得精确的时钟同步?
EN

Stack Overflow用户
提问于 2012-11-18 12:26:23
回答 1查看 944关注 0票数 2

我制作了一个简单的游戏,使用GKSession从GameKit连接到其他同行。设置起来很容易,但我发现了一些问题:

  • 延迟变化很大。有时信息会在其他设备上即时到达。有时,向其他对等点发送数据的延迟时间超过1秒。数据只是一个具有10个字符的字符串。
  • 我的游戏依赖于精确的时钟同步。这个游戏有音乐播放,当它不开始在所有连接的设备上同时播放的时候,听起来很奇怪。

我在文档中找不到任何关于如何对时间进行渲染的东西。问题是,开始游戏的“主人”码头会立即开始播放音乐,然后所有其他码头的人都会在稍晚一点才收到消息,因此在延迟后开始播放。

然后,我试图延迟播放游戏音乐后,发送开始信息给所有码头,但有时延迟较低或更高,我只是无法得到一个良好的可靠同步。

是否有一个开放源码框架,使对等同步和时钟同步在iOS上更可靠和更容易使用?

EN

回答 1

Stack Overflow用户

发布于 2012-12-05 01:54:55

不幸的是,你在这里受到了巨大的伤害。在网络接口上进行精确的时钟同步是非常困难的。你需要你的设备同步到20毫秒以内。

我建议这样做:每隔50 at发送一串ping数据包,使客户端立即响应。取其平均值给出平均往返时间(RTT),然后将其减半以估计单程延迟。然后发送你的‘开始时钟’信息,并在一个循环中旋转,直到你已经等待你的单向延迟,并开始在你的一端播放音乐。客户应在收到“启动时钟”后立即播放其音乐。

这里有一个更健壮的长期同步解决方案:Protocol

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

https://stackoverflow.com/questions/13440064

复制
相关文章

相似问题

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