我正在为iPhone和iPad开发3D蓝牙多人游戏而不使用任何游戏引擎。我正在使用GKSession类通过蓝牙使用点对点模式在设备之间发送数据。如果我继续玩游戏一段时间没有性能下降问题,但当我断开连接(即使没有退出游戏)并通过蓝牙游戏模式再次重新连接游戏,那么我面临性能下降(游戏延迟)问题
我尝试分析我的代码(当游戏滞后时),并发现数据包需要更多时间(大约10毫秒)才能传输到另一台设备,当游戏运行时没有延迟通常需要2毫秒。
我有三个问题:
我假设数据传输时间的增加可能是滞后问题的原因。如果是,如何解决此类问题?
我正在分别在iOS 7和8上运行的iPad和iPhone上测试我的游戏。由于GKSession已被iOS 7弃用,这是否会影响游戏性能?
我很感激有关这个问题的任何建议。提前谢谢。
代码段:
断开两台设备的代码
if(session!=nil)
{
[session disconnectFromAllPeers];
[session setAvailable:NO];
[session setDataReceiveHandler:NULL withContext:NULL];
session.delegate = nil;
[session release];
}
创建会话的代码
(GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type {
session = [[GKSession alloc] initWithSessionID:@"XYZ" displayName:nil sessionMode:GKSessionModePeer];
session.delegate = self;
session.available = YES;
return session;
}
头文件中会话的定义
@property(非原子,保留)GKSession *会话;