Ios 在使用GKSession进行对等时,如何获得精确的时钟同步?
我制作了一个简单的游戏,使用GameKit中的GKSession连接到其他同行。设置起来很容易,但我发现了一些问题:Ios 在使用GKSession进行对等时,如何获得精确的时钟同步?,ios,p2p,gamekit,bonjour,gksession,Ios,P2p,Gamekit,Bonjour,Gksession,我制作了一个简单的游戏,使用GameKit中的GKSession连接到其他同行。设置起来很容易,但我发现了一些问题: 延迟变化很大。有时信息会立即到达其他设备。有时,向其他对等方发送数据的延迟大于1秒。数据只是一个包含10个字符的字符串 我的游戏依赖于精确的时钟同步。这款游戏有音乐播放功能,当它没有在所有连接的设备上同时开始播放时,听起来很奇怪 我在文档中找不到任何关于如何调整时间的信息。问题是,启动游戏的“主”码头立即开始播放音乐,然后所有其他码头稍晚收到消息,因此延迟后开始播放 然后我尝
- 延迟变化很大。有时信息会立即到达其他设备。有时,向其他对等方发送数据的延迟大于1秒。数据只是一个包含10个字符的字符串
- 我的游戏依赖于精确的时钟同步。这款游戏有音乐播放功能,当它没有在所有连接的设备上同时开始播放时,听起来很奇怪
是否有一个开源框架可以使点对点和时钟同步在iOS上更可靠、更易于使用?不幸的是,你在这里受到了伤害。通过网络接口进行精确的时钟同步是非常困难的。您需要在20毫秒内将设备同步到 我建议执行以下操作:每隔50毫秒发送一组ping数据包,让客户端立即响应。取平均值得到平均往返时间(RTT),然后将其减半以估计单向延迟。然后发送您的“开始时钟”消息,并在一个循环中旋转,直到您等待了单向延迟,并开始播放您端的音乐。客户端应在收到“开始时钟”后立即播放其音乐
这里介绍了一个更强大的长期同步解决方案:以防将来有人看到这一点:Ableton为这个称为“链接”的库创建了一个很棒的(LGPLv2)库。如果我今天要推荐一个图书馆,我会推荐的。在iOS上,最精确的时钟同步方式是GPS。那不是你想要的。