2014-04-14 2 views
0

게임 센터 턴 기반 매치 메이킹 인터페이스를 사용하면 많은 플레이어와 게임을 만들고 친구에게 초대하여 다른 사람과 함께 게임을 진행할 수 있습니다 자동 매칭을 위해.초대 된 사람과 자동 매치 플레이어가 섞여있는 GKTurnBasedMatch 만들기

나는 초대 된 사람과 자동 매치 플레이어 모두와 게임을 만들 때를 제외하고는 지금까지 잘 작동하는 게임 내 게임 제작 인터페이스를 만들고 있습니다.

GKMatchmaker에는 match가 존재하면 자동 대응 플레이어를 추가 할 수 있다고 생각되는 addPlayersToMatch 메소드가 있지만 GKTurnBasedMatch에는 동일한 메소드가 없습니다.

다음 코드는 잘 사용되는 코드입니다. 누구든지 얼마나 많은 자동 매치 플레이어를 추가하는지 알고 있다면 많은 도움이 될 것입니다!

- (GKMatchRequest *) buildMatchRequestWithFriends: (NSArray *) friendsList NumberOfPlayers: (NSInteger) numberOfPlayers 
{ 
    NSLog(@"TurnByTurnHelper.buildMatchRequestWithFriends"); 
    GKMatchRequest *request = [[GKMatchRequest alloc] init]; 
    NSArray *playersToInvite = [NSArray arrayWithArray:friendsList]; 
    request.playersToInvite = playersToInvite; 
    request.defaultNumberOfPlayers = numberOfPlayers + 1; 
    return request; 
} 

- (void) requestMatchWithFriends:(NSArray *) friendsList NumberOfPlayers: (NSInteger) numberOfPlayers{ 

    if (!_delegate) 
    { 
     NSLog(@"Error: Expected but did not find delegate"); 
     return; 
    } 

    GKMatchRequest *request = [self buildMatchRequestWithFriends:friendsList NumberOfPlayers: numberOfPlayers]; 

    [GKTurnBasedMatch findMatchForRequest: request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) 
    { 
     if (match){ 
      NSLog(@"findMatchForRequest: Success!"); 

      // Add match to matches 

     } else { 
      NSLog(@"error: %@", error); 

     } 
    }]; 
} 

답변

0

은 음, 주변 검색의 비트와 시험과 나는 애플 개발자 문서가 불완전 및/또는 오해의 소지가 있음을 발견했다. 다음 진술은 GKMatchRequest의 playersToInvite 속성 섹션에서 작성됩니다.

"속성 값이 0이 아닌 경우 요청을 사용하여 일치 항목을 만들면 Game Center는 해당 플레이어를 경기에 초대합니다. 가 완료되고 GKMatchRequest maxPlayers 및 minPlayers 속성이 무시됩니다. "

GKMatchmaker에는 해당되지만 GKTurnBasedMatch에는 해당되지 않습니다. GKTurnBasedMatch의 경우 playersToInvite 속성에 playerId 배열을 제공하면 maxPlayers 및 minPlayers 속성이 무시되지 않고 Game Center에서 추가 공간을 임의 플레이어로 채 웁니다.

- (GKMatchRequest *) buildMatchRequestWithFriends: (NSArray *) friendsList NumberOfPlayers: (NSInteger) numberOfPlayers 
{ 
    GKMatchRequest *request = [[GKMatchRequest alloc] init]; 
    NSArray *playersToInvite = [NSArray arrayWithArray:friendsList]; 

    if([friendsList count]<=0){ 
     request.minPlayers = 2; 
     request.maxPlayers = numberOfPlayers; 
     request.playersToInvite = nil; 
    } else { 
     request.minPlayers = 2; 
     request.maxPlayers = numberOfPlayers; 
     request.playersToInvite = playersToInvite; 
    } 

    return request; 
} 

을 그리고 그 이야기의 교훈은 다음과 같습니다 :

다음 코드는 트릭을 수행 때로는 RTFM하지 낫다!