2011-12-22 4 views
2

私はアプリケーションストアを構築しています(既にMotAMotと呼ばれているApp Storeにあります)。GameKit:誰がマスターですか?

このゲームでは、スタンドアロン、同じiDeviceを使用するマルチプレーヤー、2人のプレイヤーが同じゲームボードを同時に使用するが、それぞれが自分のiDevicesを使用するMULTIを提案しています。

私はGKPeerPickerControllerインスタンスを使用して2つのデバイス間の接続を管理しています。

私の唯一の懸念は、誰がiPhoneをサーバーの役割を果たすのか、誰がクライアントなのかを決めることができないことです。プレーヤーが相手に招待状を送ると、そのプレイヤーはサーバーになると決められます。

たとえば、プレイヤー1がプレイヤー2にゲームに参加するように招待しているとします。しかし同時に(またはわずか数秒後)、プレーヤー2は、自分の機器に招待ポップアップが表示される前にプレーヤー1を招待します。私の質問:プレーヤー1が最初にプレーヤー2を招待したことを確認するにはどうすればいいですか?(またはその反対)?もちろん、私はGKPeerPickerControllerDelegateプロトコルを実装しているので、いくつかのコールバックがあります。しかし、私は両方のデバイスで、誰が実際に接続を開始しても同じメッセージを受け取っているようです。

// New connection 
- (void)peerPickerController:(GKPeerPickerController *)picker 
      didConnectPeer:(NSString *)peer 
       toSession:(GKSession *)session 
{ 
    // Set the session 
    [self setCurrentSession:session]; 

    // I'm implementing the GKSessionDelegate protocol 
    [session setDelegate:self]; 

// I'll handle any received data from my enemy 
    [session setDataReceiveHandler:self withContext:nil]; 

// I'm cleaning the room 
    [myPicker setDelegate:nil]; 
    [myPicker dismiss]; 
    [myPicker autorelease]; 
    myPicker = nil; 
} 


// A peer changed its state 
- (void)session:(GKSession *)session peer:(NSString *)peer didChangeState: (GKPeerConnectionState)state 
{ 
    switch (state) 
    { 
     case GKPeerStateConnected: 
      [self peerConnected:peer]; 
      break; 
     case GKPeerStateDisconnected: 
      // Libération de la session 
      [currentSession release]; 
      currentSession = nil;    
      break; 
     case GKPeerStateAvailable: 
      break; 
     case GKPeerStateConnecting: 
      break; 
     case GKPeerStateUnavailable: 
      break; 
    } 
} 

誰かがこれについて考えていますか?

答えて

2

なぜこれを古風な方法で解決できないのですか?たとえばCivilization IVではサーバルームの画面が表示されます。この場合、クライアントを待っているサーバであり、新しい接続を受け入れないと意味があります。

私はそれに似たようなことをします。 this personに問題があり(やや関連している)、私の理解では同様の方法で解決されています。

+1

CIV IVリファレンス用の小道具! –

+0

ご回答いただきありがとうございます。私はこのようにして、それはうまく動作します。再度、感謝します。 – Roccapina

関連する問題