私はアプリケーションストアを構築しています(既に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;
}
}
誰かがこれについて考えていますか?
CIV IVリファレンス用の小道具! –
ご回答いただきありがとうございます。私はこのようにして、それはうまく動作します。再度、感謝します。 – Roccapina