2011-03-30 3 views
1

GameCenter를 사용하는 iPhone 응용 프로그램을 개발했습니다. 내 게임의 여러 단계를 지원하기 위해 playerGroup을 GKMatchRequest 클래스로 설정했습니다. 자동 일치 만들기 프로세스에 의해 일치 항목이 시작된 경우 두 사용자는 모두 playerGroup을 알고 있지만 초대 프로세스가 사용되면 초대 대상자는 playerGroup을 알 수 없습니다. iPhone GameCenter 초대와 함께 playerGroup

나는

[viewController matchRequest].playerGroup

을 사용하여 방법

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match 

내 playerGroup을 읽으려고하지만, 속성 playerGroup은 항상 0 대신 바로 플레이어 그룹을 반환합니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까? 올바른 레벨을로드하려면 playerGroup을 알아야합니다.

는 당신의 도움을 주셔서 대단히 감사합니다

답변

1

지금까지 내가 아는 한, 이것은 게임 센터의 제한에 내장되어 있습니다. 나는 그것에 대해 고심하고 있으며, 사과 없이는 devforums를 포함한 여러 포럼에 질문하지 않았다. 나는 애플에게 버그 리포트를 작성했고, 당신도 똑같이 할 것을 제안한다.

플레이어가 선택할 수있는 여러 가지 규칙 세트가있는 내 게임의 해결 방법과 멀티 플레이어 게임에서 동일한 규칙을 공유해야하는 플레이어의 경우 게임이 실제로 시작된 후 "다시 확인"을합니다. 모든 사람이 동일한 규칙을 따르는 지 확인하십시오. 누군가가 초대를 받았고 잘못된 규칙을 사용하고있는 경우에 대비해.

내가 무슨 짓인가, 바로 (당신이 GKMatchMakerViewControllerDelegatedidFindMatch 방법 모두에서과 경기 감지합니다 : 플레이어 : didChangeState : GKMatchDelegate에서) 게임 시작과 같이 내가하자 플레이어는 게임에 참가한 다음 사용하는 규칙이 포함 된 패키지를 다른 모든 플레이어에게 보냅니다. 이 데이터를 받으면 자신의 규칙과 일치시키고 잘못된 규칙을 사용하는 사람은 경고를하고 연결을 끊습니다.

그것은 약간 못 생겼고, 초대에 의해 초기화 될 때 GKMatchMakerViewController에 대한 GKMatchRequest를 설정하는 방법을 애플이 구현해야한다는 것이 분명합니다. 하지만 적어도 작동합니다.

1

동일한 문제가 발생했습니다. 이 문제를 해결하려면 GKMatch 객체를 통해 모든 관련 게임 맞춤 정보와 함께 악수를 보내고 있습니다. 핸드 셰이크가 실패하지 않도록 GKMatchSendDataReliable DataMode로 데이터를 보냅니다.

모든 정보가 클라이언트에 의해 수집 된 후 실제 게임 논리가 작성되고 시작됩니다.

+1

OP를 돕기위한 몇 가지 코드가 있습니까? – dove

0

플레이어 그룹에서 이와 같이 일치 요청을 확인할 수 있습니다.

func player(player: GKPlayer, didAcceptInvite inviteToAccept: GKInvite) { 
    if inviteToAccept.playerGroup == 0 || inviteToAccept.playerGroup == myPlayerGroup { 
     inviteAccepted() 
    } 
    else { 
     // TO SOMETHING 
     myPlayerGroup = inviteToAccept.playerGroup 
     inviteAccepted() 
    } 
관련 문제