Unity용 Google Play 게임즈 플러그인 시작하기

이 주제에서는 Unity용 Google Play 게임즈 플러그인을 사용하도록 Unity 프로젝트를 설정하는 방법을 설명합니다. 세부적으로는 프로젝트 설정, 소셜 플랫폼 선택, 플레이어 로그인 설정 등이 포함됩니다.

시작하기 전에

플러그인 설치

  1. 다음 옵션 중 하나를 사용하여 플러그인을 가져옵니다.

  2. current-build 디렉터리에서 unitypackage 파일을 찾습니다. 그 파일이 플러그인입니다. 예를 들어 다음과 유사합니다.

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    
  3. Unity에서 게임 프로젝트를 엽니다.

  4. Assets > Import Package > Custom Package 메뉴 항목을 클릭하여 unitypackage 파일을 프로젝트의 애셋으로 가져옵니다.

  5. 현재 빌드 플랫폼이 Android로 설정되어 있는지 확인합니다.

    1. 기본 메뉴에서 File > Build Settings…를 클릭합니다.

    2. Android를 선택하고 Switch Platform을 클릭합니다.

    3. Window > Google Play Games 아래에 새 메뉴 항목이 있습니다. 표시되지 않으면 Assets > Refresh를 클릭하여 애셋을 새로고침한 다음 빌드 플랫폼을 다시 설정해 봅니다.

Play Console에서 Android 리소스 가져오기

Play Console에서 만드는 각 업적과 리더보드, 이벤트에는 Unity 프로젝트 설정 시 사용하는 Android 리소스가 포함됩니다.

  1. 게임용 Android 리소스를 가져옵니다.

    1. Play Console에서 게임의 Play 게임즈 서비스 프로젝트를 엽니다.

    2. 업적 탭을 클릭한 다음 리소스 보기를 클릭합니다.

    3. Export resources 창에서 Android 탭을 클릭합니다.

    4. XML 콘텐츠를 선택하고 복사합니다.

Unity 프로젝트 설정

  1. Unity 프로젝트에 Android 리소스를 추가합니다.

    1. Unity에서 ** Window > Google Play 게임즈 > 설정... > Android 설정 **을 클릭합니다.

    2. 설정 창에서 다음 항목을 완료합니다.

    3. 상수를 저장할 디렉터리 - 상수 파일의 폴더입니다.

    4. 상수 클래스 이름 - 네임스페이스를 포함한, 생성할 C# 클래스의 이름입니다.

    5. 리소스 정의 - Play Console의 Android 리소스 데이터를 여기에 붙여넣습니다.

    6. 웹 클라이언트 ID - 연결된 웹 앱의 클라이언트 ID입니다. 게임용 웹 기반 백엔드가 있고 백엔드 서버를 통해 액세스 토큰으로 교환할 서버 인증 코드가 필요하거나, 게임 이외의 다른 API 호출을 위해 ID 토큰이 필요한 경우에만 이 클라이언트 ID가 필요합니다.

    7. 설정을 클릭합니다. 그러면 클라이언트 ID로 게임이 구성되고 각 Android 리소스의 상수를 포함하는 C# 클래스가 생성됩니다.

Android 설정

Unity에서 Android SDK 설치 경로를 설정합니다. 환경설정 메뉴의 External Tools 섹션 아래에 있습니다.

Android에서 Google Play 게임즈를 실행하도록 Unity 게임을 구성하려면 먼저 Android SDK Manager를 열고 다음 패키지를 다운로드했는지 확인합니다. Android 스튜디오의 SDK Manager를 사용 중인지 아니면 독립형 SDK Manager를 사용 중인지에 따라 구성요소 이름이 다를 수 있습니다. - Google Play 서비스 - Android 지원 라이브러리 - 지원 라이브러리용 로컬 Maven 저장소(Android 지원 저장소라고도 함) - Google 저장소 - Android 6.0(API 23)(최소 SDK 버전에는 영향을 주지 않음).

다음으로, 게임의 패키지 이름을 구성합니다. 구성하려면 File > Build Settings를 클릭하고 Android 플랫폼을 선택한 후 Player Settings를 클릭하여 Unity의 플레이어 설정 창을 표시합니다. 이 창의 Other Settings 아래에서 Bundle Identifier 설정을 찾습니다. 그곳에 패키지 이름을 입력합니다(예: com.example.my.awesome.game).

Play 게임즈 서비스에 로그인하려면 올바른 인증서로 APK 파일에 서명해야 합니다. 올바른 인증서는 설정 중에 Play Console에 입력한 SHA1 인증서 지문입니다.

그런 다음 Window |Google Play Games|Setup - Android setup 메뉴 항목을 클릭합니다. 그러면 Android 설정 화면이 표시됩니다.

Constants 클래스 이름을 입력합니다. 이는 업데이트되거나 생성될 정규화된 클래스의 이름으로, 여기에는 게임 리소스의 ID가 포함됩니다. 이름의 형식은 <namespace>.<classname>입니다. 예: AwesomeGame.GPGSIds

리소스 정의 데이터를 붙여넣습니다. 이는 리소스 ID와 Android용 애플리케이션 ID가 포함된 Google Play Console의 XML 데이터입니다.

이 데이터는 Google Play Console의 리소스 페이지(예: 업적 또는 리더보드)에서 '리소스 보기'를 클릭한 다음 Android를 클릭하여 찾을 수 있습니다.

데이터를 텍스트 영역에 붙여넣은 후 설정 버튼을 클릭합니다.

참고: 게임에 웹 애플리케이션 또는 백엔드 서버를 사용하는 경우 웹 애플리케이션을 게임에 연결하여 플레이어의 ID 토큰 및 이메일 주소를 가져올 수 있습니다. 그렇게 하려면 Google Play Console에서 웹 애플리케이션을 게임에 연결하고 웹 애플리케이션의 클라이언트 ID를 설정 대화상자에 입력합니다.

Windows용 Android 빌드에 대한 추가 안내

Windows를 사용하는 경우 Unity에서 자바 SDK 설치에 액세스할 수 있는지 확인해야 합니다. 다음 단계를 따르세요.

  1. JAVA_HOME 환경 변수를 자바 SDK 설치 경로(예: C:\Program Files\Java\jdk1.7.0_45)에 설정합니다.
  2. 자바 SDK의 bin 폴더를 PATH 환경 변수(예: C:\Program Files\Java\jdk1.7.0_45\bin)에 추가합니다.
  3. 재부팅합니다.

환경 변수를 수정하는 방법: Windows 2000/XP/Vista/7에서는 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭한 다음 속성고급 시스템 속성을 차례로 클릭(또는시스템 속성고급 탭을 차례로 클릭)하고 환경 변수를 클릭합니다. Windows 8에서는 Windows 키 + W를 누르고 환경 변수를 검색합니다. 자세한 내용은 사용 중인 Windows 버전의 문서를 참고하세요.

프로젝트 실행

Smoketest 샘플을 사용하는 경우 이 시점에 프로젝트를 빌드하고 실행할 수 있습니다. Smoketest가 시작되면 자동 로그인 시도가 보입니다.

Android에서 빌드하고 실행하려면 File > Build Settings를 클릭하고 Android 플랫폼을 선택한 다음 Switch to PlatformBuild and Run을 차례로 클릭합니다.

소셜 플랫폼 선택

Google Play 게임즈 플러그인은 Unity의 소셜 인터페이스를 구현합니다. 이를 통해 다른 플랫폼과 통합할 때 이미 그 인터페이스를 사용하는 게임과의 호환성을 유지할 수 있습니다. 하지만 일부는 Play 게임즈의 고유 기능이며, Unity에서 제공하는 표준 소셜 인터페이스의 확장 프로그램 형태로 제공됩니다.

표준 API 호출에는 ISocialPlatform 인터페이스 참조에 해당하는 Social.Active 객체를 통해 액세스할 수 있습니다. 비표준 Google Play 게임즈 확장 프로그램에 액세스하려면 Social.Active 객체를 추가 메서드를 사용할 수 있는 PlayGamesPlatform 클래스에 전송하면 됩니다.

기본 소셜 플랫폼을 재정의하지 않고 플러그인 사용

PlayGamesPlatform.Activate를 호출하면 Google Play 게임즈가 기본 소셜 플랫폼 구현이 됩니다. 즉, SocialSocial.Active의 메서드에 관한 정적 호출은 Google Play 게임즈 플러그인에 의해 실행됩니다. 이는 그 플러그인을 사용하는 대부분의 게임에 바람직한 동작입니다.

하지만 어떤 이유로든 기본 구현의 액세스 가능성을 유지(예: 업적 및 리더보드를 다른 소셜 플랫폼에 제출할 때 기본 구현 사용)하려는 경우, 기본 구현을 재정의하지 않고 Google Play 게임즈 플러그인을 사용할 수 있습니다. 다음 단계를 따르세요.

  1. PlayGamesPlatform.Activate를 호출하지 않습니다.
  2. XyzSocial 클래스에서 호출하려는 메서드의 이름이라면 Social.Xyz를 호출하지 않습니다. 대신 PlayGamesPlatform.Instance.Xyz를 호출합니다.
  3. Google Play 게임즈와 상호작용할 때 Social.Active를 사용하지 않습니다. 대신 PlayGamesPlatform.Instance를 사용합니다.

그렇게 하면 두 개 이상의 소셜 플랫폼에 점수와 업적을 동시에 제출할 수도 있습니다.

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

로그인 서비스 확인

게임이 열리면 로그인 서비스를 사용하여 Play 게임즈 서비스로 연결이 자동으로 시도됩니다. 연결되면 게임에 로그인 메시지가 표시되고 Unity용 Google Play 게임즈 플러그인을 사용할 준비가 됩니다.

사용자가 기기에서 Google Play 게임즈를 사용한 적이 없는 경우 일회성 설정 화면으로 자동으로 안내되어 Play 게임즈 계정을 생성합니다.

스크립트의 Start 메서드에서 자동 로그인 시도 결과를 수신 대기하고, 인증 상태를 가져오고, Play 게임즈 서비스 기능을 중지(사용자가 로그인하지 않은 경우)합니다.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }
}

결과 코드는 로그인 실패 이유를 식별하는 데 사용할 수 있는 enum입니다.

Unity의 소셜 플랫폼을 사용하고 싶다면 다음 코드를 사용할 수도 있습니다.

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Authenticate에서 성공적인 반환 값을 얻을 때까지는 Google Play 게임즈 API를 호출할 수 없습니다. 따라서 인증이 완료될 때까지 사용자가 게임 플레이를 시작할 수 없도록 콜백 호출까지 게임에 대기 화면이 표시되는 것이 좋습니다.

서버 인증 코드 가져오기

현재 플레이어를 대신하여 백엔드 웹 서버에서 Google API에 액세스하려면 클라이언트 애플리케이션에서 인증 코드를 가져와 웹 서버 애플리케이션에 전달해야 합니다. 그러면 인증 코드를 액세스 토큰으로 교환하여 다양한 API를 호출할 수 있습니다. 워크플로에 관한 자세한 내용은 웹사이트용 Google 로그인을 참고하세요.

서버 측 액세스 코드를 가져오는 방법은 다음과 같습니다.

  1. Play 게임즈 콘솔에서 게임에 연결된 웹 애플리케이션의 웹 클라이언트 ID를 구성합니다.

  2. 서버 측 액세스 코드를 받도록 플레이어가 인증되면 PlayGamesPlatform.Instance.RequestServerSideAccess를 호출합니다.

  3. 이 코드를 서버 애플리케이션에 전달합니다.

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

기능 설정 및 추가