저는 (이미 앱 스토어에서 MotAMot이라고 부르는) 애플리케이션을 만들고 있습니다 : boggle, 무료 앱.GameKit : 누가 마스터입니까?
이 게임에서는 독립 실행 형, 동일한 iDevice를 사용하는 멀티 플레이어 및 2 명의 플레이어가 동시에 동일한 게임 보드를 사용하지만 각자 자신의 iDevices를 사용하는 다중 재생 모드를 제안합니다.
저는 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