1

我正在为 iPhone 和 iPad 开发一款 3D 蓝牙多人游戏,而不使用任何游戏引擎。我正在使用 GKSession 类使用对等模式通过蓝牙在设备之间发送数据。如果我继续玩游戏一段时间没有性能下降问题,但是当我断开连接(即使没有退出游戏)并通过蓝牙游戏模式重新连接游戏时,我将面临性能下降(游戏延迟)问题.

我尝试分析我的代码(当游戏延迟时),发现数据包需要更多时间(大约 10 毫秒)才能传输到另一个设备,而当游戏运行时没有延迟时通常需要 2 毫秒。

我有三个问题:

  1. 我假设数据传输时间的增加可能是导致延迟问题的原因。如果是,如何解决此类问题?

  2. 我正在分别在 iOS 7 和 8 上运行的 iPad 和 iPhone 上测试我的游戏。由于 iOS 7 已弃用 GKSession,这会影响游戏性能吗?

  3. 代码的其他部分是否会导致此类性能问题?

我将不胜感激有关此问题的任何建议。先感谢您。

代码片段:

断开两个设备的代码

     if(session!=nil)
        {
            [session disconnectFromAllPeers];
            [session setAvailable:NO];
            [session setDataReceiveHandler:NULL withContext:NULL];
            session.delegate = nil;
            [session release];
       } 
  1. 创建会话的代码

    (GKSession *) peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type {

    session = [[GKSession alloc] initWithSessionID:@"XYZ" displayName:nil sessionMode:GKSessionModePeer];
    session.delegate = self;
    session.available = YES;
    return session;
    

    }

  2. 头文件中会话的定义

    @property (nonatomic, 保留) GKSession *session;

4

0 回答 0