Play 게임즈 PC SDK를 사용하여 게임 강화

Play 게임즈 PC SDK를 사용하면 Google Play 서비스에 액세스하여 PC에서 게임을 빌드하고 수익을 창출할 수 있습니다. Play 결제를 사용하여 디지털 콘텐츠를 판매하고, Play 게임즈를 사용하여 원활하게 로그인하며, Play Integrity를 사용하여 사용자에게 애플리케이션에 대한 유효한 권한이 있는지 확인할 수 있습니다.

시작할 준비가 되셨나요?

기본 요건

  • Play Console 내에서 앱 항목을 만들고 Play 패키지 이름을 등록합니다.

  • PC용 Google Play 게임즈를 다운로드 및 설치하고 Google 계정으로 로그인합니다.

1단계: 프로젝트에 SDK 추가

C++

  • Play 게임즈 PC C++ SDK를 다운로드합니다.

  • API 헤더 폴더 includes/를 애플리케이션의 코드베이스에 복사합니다.

  • 대상 아키텍처에 따라 재배포 가능한 파일을 imports/ 디렉터리에서 애플리케이션의 프로젝트로 복사합니다.

  • 64비트 (x64)의 경우: imports/x64/에서 파일을 복사합니다.

  • 32비트 (x86)의 경우: imports/x86/에서 파일을 복사합니다.

  • play_pc_sdk.lib에 대해 프로젝트를 연결하여 play_pc_sdk.dll의 콘텐츠에 액세스할 수 있도록 합니다.

C#

2단계: 매니페스트 파일 추가

게임 내에서 SDK를 사용하려면 먼저 게임 실행 파일을 Play Console 내에서 등록한 Play 패키지 이름과 연결해야 합니다. 게임 실행 파일과 동일한 디렉터리에 manifest.xml 파일을 추가하면 됩니다.

manifest.xml 콘텐츠 예:

<?xml version="1.0" encoding="utf-8"?>
<?Manifest version="1">
   <?Application>
     <?PackageName>com.example.package<?/PackageName>
   <?/Application>
<?/Manifest>

manifest.xml 배치 예:

C:\Program Files
└───Example Game
    ├───Game.exe
    └───manifest.xml

3단계: 게임에 디지털 서명

게임에서 SDK를 사용하려면 Authenticode 디지털 서명을 사용하여 게임의 실행 파일에 디지털 서명해야 합니다. 실행 파일에 서명하는 방법은 SignTool에 관한 문서를 참고하세요 .

게임에 디지털 서명하는 프로세스를 완료한 후 구성할 인증서 정보를 Google 담당자에게 보냅니다.

4단계: SDK 초기화

게임의 시작 시퀀스 중에 SDK를 초기화합니다. 사용자 상호작용 없이 자동으로 실행되어야 하며 게임 창을 렌더링하기 전에 초기화가 성공했는지 확인하는 것이 좋습니다. 이렇게 하면 가능한 한 빨리 오류를 표시하고 해결하여 최상의 사용자 환경을 제공하고 게임 프로세스를 종료해야 하는 경우 게임 창이 잠시 표시되는 것을 방지할 수 있습니다.

GooglePlayInitialize (C++)/ GooglePlayInitialization.InitializeAsync (C#) 를 호출하여 API를 초기화하여 SDK 사용을 시작합니다. 이렇게 하면 전역 상태가 설정되고 SDK 런타임과 연결되며 애플리케이션이 올바르게 시작되었는지 확인됩니다. 다른 API를 사용하기 전에 호출 되고 연속 콜백이 InitializeResult::ok()(C++) / Result.IsOk (C#)가 true와 같게 완료되어야 합니다.

C++

  // Initialize the SDK as part of the startup sequence of your application.
  auto promise = std::make_shared<std::promise<InitializeResult>>();
  GooglePlayInitialize(
    [promise](InitializeResult result) {
      promise->set_value(std::move(result));
    });

  auto initialize_result = promise->get_future().get();
  if (initialize_result.ok()) {
    // The SDK succeeded with initialization. Continue with the startup sequence
    // of the game.
    // ...
  } else if (initialize_result.code() == InitializationError::kActionRequiredShutdownClientProcess) {
    // The SDK failed to initialize and has requested that your game process exit
    // as soon as possible.
    exit(1);
  } else {
    // The SDK failed to initialize for an alternative reason. It is still
    // generally recommended that you exit the game process as soon as possible,
    // because it won't be possible to access any APIs in the SDK. Critical
    // operations such as verifying the user owns a valid license to your game
    // won't be possible.
    // ...
  }

C#

  // SDK Clients
  private BillingClient _billingClient;
  private IntegrityClient _integrityClient;

  // Stored product information
  private string _offerToken;

  private async void InitializeSDK()
  {
      // The factory provides the necessary handler for initialization.
      var initializationHandler = PlayPcSdkFactory.InitializationHandler;
      var result = await GooglePlayInitialization.InitializeAsync(initializationHandler);

      if (result.IsOk)
      {
          // Use the factory to get Unity-compatible instances of the clients
          _billingClient = PlayPcSdkFactory.CreateBillingClient();
          _integrityClient = PlayPcSdkFactory.CreateIntegrityClient();

          // SDK is ready for use
      }
      else
      {
          // Handle specific, actionable errors
          if (result.Code == InitializationError.ActionRequiredShutdownClientProcess)
          {
              Log("This game must be launched through the Google Play Games client. Please exit all game processes immediately, GPG will relaunch the game safely.");
              Application.Quit();
          }
      }
  }

코드 kActionRequiredShutdownClientProcess(C++) / InitializationError.ActionRequiredShutdownClientProcess (C#)로 초기화가 실패하면 가능한 한 빨리 게임 프로세스를 종료 합니다. SDK의 런타임은 게임에서 추가 조치를 취하지 않아도 사용자를 지원하려고 시도합니다. 예를 들어 사용자에게 게임의 유효한 라이선스가 없는 경우 Google Play 게임즈에서 사용자에게 사본을 구매하라는 메시지를 표시합니다. 다른 오류의 경우에도 게임 프로세스를 종료해야 합니다. SDK를 사용하여 사용자가 게임의 유효한 라이선스를 보유하고 있는지 확인하는 등의 중요한 작업을 실행할 수 없기 때문입니다.

성공하지 못한 응답은 다음 조건 중 하나를 나타낼 수 있습니다.

5단계: (선택사항) 여러 게임 프로세스 지원

게임에서 여러 프로세스를 사용하고 Play 게임즈 PC SDK가 PC용 Google Play 게임즈에서 실행하는 프로세스와 다른 프로세스에서 사용되는 경우 이러한 추가 통합 단계를 완료합니다. 예를 들어 PC용 Google Play 게임즈에서 게임의 런처를 실행한 다음 런처에서 SDK와 상호작용하는 게임 프로세스를 시작합니다.

  1. PC용 Google Play 게임즈에서 직접 실행하는 프로세스는 Play 게임즈 PC SDK의 초기화가 성공했는지 확인해야 합니다.

    이렇게 하면 가능한 한 빨리 오류를 표시하여 최상의 사용자 환경을 제공할 수 있습니다. SDK를 사용하는 하위 프로세스도 직접 실행된 프로세스 외에 초기화를 실행해야 합니다.

  2. 하위 프로세스에서 Play 게임즈 PC SDK를 사용하려면 명령줄 매개변수를 생성된 하위 프로세스로 전달합니다.

    명령줄 매개변수 전달 예:

    Processes hierarchy tree:
    
    GooglePlayGames.exe
    └───YourGameLauncher.exe --gpg_args=abc --your_args=123
        └───YourGame.exe --gpg_args=abc --your_args=123
    

    이 예에서는 PC용 Google Play 게임즈(GooglePlayGames.exe)가 일부 매개변수 (--gpg_args=abc --your_args=123)를 사용하여 게임 (YourGameLauncher.exe)을 실행하는 프로세스 계층 구조를 볼 수 있습니다. 그런 다음 게임에서 Play 게임즈 PC SDK를 사용하는 하위 프로세스 (YourGame.exe)를 생성합니다. 이를 허용하기 위해 PC용 Google Play 게임즈에서 실행한 게임 프로세스는 제공된 명령줄 매개변수를 하위 프로세스로 전달합니다.

  3. 게임이 실행을 중지하면 모든 프로세스를 종료합니다.

    사용자가 게임을 닫거나 kActionRequiredShutdownClientProcess와 같은 SDK 초기화 실패로 인해 게임이 종료되면 게임에서 생성한 모든 프로세스를 닫습니다. 이렇게 하면 다음에 PC용 Google Play 게임즈 클라이언트에서 게임을 실행할 때 다른 활성 계정으로 전환하는 등의 새로운 변경사항이 적용됩니다.

다음 단계

IDE에서 개발하는 동안 SDK를 사용합니다.

앱에 Google Play PC 기능 추가: