我有一个游戏,使用Multipeer senddata每隔0.05秒在一个mutablearray中发送一个玩家位置x,position.y和角度。
NSMutableArray *Messagee = [[NSMutableArray alloc] initWithCapacity:10];
[Messagee addObject:x];
[Messagee addObject:y];
[Messagee addObject:ang];
NSData* Message = [NSKeyedArchiver archivedDataWithRootObject:Messagee];
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self.partyTime sendData:Message
withMode:MCSessionSendDataUnreliable
error:nil];
});
其他玩家使用
获取数据- (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID;
我遇到的问题是,didrecievedata被称为非常不规则,因为它应该每0.05秒调用一次(我每隔0.05秒发送一次数据)。
我在两个测试数据之间的延迟上升到0.20秒之间存在巨大差异,接着是下一个数据包的0.00001秒。
我需要0.05秒的常数didrecievedata等于来自其他玩家的senddata来同步玩家位置。
有没有办法在senddata和recievedata之间有一点延迟?例如Ping等于Ping?
我发送的数据(NSMutablearray)是否为big - >延迟
我应该使用Streams吗?
非常感谢!
答案 0 :(得分:0)
通过开放网络发送的任何内容都会遇到不规则的延迟,具体取决于网络的繁忙程度以及有多少干扰。这是你需要处理的事情。
通常有两种方法可以用来处理,选择最适合您应用的方法:
在任何一种情况下,您都需要为丢弃的消息做好准备。