스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Game Center의 규칙 기반 플레이어 매칭 살펴보기
새로운 규칙 기반 플레이어 매칭 기능을 실시간 멀티플레이어 게임에 적용하는 방법을 알아보세요. 유연한 맞춤형 플레이어 매칭을 통해 플레이어 매칭의 품질을 향상하고 모든 플레이어에게 더욱 재미있고 매력적인 경험을 제공할 수 있는 방법을 확인해 보세요.
리소스
- App Store Connect API
- Generating JSON Web Tokens for API requests
- Matchmaking rules
- Metrics
- Python script to test your matchmaking rules using the App Store Connect API
관련 비디오
Tech Talks
-
다운로드
안녕하세요 저는 Philip Smith입니다 Game Center Services 팀의 엔지니어입니다
이 세션에서는 Game Center의 새로운 규칙 기반 플레이어 매칭 기능을 소개합니다
이 기능은 게임에 맞춤화된 플레이어 매칭 기능을 제공하여 매칭 품질을 향상하고 참여도가 높고 공정한 게이밍 경험을 선사합니다
먼저 실시간 멀티플레이어 게임에서 상대 플레이어를 찾고 연결하는 데 사용되는 Game Center 플레이어 매칭 기능에 대해 개괄적으로 설명하겠습니다 그 다음 규칙 기반 플레이어 매칭을 설정하는 방법을 설명하겠습니다
시작하겠습니다
매칭은 플레이어에게 재밌는 경험을 선사하고 참여도를 높이기 위해 매우 중요합니다 플레이어의 참여도가 높다면 게임 유지율을 높일 수 있을 것입니다
플레이어 매칭 사용 사례는 게임마다 다르고 그 수가 많습니다
플레이어가 규칙을 직접 설정하는 자체 게임 모드를 지원하여 개인화된 게이밍 경험을 제공하고자 하거나
공정하고 균형 잡힌 매칭을 위해 스킬 레벨 또는 선호도에 따라 플레이어를 그룹화하여
플레이어가 좌절하거나 지루해하지 않도록 미스매칭을 피하고자 할 수 있습니다 팀 대전 모드에서는 한 쪽에 경험이 치우치지 않도록 균형 잡힌 팀을 구성해야 합니다
또 다른 사용 사례는 파티 코드를 사용하여 아는 사람들과만 플레이하는 비공개 매칭입니다 하지만 매칭이 될 때까지 오래 기다리는 것만큼 불쾌한 경험도 없습니다 따라서 매칭 품질과 대기 시간의 균형을 잡기 위해 제약 조건을 완화할 수 있는 게 중요합니다
Game Center의 기존 플레이어 매칭은 이미 실시간 멀티플레이어 게임에서 상대를 찾아 연결해 주는 기능이 있습니다 규칙 기반 플레이어 매칭은 이보다 훨씬 많은 기능이 있습니다
시간 제약 조건을 완화할 수 있는 기능으로 공정하고 균형 잡힌 매칭을 위해 맞춤화한 규칙을 제공하고 실제 사용 패턴에 따라 쉽게 규칙을 업데이트할 수 있습니다
플레이어 매칭 시스템의 요소들이 어떻게 작동하는지 알아보겠습니다
기존 Game Center 플레이어 매칭 시스템은 플레이어 매칭의 블랙박스입니다 이 예시에서 Alice와 Bob이 플레이를 원합니다 게임은 GameKit을 통해 매칭 요청을 제출합니다 GameKit API는 게임이 매칭을 같은 플레이어 그룹의 요청으로 제한하도록 합니다 Game Center가 매치를 찾으면 GameKit에
알림이 가고, 기기 간에 실시간 연결을 생성합니다 이 세션에서는 게임 내 플레이어 매칭을 맞춤화하고 탁월한 플레이어 경험을 선사할 수 있도록 이 블랙박스를 열어 규칙 기반 플레이어 매칭에 대해 더 자세히 설명하겠습니다
이제 App Store Connect API로 게임에 최적화된 규칙을 구성할 수 있습니다 게임에서 GameKit SDK는 개발자가 매칭 요청 대기 목록을 지정할 수 있는 API와 규칙에 따라 사용될 사용자 설정 플레이어 속성을 제공합니다
Game Center 서비스는 대기 목록에서 규칙을 사용하여 요청에서 매치를 찾는 알고리즘을 주기적으로 실행합니다
매치를 찾으면 GameKit에 알림이 가고 기기 간에 실시간 연결을 생성합니다
규칙 기반 플레이어 매칭은 개발자가 Game Center에서 대기 목록을 구성하고 규칙 세트를 맞춤화할 수 있는 플레이어 매칭 프레임워크를 제공합니다 강력한 규칙 언어를 사용하여 매칭 제약 조건을 표현식으로 만들 수 있습니다 그리고 GameKit은 게임에 규칙에서 사용할 사용자 설정 플레이어 속성이 포함된 새 API를 제공합니다 또한 샘플 요청으로 규칙을 테스트해 볼 수 있는 개발자 도구와 실제 플레이어 경험 파악에 도움이 되는 지표가 제공됩니다
규칙 기반 플레이어 매칭을 구성 및 테스트하고 그 성과를 관측하는 방법을 알아봅니다
규칙 기반 플레이어 매칭 설정에는 6단계가 필요합니다 하나씩 살펴보겠습니다 첫 번재 단계는 App Store Connect API 사용을 준비하는 것입니다
App Store Connect API의 REST 엔드포인트로 규칙을 구성할 수 있습니다 이 작업을 잘 알고 계시다면 어렵지 않을 것입니다 API를 사용하려면 조직의 App Store Connect 계정으로 비공개 API 키를 생성해야 합니다 API 호출에는 인증에 JSON 웹 토큰(JWT)이 필요합니다 Apple Developer 문서에서 App Store Connect API를 위해 API 키를 생성하는 방법과 인증 토큰을 생성하는 방법을 확인하세요 다음으로 플레이어 매칭을 위해 규칙 세트를 생성하고 규칙을 추가하는 방법을 보겠습니다
여기에서 살펴보고자 하는 사용 사례는 스킬 기반 플레이어 매칭입니다 스킬 수준이 비슷한 플레이어와 매칭되면 게임 경험이 향상됩니다 하지만 최대 스킬 차이를 너무 엄격하게 적용하면 플레이어가 매칭될 때까지 너무 오래 기다릴 수 있습니다 대기 시간이 길어질수록 최대 스킬 차이 조건을 완화해 대기 시간과 스킬 차이 사이에 균형점을 찾는 게 더 나은 것으로 보입니다 규칙 기반 플레이어 매칭은 시간에 따라 제약 조건을 완화하여 매칭 품질과 대기 시간 사이의 균형점을 찾습니다 예시에는 대기 목록에 스킬 레벨이 다른 3명의 플레이어가 있습니다 이 게임에서 최적의 스킬 차이는 20 이하로 생각되지만 현재 이 제약 조건을 만족하는 플레이어가 없네요 이 경우 5초의 대기 시간이 지나면 최대 스킬 차이를 40까지 올릴 수 있습니다 이제 스킬 20과 45의 플레이어가 매칭되는 것 같습니다
하지만 이 예시에서 스킬 45 플레이어가 요청을 취소합니다 스킬 20 플레이어는 매칭 상대가 없어졌습니다
다시, 스킬 범위를 확장합니다 5초가 또 지나면 가능한 최대 스킬 차이를 100까지 허용해서 우리의 플레이어가 매칭이 될 수 있게 해보죠 이제 매치가 성사되었습니다 이렇게 다소 기다리기는 했지만 매칭이 성사되어 게임 플레이를 즐기게 되었습니다 다음에는 스킬이 비슷한 플레이어와 매칭될 거예요 App Store Connect API 엔드포인트를 사용하여 조직의 규칙 세트와 규칙을 구성할 수 있습니다 저는 gameCenterMatchmakingRuleSets 엔드포인트로 규칙 세트를 구성했습니다 그리고 ‘SkillBasedRules’라는 규칙을 생성했습니다
gameCenterMatchmakingRules 엔드포인트로 규칙 세트에 규칙을 추가할 수 있습니다 제 게임에는 서로 호환되지 않는 여러 앱 버전이 있으므로 호환되는 앱 버전의 매치만 요청하는 규칙을 추가하겠습니다
지연 시간이 낮은 플레이어를 선호하는 규칙도 추가하고 정해진 범위 내에 있는 스킬의 플레이어만 매칭하는 규칙도 추가합니다 요청 콘텐츠를 더 자세히 보면 저는 처음에 규칙을 포함하는 규칙 세트를 만들었고 이 규칙 세트는 참조 이름
최소 플레이어 수 최대 플레이어 수를 전달합니다
이 속성들은 모두 제 게임에 특정됩니다 규칙 세트와 대기 목록은 App Store Connect 제공자 조직과 연결되므로 이름 충돌을 피하기 위해 규칙 세트 이름에는 게임 번들 ID의 리버스 도메인 이름 접두사를 사용하는 것이 좋습니다 이것은 새로 생성된 규칙 세트의 ID를 포함하는 응답입니다 이 응답은 규칙을 추가하고 대기 목록을 생성하기 위한 후속 API 호출에 필요합니다 다음 단계는 gameCenterMatchmakingRules 엔드포인트를 사용하여 규칙을 추가하는 것입니다 지금은 스킬 차이 규칙의 세부 내용을 그대로 보여드리겠습니다
방금 생성한 규칙 세트에 마지막 응답에서 얻은 ID를 참조하여 규칙을 추가합니다 규칙 유형은 MATCH로 설정하고
설명을 추가하고
규칙에 이름을 설정하고
그리고 가장 중요한 평가할 표현식을 정합니다
표현식 문법은 오픈 소스 JSON 쿼리 언어인 JMESPath입니다
이 표현식을 자세히 보겠습니다 화면에 표시된 이것은 좌변의 값이 우변의 값 이하인지 확인하는 비교 문자입니다
좌변에는 diff 함수가 있어 현재 후보 요청에서 가장 낮은 스킬 레벨과 가장 높은 스킬 레벨의 차이를 계산합니다 우변은 고정값 20입니다
이 표현식은 최대 스킬 차이가 20인 매칭 요청이 필요합니다 초기 테스트에서는 별 문제가 없지만 실제 사용에서는 일부 플레이어들이 매칭을 오래 기다릴 것 같습니다
저는 요청이 길어지면 스킬 범위가 확장되어 플레이어들이 합리적인 시간 내에 매칭되고 게임을 즐길 수 있게 만들고자 합니다 그러려면 표현식을 수정해야 합니다
규칙을 업데이트하기 위해 gameCenterMatchmakingRules 엔드포인트와 PATCH 메서드를 사용하겠습니다
이 작업의 URL과 콘텐츠에는 규칙 ID가 필요합니다
업데이트된 설명과
업데이트된 표현식이 포함됩니다 훨씬 나은 규칙이 되었습니다
화면의 표현식은 훨씬 복잡합니다
좌변과 비교 문자는 동일합니다
우변에는 agedValues 함수가 있습니다 이 함수는 후보 요청의 평균 대기 시간에 따라 스킬 차이 범위를 확장할 것입니다 첫 번재 매개변수는 후보 요청의 평균 대기 시간입니다
다음 매개변수는 요청의 대기 시간이 5초 미만일 경우 최초로 적용되는 스킬 범위인 20입니다
그 다음 매개변수는 확장할 스킬 범위 값들입니다 40은 대기 시간이 5초 이상 10초 미만일 경우 적용되는 첫 번째 스킬 확장 범위
100은 대기 시간이 10초 이상일 경우 적용되는 두 번째 스킬 확장 범위입니다
마지막 매개변수는 대기 시간의 구간을 정하는 값들입니다 우리가 이미 구성한 대로 5초, 10초마다 스킬 범위가 확장될 것입니다
이제 규칙 세트가 의도대로 작동하는지 테스트해 보겠습니다
App Store Connect API는 규칙을 앱에 통합하기 전에 테스트 및 검증해 보기 위해 gameCenterMatchmakingRuleSetTests를 제공합니다 이 엔드포인트에 필요한 콘텐츠는 꽤 장황하므로 훨씬 간단한 입력을 지원하고 더 효율적인 방법을 제공하는 스크립트를 사용하여 복잡한 내용을 숨길 수 있습니다
이 비디오의 리소스 목록에서 Python 스크립트를 다운로드하세요 gameCenterMatchmakingRuleSetTests 엔드포인트를 포함한 App Store Connect API 사용에 관한 자세한 내용은 App Store Connect API에 관한 Apple Developer 문서에서 확인하세요 이것은 testrules Python 스크립트의 사용 예제입니다
이미 생성한 규칙 세트의 ID를 사용하여 스크립트를 실행하고 있으며
현재 대기 목록에 3개의 요청이 있습니다 첫 번째 요청의 스킬은 10이며 대기 목록에 방금 들어왔습니다 두 번째 요청의 스킬은 50이며 5초 동안 대기 목록에 있었습니다 세 번째 요청의 스킬은 90이며 10초 동안 대기 목록에 있었습니다 우리는 아까 규칙에서 신규 요청의 경우 스킬 차이가 20이 되도록 정했고 5초 이상 대기한 요청의 경우는 40이 되도록 정했습니다 첫 번째와 두 번째 요청이 매칭될까요? 아닙니다 스킬 차이가 20이 넘기 때문입니다 두 번째와 세 번재 요청이 매칭될까요? 네, 비록 스킬 차이는 40이지만 대기 시간이 5초가 넘었기 때문입니다 두 번째와 세 번째 요청이 매칭된 것으로 출력됩니다 따라서 제 규칙이 의도대로 잘 작동하고 있는 것입니다
물론 규칙이 괜찮은지 확인하려면 더 많은 테스트를 실행해야 합니다
다음 단계는 요청을 위한 대기 목록을 구성하는 것입니다
아까의 구성 작업을 떠올려 보시면 우리는 규칙 세트와 규칙을 만들었습니다 방금은 규칙을 테스트했는데 의도대로 작동했습니다 이제 gameCenterMatchmakingQueues 엔드포인트를 사용하여 규칙 세트와 연결된 앱 요청의 대기 목록을 생성하겠습니다 여기서는 스킬 대기 목록이라고 하겠습니다
미리 만들어 놓은 규칙 세트에 연결된 대기 목록을 생성할 때 필요한 콘텐츠의 세부 정보입니다 규칙 세트 ID를 참조하고 대기 목록에 적절한 이름을 제공합니다 규칙 세트 이름과 마찬가지로 리버스 도메인 이름 접두사 또는 대기 목록 이름을 사용합니다
플레이어 매칭 규칙을 위한 App Store Connect API의 구성이 완성되었습니다 다음으로 규칙 기반 플레이어 매칭과 통합할 앱에 추가해야 하는 코드를 다루겠습니다
기존 GameKit 프레임워크 클래스인 GKMatchRequest, GKMatch를 사용합니다
여기에는 새로운 객체 속성인 queueName과 규칙 기반 플레이어 매칭을 지원하는 속성이 있습니다
제 앱에서는 GKMatchRequest 객체를 생성하는 코드를 추가하고 스킬 레벨 대기 목록과 그 규칙을 사용하여 플레이어를 찾도록 매칭 규칙 속성을 설정했습니다
대기 목록 이름 속성은 이전에 생성한 대기 목록의 참조 이름으로 설정했습니다 GKMatchRequest 속성은 규칙 표현식에서 사용된 값을 제공하는 키 값 쌍의 딕셔너리로 설정했습니다 예시의 규칙은 로컬 플레이어의 스킬 값 속성만 사용하고 있습니다
GKMatchmaker 메서드를 사용하여 UI 표시 없이 매칭 요청을 제출합니다 GKMatchmaker 뷰를 표시하여 매칭 상대를 찾을 수도 있습니다
마지막 단계는 매칭 규칙이 실제 플레이어에게 주는 영향을 관측하는 것입니다
App Store Connect API 지표 엔드포인트를 사용하여 플레이어 매칭 규칙의 문제를 진단할 수 있습니다 지표에서는 매칭 결과별 요청 수를 볼 수 있습니다 결과는 매칭됨, 취소됨 만료됨으로 나뉩니다 또한 결과에 도달하기까지 걸린 시간 대기 목록에 있는 요청 수도 볼 수 있습니다 규칙 평가 및 결과에 관한 지표도 있습니다 이러한 지표 데이터는 다양한 간격으로 측정할 수 있습니다 8시간 동안 15분마다 24시간 동안 1시간마다 30일 동안 매일 등입니다
Game Center가 매칭에 너무 오래 걸리거나 매칭에 실패하는 경우 Apple Developer 문서 ‘지표를 통해 플레이어 매칭 규칙 문제 해결하기’를 보세요
이 예제에서 쿼리는 1일 간격으로 대기 목록의 요청 수와 시간을 반환하게 되어 있습니다 응답에는 날짜/시간 범위 및 지표 값의 데이터 포인트가 있습니다 스크립트를 적절하게 사용하면 이 응답 데이터를 차트로 변환하여 매칭 규칙이 플레이어들에게 얼마나 도움이 되는지 확인할 수 있습니다
이상 규칙 기반 플레이어 매칭에 대한 업데이트였습니다
이 새로운 기능은 지금 사용할 수 있습니다 이 훌륭한 새 기능을 활용해 보시기 바랍니다
Apple Developer 문서에서 이 기능을 최대한 활용하는 방법을 확인하세요
Apple은 여러분의 의견을 기다립니다 Game Center 기능을 요청하시려면 Apple 피드백 지원을 통해 의견을 보내 주세요 시청해 주셔서 감사합니다
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.