蓝牙多人游戏延迟问题

时间:2015-08-14 05:16:18

标签: ios iphone bluetooth multiplayer gksession

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

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

我有三个问题:

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

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

  3. 代码的其他任何部分是否会导致此类性能问题?
  4. 我很感激有关这个问题的任何建议。提前谢谢。

    代码段:

    断开两台设备的代码

         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(非原子,保留)GKSession *会话;

0 个答案:

没有答案