View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 코드
  • Game Center 시작하기

    Game Center의 기능을 살펴보고 시작하는 방법을 알아보세요. 게임의 노출도를 극대화하고, 새로운 플레이어를 확보하며, 참여도를 높이기 위해 성과, 챌린지, 리더보드 및 활동을 구현하는 모범 사례를 보여드립니다. 또한 이 세션을 최대한 활용하려면 ‘Apple Games 앱으로 플레이어와 소통하기'를 시청하는 것도 좋습니다.

    챕터

    • 0:00 - 서론
    • 2:41 - 프로젝트 설정
    • 6:51 - Game Center 기능 통합하기
    • 10:00 - 도전 과제 및 활동
    • 23:53 - 구현 테스트하기
    • 26:44 - App Store에 게시하기
    • 28:32 - 다음 단계

    리소스

    • Apple Unity Plug-Ins on GitHub
    • Creating activities for your game
    • Creating engaging challenges from leaderboards
    • Game Center overview
    • Human Interface Guidelines: Game Center
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • 게임 수준 높이기
    • Apple Games 앱으로 플레이어와 소통하기

    WWDC22

    • 플러그인 및 플레이: Unity 게임 프로젝트에 Apple 프레임워크 추가
  • 비디오 검색…

    안녕하세요 Josh Arenson입니다 Game Center Frameworks팀의 엔지니어입니다 오늘은 Game Center를 게임에 추가하는 가장 좋은 방법과 그 이유를 알려 드리겠습니다! 저는 Game Center Server 엔지니어인 Varokas Panusuwan 입니다 올해 새로 추가된 재밌는 기능들과 활용 방법에 대한 모범 사례를 공유하겠습니다 맞습니다! 또한 흥미로운 새 주제들도 다루겠습니다 초보자분들도 괜찮으니 계속 함께해 주세요! Game Center가 처음이거나 잠깐 복습을 하자면 Game Center는 플레이어가 게임에 몰입하고 친구들에게 새 게임을 소개 받을 수 있는 기능들로 구성되어 있습니다 Game Center를 사용하면 플레이어는 Apple 개인정보 규정을 준수하면서 연락처의 사람들과 쉽게 연결해 게임을 겨룰 수 있죠 Game Center에서 제공하는 기능은 목표 달성, 순위표, 도전 과제 활동이 있습니다 이 기능들은 더욱 흥미로운 게임 경험을 만드는데 도움이 되죠 플레이어는 본인의 진행 상황을 확인하고 서로 경쟁하며 친구들도 쉽게 게임에 초대할 수 있습니다 더 많은 플레이어에게 게임이 노출 되길 원한다면, 올 가을부터 macOS iPadOS, iOS에 기본 설치될 새 Apple Games 앱이 정답입니다 Game Center는 Apple 생태계 특히 Games 앱에서 여러분의 게임이 최대한 노출되도록 지원합니다 Game Center 기능을 통합할수록 OS에 더 많은 정보가 제공되어 게임이 다양한 위치에 노출됩니다 Game Center는 플레이어 참여도를 높입니다 순위표, 도전 과제, 활동, 목표 달성의 핵심 기능을 통해서요 이 기능들은 플레이어에게 커뮤니티 교류 목표와 기회를 제공해 게임 참여도를 유지하죠 이 핵심 기능들이 플레이어가 게임을 오래할 수 있게 해줍니다 게임을 더 재밌게 만들고 경쟁심도 자극해 게임을 계속 하게 합니다 플레이어가 새 게임을 찾을 때 많은 이들은 App Store를 먼저 둘러봅니다 새 “최다 플레이된 게임” 차트로 플레이어들에게 제일 인기 있는 게임을 알 수 있습니다 새 Games 앱에도 이 차트가 있으므로 Game Center는 두 앱 모두에서 게임 경쟁력을 높여줍니다 App Store와 Games 앱 모두에서 “친구들이 플레이 중인 게임”을 찾을 수 있습니다 어떤 게임이 인기 있는지 알아보는 것도 좋지만 나만을 위한 추천을 원하기도 하죠 이 섹션에는 친구들이 플레이 중인 게임이 표시되어서 인기 차트에서는 볼 수 없는 재밌는 게임을 알게 됩니다 Game Center를 통해 즐거운 경쟁이 펼쳐지죠! 예를 들어 친구에게 1등을 뺏겨 순위표에 표시되면 푸시 알림이 전송됩니다 지금까지 Game Center 소개와 게임에 생기는 이점을 다뤘습니다 이제 활용 방법을 알아보죠 Varokas와 제가 Game Center를 게임에 쉽게 추가하는 방법을 알려 드릴게요 프로젝트 설정과 구성부터 테스트, App Store에 출시에 이르는 모든 과정을 다룰 예정입니다 게임에서 Game Center가 작동하려면 두 단계면 충분합니다 먼저 Game Center 권한을 프로젝트에 추가하세요 그러면 Game Center와 게임 간의 통신이 가능해집니다 Game Center와의 통신을 위한 프레임 워크인 GameKit을 초기화하세요 Xcode에 Game Center 권한을 추가하려면 프로젝트를 열어 “서명 및 기능” 탭으로 이동 후 “+ 기능”을 클릭하고 검색하여 “Game Center”를 추가하세요

    Unity를 사용하는 경우 Apple은 Game Center 권한 추가 프로세스를 간소화하는 플러그인을 제공합니다 GitHub에서 플러그인을 다운로드하세요 저장소에는 빌드와 설치 방법에 대한 지침이 있습니다 플러그인을 설치한 후 Unity Editor를 열고 “프로파일 빌드” 메뉴로 이동 후 “빌드”를 클릭하세요 그러면 올바른 권한이 포함된 Xcode 프로젝트가 생성됩니다 권한을 추가한 후에는 몇 줄의 코드만 있으면 초기화됩니다 GameKit은 프레임워크로 Game Center와의 상호 작용에 사용되죠 초기화는 간단합니다 초기화가 완료되면 호출할 핸들러를 등록합니다 핸들러 실행 후 GKLocalPlayer 객체에 액세스할 수 있습니다 게임 진행 상황의 보고에 필요한 모든 플레이어 정보를 제공합니다 이 Swift 코드에서 초기화 핸들러를 설정 중입니다 Game Center가 초기화를 마치면 핸들러가 호출되고 GKLocalPlayer는 유효한 플레이어를 참조합니다 좋은 소식이 있습니다 여러분이 Unity 개발자라면 모든 GameKit API에는 C# 바인딩이 있습니다! Apple의 Unity 플러그인으로 Unity Editor에서 바로 GameKit을 넣죠 GameKit 초기화 코드도 똑같이 C#으로 작성됩니다

    시작 핸들러가 호출되면 Game Center에 배너가 표시되어 플레이어는 사용 가능한 기능을 알 수 있습니다 플레이어가 Game Center 게임을 해본 적이 없으면 Apple 계정을 사용하여 온보딩하라는 메시지를 받습니다 게임의 가시성을 극대화하려면 게임 실행 직후에 Game Center 초기화 핸들러를 설정하세요 그러면 가장 많이 플레이한 게임 차트에 표시되거나 다른 플레이어에게 추천하는 게임으로 소개될 수 있습니다 예를 들어, 저는 Varokas 또 다른 동료 Logan과 함께 “The Coast”라는 게임을 개발하는 중에 제목 화면이 표시되는 즉시 핸들러가 실행되도록 설정했습니다 그때가 가장 적절한 시점이었죠 초기화 핸들러를 구성한 후 Game Center의 기능으로 게임을 한층 발전시킬 수 있죠 목표 달성은 플레이어의 성과를 보상하고 자랑거리를 제공합니다 순위표와 도전 과제는 경쟁을 유도하고 싱글플레이어 게임에서도 멀티플레이어로 플레이할 기회를 만들어 줍니다 게임 활동은 플레이어를 게임 내 특정 콘텐츠와 직접 연결하는 딥링크를 제공하죠 달성에 필요한 레벨 이동처럼요! 핵심 Game Center 기능을 구성하는 세 가지 방법이 있습니다 첫째, 새로운 Xcode 26부터는 GameKit 번들을 사용해 Game Center를 직접 구성할 수 있습니다 이 방법은 몇 가지 이점이 있으며 App Store Connect와 동기화되며, 게임 개발 중에 가장 권장되는 접근 방식입니다

    게임 출시 준비가 되면 App Store Connect 웹사이트를 통해 심사 절차를 진행하고 Game Center 구성을 빠르게 확인해 볼 수 있습니다 지속적 통합 워크플로의 일부로 구성 프로세스의 어느 부분을 자동화하고 싶으신 경우에는 App Store Connect API가 가장 적합합니다 GameKit 번들은 아주 큰 장점이 있습니다 목표 달성, 순위표, 게임 활동을 Xcode에서 직접 테스트할 수 있고 Game Progress Manager로 실시간 게임과 완전 분리됩니다! 이 데이터를 로컬에 선언하면 Game Center 구성이 코드 리뷰와 버전 제어에도 자동으로 포함됩니다! 어젯밤 Varokas와 저희 게임인 The Coast를 만들고 있었죠 그는 App Store Connect에서 Game Center 구성을 시작했지만 저는 .gamekit 번들로 Game Center 기능을 통합하려고요 개발 과정을 간소화하기 때문이죠 GameKit 번들을 Xcode 프로젝트에 추가하려면 템플릿 선택기만 열면 됩니다

    검색 창에 “GameKit”을 입력합니다

    “GameKit 번들” 템플릿이 보이세요? 그것을 선택하고 다음을 누르세요

    파일 이름을 선택할 수 있지만 기본값도 좋아요. 생성을 클릭하고 그러면 Xcode가 프로젝트에 번들을 추가합니다

    App Store Connect에 순위표, 도전 과제, 활동 목표 달성이 있으므로 거기서 게임 정보를 가져올 거에요 생략 부호를 클릭하고 “App Store Connect에서

    가져오기”를 선택합니다 이제 개발팀을 선택하고

    “The Coast”를 찾아 풀을 클릭해 게임 정보를 가져옵니다

    모두 완료하면 App Store Connect에서 생성했던 모든 것이 표시됩니다

    Varokas와 저는 “Cape Cod, in The Coast” 레벨에 순위표를 추가하기로 결정했습니다 Cape Cod 레벨에서 플레이어는 신속하게 배를 탭해서 배를 안전하게 안내하고 포인트를 획득해야 합니다 조심하세요! 배처럼 보이지만 실제로는 위장한 랍스터입니다 랍스터를 실수로 탭하면 레벨이 종료됩니다! 순위표를 추가하려면 “+” 버튼 클릭 후 “순위표”를 선택합니다

    Xcode는 참조 이름과 식별자를 요청합니다 Game Center에서 생성한 모든 항목에는 두 개의 필드가 있고, 개발자만 볼 수 있습니다 식별자는 게임 코드에서 순위표를 참조할 때 사용됩니다 Varokas와 제가 이미 동의한 값을 입력한 후

    “추가”를 클릭합니다

    이제 게임 레벨의 요구에 맞게 순위표를 조정할 수 있습니다 지금은 기본값으로도 문제 없습니다! Game Center는 자동으로 플레이어의 로케일을 감지하고 해당 언어로 정보를 표시합니다 그래서 게임이 지원하는 각 언어로 현지화된 이름 설명, 이미지를 준비하는 것이 중요합니다

    “+”를 클릭하여 현지화를 추가하고

    Varokas와 제가 논의한 값을 입력하고 “추가”를 클릭합니다

    완료돼죠, 게임 코드에서 순위표를 호출할 준비가 됐습니다 다루었던 내용을 기반으로 동일한 개념을 사용하여 목표 달성 도전 과제, 활동을 생성할 수 있습니다 지금까지 Game Center에 대한 게임을 구성하고 기능을 구현하는 방법을 살펴봤습니다 이제 Varokas가 이어서 전문 지식을 공유하겠습니다! 고맙습니다, Josh 두 가지 새 Game Center 기능인 도전 과제와 활동을 추가하는 방법을 보여드릴게요! 두 기능 모두 새 멀티플레이어 경험을 만들고 플레이어의 게임 참여를 유도하기 위해 설계되었습니다 도전 과제에서는 싱글플레이어 게임이 친구들과 함께하는 커뮤니티 경험으로 즉시 바뀝니다 도전 과제는 이미 게임에 있는 기존의 순위표에 그대로 적용됩니다 기본적으로 하나로 두 기능을 얻을 수 있다는 뜻이죠 추가 코드는 필요하지 않습니다! 도전 과제를 통해 플레이어는 친구를 초대해 점수 경쟁을 하면 실시간으로 모든 점수가 뜨고 누가 승자인지 확인할 수 있으며 같은 화면에서 바로 재대결까지 시작할 수 있습니다 모든 도전 과제에는 시간 제한이 있습니다 그래서 플레이어는 시간 안에 서둘러 게임을 시작하게 되죠! 도전 과제는 순위표와 관련이 있지만 약간 다르게 작동합니다 순위표는 모든 Game Center 친구들과 계속되는 경쟁입니다 도전 과제는 만들 때 중요한 맞춤형 기능을 제공합니다 순위표는 계속 진행되지만 도전 과제는 시작과 종료 시간이 있죠 도전 과제를 시작한 플레이어는 대결을 언제 시작할지 선택할 수 있습니다 시간이 다 되기 전에 도전 과제의 진행 시간을 정할 수 있습니다 순위표에는 모든 Game Center 친구가 포함되지만 도전 과제는 참여할 친구를 직접 정할 수 있습니다 현재 친구 목록에 없는 플레이어도 포함시킬 수 있습니다 그리고 플레이어마다 시도 횟수를 결정할 수 있어서 맞춤형 소규모 대결로 만들 수 있습니다

    도전 과제의 지속 시간은 플레이어가 직접 정할 수 있지만 플레이어가 선택할 수 있는 시간 범위는 여러분이 정할 수 있습니다 1일, 3일, 일주일 또는 이 중에서 조합하여 플레이어가 하나를 선택하게 할 수 있습니다 근데 정말 놀라운 기능은 따로 있습니다 플레이어의 도전 과제를 활성화하기 위해 게임을 수정할 필요가 전혀 없습니다 게임에 순위표가 있다면 플레이어의 점수를 업데이트할 때 이미 submitScore() API를 사용하고 있는 겁니다 동일한 API가 모든 관련 도전 과제에 점수를 자동 제출합니다! Cape Cod는 The Coast의 첫 번째 레벨이어서 인기가 있죠 도전을 추가하는 데 아주 좋은 레벨입니다 첫 번째 단계는 Xcode에서 도전 과제 메타데이터의 생성입니다 Game Center의 모든 기능과 같이 도전 과제에는 대표 이미지와 해당하는 표시 이름이 필요합니다 내부적으로 게임 코드에 사용할 식별자와 App Store Connect에서 도전 과제를 검색할 참조 이름도 필요합니다 이 모두를 고려해 이미지, 표시 이름, ID Cape Cod의 참조 이름을 준비했습니다 The Coast에 이미 순위표를 설정했습니다 submitScore()에 리더보드 ID가 제대로 설정됐는지 확인하면 됩니다 Josh가 보여드린 동일한 작업 흐름에 따라 아트워크와 표시 이름을 사용해 Xcode에서 도전 과제를 만들었습니다

    확실히 하기 위해 연결된 순위표가 Cape Cod로 올바르게 설정되었는지 확인합니다 여기서 플레이어가 선택할 수 있는 기간을 구성할 수 있습니다 The Coast는 1분짜리 짧은 게임이므로 기간은 1일 또는 3일 중에서 허용할 예정입니다 도전 과제를 구현하는 데 필요한 건 이것뿐입니다 도전 과제 메타데이터가 올바르게 설정되어 있는지 확인해야 합니다 이 순위표를 이미 사용 중이라면 변경할 게임 코드는 없습니다! 게임에 반복되는 순위표가 있는 경우 관련된 도전 과제는 조금 다르게 작동합니다 기억하세요 순위표는 지속적이지만 반복되는 순위표는 시작과 종료 시간이 정의되어 있습니다 매일 반복되는 순위표의 예입니다 오늘 자정에 시작해서 내일 자정에 끝납니다

    반복되는 순위표와 연결된 도전 과제는 현재 순위표 인스턴스와 동일한 시간에 종료됩니다 Josh와 지금 새 도전 과제를 시작한다면 둘 다 도전 과제가 완료되는 수요일 자정까지 경쟁할 수 있습니다

    이 경우 도전 과제 생성 화면은 자정 전까지 남은 시간을 표시합니다

    또한 도전 과제가 반복되는 순위표를 기반으로 하면 도전 과제를 반복 불가로 표시할 수 있습니다 즉, 플레이어는 한 번만 도전할 수 있습니다 이것은 퍼즐 게임과 같은 데서 유용합니다 일일 퍼즐 도전 과제에서는 반복 불가가 가장 적합합니다 플레이어는 Games 앱의 여러 위치에서 도전 과제를 만들고 볼 수 있고, 고유한 UI를 만들어 게임 내에서 사용 가능하고 활성화된 도전 과제를 모두 표시할 수 있습니다 자세한 내용은 문서를 확인하세요 도전 과제는 같은 조건에서 누구나 공평한 기회를 제공해야 합니다 따라서 순위표와 도전 과제의 점수는 권장된 방식으로 제출해야 합니다

    예를 들어, 각 레벨이 끝날 때 새 점수를 제출해야 합니다 여기서, 플레이어가 레벨을 시도할 때마다 “구조한 배의 수”의 점수로 제출합니다 여러 번 시도의 점수를 누적하지 마세요 “구조한 총 배의 수”와 같이 누적 점수를 제출하지 마세요 한 플레이어가 게임을 얼마나 오래 했는지보다 스킬을 겨루어야 합니다

    도전 과제를 만든 플레이어가 각 플레이어의 도전 횟수를 결정한다는 사실을 잊지 마세요 레벨이 끝날 때 한 번만 점수를 제출하는 것이 일반적입니다 따라서 생각보다 더 많이 점수를 제출하고 있지 않은지 확인해야 합니다 이제 도전 과제를 설정했습니다 저는 플레이어가 이 도전 과제에 쉽게 참여하기를 바랍니다 그래서 활동이 큰 도움이 됩니다

    활동은 또 다른 새 기능입니다 게임의 동작에 바로 연결되는 딥링크를 추가할 때 사용하죠! 활동은 게임의 특정한 목적지입니다 딥링크로 플레이어를 직접 이 목적지로 데려갈 수 있습니다 활동의 시작 지점은 다른 Game Center 기능과 연결되어 정의됩니다

    예를 들어, 레벨 1이 끝날 때 점수를 제출하는 순위표는 해당 레벨의 시작 지점에 활동을 딥링크하여 연결할 수 있습니다 플레이어가 Games 앱에서 이 순위표를 볼 때 “재생”을 탭해 레벨을 직접 시작할 수 있습니다 해당 순위표에 대해 정의된 모든 도전 과제도 동일한 활동과 연결됩니다 따라서 플레이어가 Games 앱에서 레벨 1의 도전 과제를 볼 때 “재생”을 탭해 레벨 1부터 시작할 수 있습니다 또한 활동을 사용하면 보스전이 펼쳐지는 레벨과 같은 특정 목표 달성과 연결된 게임 구간으로 딥링크할 수 있습니다

    활동을 사용하는 또 다른 좋은 방법은 플레이어를 실시간 멀티플레이어 경험으로 딥링크하는 것입니다 Game Center의 내장 파티 코드 지원을 통해 기존의 실시간 멀티플레이어 시스템을 Game Center 활동과 통합합니다 보시다시피, 활동을 통해 더 많은 플레이어를 게임에 유입시킬 수 있는 다양한 방법이 있습니다 오늘은 The Coast로 두 가지 예를 보여드리겠습니다 하나는 방금 전에 만든 Cape Cod 도전 과제와 관련되고 다른 하나는 멀티플레이어 활동과 관련됩니다 친구들에게 새 Cape Cod 도전 과제의 참여를 권했습니다 이제 이 도전 과제의 활동을 정의해보려고 합니다 그래서 플레이어가 이 재생 버튼을 탭하면 바로 레벨의 시작 부분으로 이동합니다 메타데이터 정의를 시작해 보겠습니다 활동 ID로 “thecoast.activity”를 씁니다 기본 활동에 더 많은 세부 정보를 추가할 수 있습니다 예를 들어, 이 활동이 The Coast의 특정 게임 모드용이라고 할 수 있습니다 그러면 모든 순위표나 목표 달성을 활동과 연결시킬 수 있죠 하지만 도전 과제는 어떨까요? 도전 과제는 순위표를 확장한 개념입니다 즉, 순위표를 활동과 연결시키면 도전 과제도 자동으로 연결됩니다 그래서 Cape Cod 순위표를 새 활동에 연결할 거에요 연결된 항목 자체도 속성이 있을 수 있습니다 이 경우 순위표 속성의 “레벨” 값으로 “capeCod”를 추가했습니다 이 활동이 Cape Cod 도전 과제에서 트리거되면 기본 속성은 순위표 속성과 결합됩니다 모든 속성이 전송되면 Cape Cod가 시작 레벨인지 게임 내 핸들러에서 검사할 수 있습니다 이제 활동에 필요한 모든 사항을 갖추었으므로 모든 메타데이터 값을 Xcode에 넣을 것입니다 여기서 이미지와 표시 이름을 포함해 새 활동을 만들었습니다 이제 이 섹션에서 기본 활동 속성을 설정할 수 있습니다 Cape Cod 순위표를 새 활동과 연결시키기 위해 Xcode에서 순위표를 선택하고 드롭다운에서 Cape Cod 활동을 선택합니다

    순위표에도 올바른 속성이 정의되어야 하고 이 속성 섹션 내에서 할 수 있습니다

    활동에 대한 메타데이터가 이제 설정됐고 바로 사용 가능합니다! 딱 한 가지가 남았습니다 플레이어를 Cape Cod 레벨에 직접 보낼 게임 내 핸들러가 필요합니다 게임 코드에서 이제 GKLocalPlayerListener에서 플레이어를 구현할 수 있습니다 전달된 활동 인스턴스에는 방금 Xcode에서 설정한 식별자가 포함된 정의가 있습니다 올바른 ID를 찾은 후 속성 값을 살펴볼 수 있습니다 이제 플레이어가 올바른 레벨에서 시작할 수 있게 되었습니다

    활동과 함께 이 편리한 “setScore” 함수를 사용해 점수를 제출할 수도 있습니다 “activity.start()” 호출 후 모든 점수 제출이 버퍼링됩니다 activity.end()에서 Game Center는 플레이어의 최신 점수를 한 번만 제출하는데 도전 과제에 특히 유용하죠 그러면 실수로 점수를 여러 번 제출할 일이 거의 없습니다 도전 과제와 같은 Game Center 기능에서 딥링크를 사용하면 플레이어가 게임의 올바른 위치로 이동합니다 이제 멀티플레이어 활동과 함께 플레이어는 친구들과 함께 게임에 참여할 수 있습니다! 멀티플레이어 활동의 경우 활동은 파티 코드로 연결되고 기존의 실시간 멀티플레이어 시스템과 통합할 수 있습니다

    플레이어가 새 멀티플레이어 활동을 시작하면 Game Center 자동으로 파티 코드를 생성합니다 이제 플레이어는 iMessage를 통해 친구들과 쉽게 이 활동을 공유할 수 있습니다 활동 및 파티 코드는 Games 앱이 설치되지 않은 기기의 웹 페이지로 표시됩니다 이 웹 페이지는 공유할 때 가장 잘 보이도록 OpenGraph 태그를 제공합니다 플레이어의 활동 공유 방식에 관계 없이 Game Center는 각 플레이어가 참여에 사용하는 파티 코드를 게임에 알려 줍니다 그럼 멀티플레이어 시스템 내에서 같은 파티 코드를 함께 사용해 모든 사용자를 연결할 수 있죠

    이전과 마찬가지로 활동 메타데이터를 설정하면 됩니다 다른점은 하나뿐입니다 “파티 코드 지원” 옵션을 체크해야 합니다 게임 내 핸들러의 모든 설정도 동일합니다 활동 인스턴스에서 파티 코드에 접근할 수 있습니다 멀티플레이어 활동은 Game Center 의 현재 매치메이킹 솔루션과 작동하죠 활동 인스턴스에서 findMatch() 함수를 사용해 이 활동의 매칭 상대를 찾을 수 있게 Games Center에 요청하면 됩니다

    활동을 생성할 때 유의사항이 있습니다 딥링크를 최대한 활용하려면 소개 또는 게임 선택 화면은 건너뛰어야 합니다 대신 플레이어를 바로 시작 지점으로 보냅니다 링크하는 위치에 결제 또는 진행 조건이 필요하면 게임 내에서 팝업 메시지를 표시하여 플레이어가 무엇을 시작해야 하는지 알려 주어야 합니다 현재 게임 내 파티 코드를 명확하게 표시합니다 플레이어가 올바른 위치에 있다는 확신을 주는 데 도움이 됩니다 플레이어가 게임 내에서 수동으로 파티 코드를 직접 입력할 수 있는 옵션도 있어야 합니다 다른 기기 또는 플랫폼에서 파티 코드를 받는 경우 도움이 됩니다 이제 The Coast의 모든 기능을 다 구현했으므로 테스트해서 문제 없는지 확인해야 할 차례입니다 이제부터는 Josh가 다시 알려 드릴 것입니다 고맙워요, Varokas! 활동과 도전 과제를 우리 게임에 추가하면 좋을 것 같은데요 우선 최근에 추가한 Cape Cod 순위표를 테스트해 보겠습니다 참고로 순위표는 플레이어가 안전하게 안내한 배의 수를 추적합니다 이제 새 Game Progress Manager를 사용해 게임의 점수를 보고 로직이 제대로 작동하는지 확인할 수 있습니다 새 순위표를 테스트하려면 먼저 게임 체계를 편집하고 GameKit 구성 디버그 모드를 활성화해야 합니다 체계 편집기의 run 옵션 아래에 있습니다

    끝나면 Xcode에서 게임을 시작해 디버그 메뉴에서 Game Progress Manager를 엽니다

    그런 다음 기기와 테스트할 게임을 선택합니다 iPhone과 The Coast를 선택하겠습니다

    .gamekit 번들의 모든 목표 달성과 순위표가 여기 표시됩니다 방금 만든 순위표를 선택하겠습니다 “플러스 점수” 버튼을 클릭하여 원하는 점수를 제출할 수 있습니다 플레이어 대신 점수를 제출할 수 있지만 제 점수로 42점을 제출하겠습니다

    그러면 게임에 배너가 표시돼 수신을 확인합니다 게임이 디버그 모드일 때 유용한 기능입니다 이제 Cape Cod 순위표를 열면 방금 제출한 테스트 점수를 볼 수 있지만, 게임이 점수를 제대로 보고하는지 확인해 보죠 여기의 지우기 버튼을 클릭하여 순위표를 지워보겠습니다 정말 이 작업을 할건지 확인한 후 실제로 게임을 플레이해서 점수를 획듣할 겁니다 “The Coast”로 돌아와서 최대한 많은 배를 무사히 안내하죠

    이런, 랍스터에게 또 속았네요! 디버그 배너가 다시 표시되고 게임에 순위표도 표시됩니다 방금 얻은 점수도 표시된 걸 보니, 잘 작동하고 있네요! 점수가 Xcode에도 표시되니 게임 로직에 문제가 없는 거죠! 여기서 중요한 점은, 이 점수는 전부 디버깅 세션에만 있고 서버에는 제출되지 않다는 겁니다 이제 Varokas가 전에 만든 GameActivity를 테스트하겠습니다 Cape Cod 순위표와 연결되므로 Game Progress Manager에서 딥링크를 볼 수 있습니다 Varokas가 이 링크를 클릭하면 Cape Cod 레벨이 시작되도록 링크 핸들러를 구성했습니다 Xcode에서 링크를 클릭하면 기기에서 클릭과 똑같이 작동하죠

    Cape Cod가 다시 시작되는 걸 볼 수 있습니다 링크 처리 코드가 완벽하게 작동한다는 의미입니다! 이제 모두가 제대로 작동하는 걸 확인했으니 .gamekit 번들을 App Store Connect에 게시할 준비가 되었습니다 Xcode 프로젝트에서 이전처럼 .gamekit 번들을 선택하죠 생략 부호를 클릭해 “App Store Connect에 푸시”를 선택합니다

    다시 한번, The Coast를 선택하고

    “푸시”를 클릭합니다

    완료되면

    App Store Connect 웹사이트에 .gamekit 번들의 것이 모두 있네요 모두 “비활성 상태”인거 보이시나요? Game Center 라이프사이클의 핵심 개념이며 처음에 왜 이 상태로 시작했는지 이해하는 것이 중요합니다 생성부터 게시까지 전체 과정을 살펴보고 “비활성 상태” 상태가 어디에 해당하는지 알아보겠습니다 이 다이어그램은 생성부터 게시까지 게임의 순위표 도전 과제, 활동, 목표 달성의 라이프사이클을 보여 줍니다 3개의 섹션으로 나뉩니다 개발과 Game Center 구성을 위한 Xcode 베타 테스트를 위한 TestFlight 게임 출시를 위한 App Store Connect입니다 먼저, 실제로 게임을 만들어야 합니다 코드를 작성하고 .gamekit 번들로 Game Center 기능을 추가합니다 Game Progress Manager로 생성한 모든 걸 철저히 테스트합니다 테스트 결과에 만족하면 TestFlight에 게임을 게시하세요 그래야 베타 테스터가 테스트할 수 있습니다 모든 것이 제대로 작동한다고 생각되면 게임을 Apple에 제출하여 심사를 받으세요 제출 시 사용할 “비활성 상태” Game Center 리소스를 반드시 포함해야 합니다 Apple이 모든 것을 심사하고 승인한 후 출시를 결정하면 Game Center 리소스가 활성 상태가 되고 게임이 App Store에 게시됩니다! 축하합니다! 여러분의 게임에 신나는 순간이 다가왔습니다! Xcode에 있는 게임에 .gamekit 번들을 추가해야 합니다 Game Center를 많이 활용하고 있는지, 아니면 초보자여도 게임 개발이 더욱 쉬워집니다 그런 다음, GameKit를 초기화하는 코드를 추가하세요! 이렇게 하기만 해도 운영 체제 전반에서 게임의 노출이 높아집니다 새로 추가된 활동과 도전 과제를 꼭 사용해 보세요! 시간 투자가 아깝지 않을 것입니다 Games 앱에 여러분의 게임을 잘 노출시키려면 동료 Logan의 “Apple Games 앱으로 플레이어와 소통하기”를 시청하세요 Unity 개발자는 Apple 프레임워크와 Unity 프로젝트의 통합을 다룬 동영상은 필수로 시청해야 합니다! 여러분이 만드실 신나는 게임을 기대하고 있겠습니다 시청해 주셔서 정말 감사합니다!

    • 4:17 - Initialize GameKit

      GKLocalPlayer.local.authenticateHandler = { _, error in
          print("\(GKLocalPlayer.local.alias) is ready to play!")
      }
    • 4:29 - Initialize GameKit (Unity)

      var player = await GKLocalPlayer.Authenticate();
      Debug.Log($"{player.alias} is ready to play!");
    • 13:07 - Submit score to challenge

      // Submit score
      
      GKLeaderboard.submitScore(points, 
               context: 0, 
               player: GKLocalPlayer.local,
               leaderboardIDs: ["thecoast.lb.capecod"])
    • 20:24 - Activity properties

      // Activity properties 
      
      extension AppDelegate: GKLocalPlayerListener {
      
          func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool {
              let activityId = activity.activityDefinition.identifier
              
              if activityId == "thecoast.activity" {
                  let level = activity.properties["level"]
                  
                  if level == "capecod" {
                      startCapeCod(activity)
                  }
              }
              
              return true
          }
      
      }
    • 20:48 - Managing score submission with activity

      // Managing score submission with activity 
      
      class GameplayManager {
          let activity: GKGameActivity
          let leaderboard: GKLeaderboard
          
          init(activity: GKGameActivity, leaderboard: GKLeaderboard) {
              self.activity = activity
              self.leaderboard = leaderboard
              
              activity.start()
          }
          
          func setScore(_ newScore: Int) {
              activity.setScore(on: leaderboard, to: newScore)
          }
      
          deinit {
              activity.end()
          }
      }
    • 22:35 - Access the Party Code

      extension AppDelegate: GKLocalPlayerListener {
          func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool {
              let activityId = activity.activityDefinition.identifier
              
              if activityId == "thecoast.multiplayer" {
                  startMultiplayer(partyCode: activity.partyCode)
              }
              
              return true
          }
      }
    • 22:48 - Game Center Matchmaking

      let match = try await activity.findMatch()
    • 0:00 - 서론
    • Game Center는 Apple의 소셜 게임 네트워크로, 플레이어가 게임에 더 몰입할 수 있도록 하는 목표 달성, 순위표, 도전 과제, 활동을 비롯한 여러 기능을 제공합니다. Game Center를 활성화하기만 해도 Apple 생태계 전반에서 게임이 더 많이 표시됩니다. 게임이 표시될 수 있는 위치에는 올해 가을에 macOS, iPadOS, iOS에 기본 설치될 새 Apple Games 앱이 포함됩니다. Game Center는 또한 푸시 알림을 통해 소셜 상호작용과 우호적인 경쟁을 장려하고 플레이어가 게임에 계속 참여하도록 합니다.

    • 2:41 - 프로젝트 설정
    • Game Center는 게임에 쉽게 통합할 수 있습니다. 두 단계면 충분합니다. Xcode 프로젝트에 Game Center 권한을 추가하고, GameKit을 초기화하는 두 줄의 코드를 추가하세요. 매우 간단합니다. Xcode 26에 추가된 새 기능으로, GameKit 번들을 사용하여 Xcode에서 바로 추가 Game Center 기능을 구성할 수 있습니다. 이 방법을 사용하면 App Store Connect와 동기화할 수 있습니다.

    • 6:51 - Game Center 기능 통합하기
    • The Coast라는 게임을 예로 들어, Josh가 Xcode에서 GameKit 번들을 사용하여 Game Center 기능을 통합하는 방법을 자세히 설명합니다. Josh는 Cape Cod 레벨에 새로운 순위표를 추가합니다. 플레이어는 레벨을 종료시키는 위장한 랍스터를 피해 배를 탭하여 안전하게 안내해야 합니다. 목표 달성, 도전 과제, 활동과 같은 다른 Game Center 기능을 만들 때도 같은 단계를 거칩니다.

    • 10:00 - 도전 과제 및 활동
    • 올해 Game Center에는 도전 과제, 활동이라는 두 개의 기능이 새로 추가되었습니다. 도전 과제는 기존 순위표를 기반으로 작동하며, 플레이어가 친구를 초대하여 실시간으로 시간 제한이 있는 대결에 참여하도록 할 수 있습니다. 플레이어는 참가자, 지속 시간, 시도 횟수를 선택하여 도전 과제를 맞춤화할 수 있습니다. 즉, 완전히 개인화된 대결을 만들 수 있습니다. 활동은 레벨 시작이나 보스전과 같이 게임의 특정 구간과 딥링크하는 방법을 제공합니다. 활동을 순위표, 도전 과제, 심지어 실시간 멀티플레이어 경험과 연결할 수 있습니다. 이제 게임이 멀티플레이어 환경에서 플레이어를 연결하는 데 사용할 수 있는 공유 가능한 파티 코드가 Game Center에서 지원됩니다.

    • 23:53 - 구현 테스트하기
    • Josh가 Xcode에서 순위표와 관련된 활동의 딥링크를 테스트하는 단계별 과정을 안내합니다.

    • 26:44 - App Store에 게시하기
    • GameKit 번들을 생성하고 Game Progress Manager를 사용하여 구현을 테스트하는 절차가 App Store에 게임을 게시하는 과정에 어떻게 자연스럽게 통합되는지 확인하세요.

    • 28:32 - 다음 단계
    • Xcode를 통해 게임에 GameKit 번들을 추가하면 게임 개발 과정이 더 쉬워집니다. 그런 다음, 게임에 GameKit을 초기화하는 코드를 추가합니다. 이 두 단계만 거치면 게임이 운영 체제 전반에서 더욱 눈에 띄게 표시됩니다. 게임에서 새로운 Game Center 기능, 활동 및 도전 과제를 활용해 보세요. Unity 개발자 사용자라면 GitHub의 GameKit 플러그인을 확인해 보세요.

Developer Footer

  • 비디오
  • WWDC25
  • Game Center 시작하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침