2010-01-07 5 views
2

오랫동안이 웹 사이트를 사용하여 답변을 찾았으니 지금 스스로 질문해야합니다! :)GKPeerState 기존이 아닌 피어는 사용할 수 있습니까?

필자 피어를 사용하지 않고 GKSession 및 클라이언트/서버 방식을 사용하여 멀티 플레이어를 구현했습니다 (최대 4 명의 플레이어 허용).

나는 해결책을 찾지 못하는 하나의 큰 문제가 있습니다.

서버 피어를 빠르게 연결 해제했다가 다시 연결하면 클라이언트 피어가 해당 호스트를 "기억"하여 사용 가능한 모든 피어 목록에 영구적으로 표시하며 wifi/bluetooth를 끄면이 설정이 재설정됩니다.

이렇게 5 번 연속해서 실행하면 내 클라이언트는 동일한 이름의 사용 가능한 호스트 5 개를 표시합니다!

누구나이 경험이 있습니까? 해결 방법에 대한 아이디어가 있습니까?

내 게임에 대한 요구 사항은 GKSession이 두 가지 모두를 지원하므로 Bluetooth 용 iPhone SDK 3.0과 Wi-Fi 용 3.1이라는 점에 유의해야합니다.

답변

1

비슷한 문제가 있습니다. 사실 나는 이벤트를 통해 현재 게임을하고 있지 않은 동료를 나열합니다. 서버 역할을하지 않는 동료가 나열됩니다. 계속 진행되는 장면 뒤에 어떤 것이 있는지 궁금합니다.

시각적 피드백을 사용하여 연결 해제 진행 상황을 보여주기 위해 일종의 타이머를 구현하는 것이 이상적입니다. 일반적으로 연결/사용 가능 및 연결 해제/사용 불가능과 관련된 약간의 시간 지연이있는 것 같습니다. 이러한 시간 지연을 고려하여 인터페이스를 코딩하는 것이 더 나을지 모르겠다. 정확히 어떻게해야할지 모르겠다.

+1

한 가지 해결책은 서버/클라이언트 모드를 사용하지 않고 서버/클라이언트의 역할을 수행 할 수있는 피어 모드를 사용하는 것입니다. 이 경우에는 피어 문제의 캐싱이 없습니다. 내가 수정 한 방식은 같은 이름이 다시 나타나면 사용 가능한 서버 목록을로드 할 때 목록의 기존 서버 목록을 바꾼다는 것입니다. 나는 같은 동료의 성이 항상 "올바른"것을 발견했다. 물론 호스트를 사용할 수 없지만 여전히 사용할 수있는 경우 문제가 해결되지 않습니다. 피어 모드를 사용하지 않으면이 문제가 해결되지 않습니다. – Ernest

관련 문제