ขับเคลื่อนเกมของคุณโดยใช้ Play Games PC SDK

Play Games PC SDK ช่วยให้คุณเข้าถึงบริการของ Google Play เพื่อสร้างและสร้างรายได้จากเกมบน PC ได้ ขายเนื้อหาดิจิทัลโดยใช้ Play Billing, ลงชื่อเข้าใช้อย่างราบรื่นโดยใช้ Play Games และยืนยันว่าผู้ใช้มีสิทธิ์ที่ถูกต้องในแอปพลิเคชันของคุณด้วย Play Integrity

หากพร้อมที่จะเริ่มแล้ว

สิ่งที่ต้องมีก่อน

  • สร้างรายการแอปภายใน Play Console และรับสิทธิ์ชื่อแพ็กเกจของ Play

  • ดาวน์โหลดและติดตั้ง Google Play Games บน PC แล้วลงชื่อเข้าใช้ด้วย บัญชี Google

ขั้นตอนที่ 1: เพิ่ม SDK ลงในโปรเจ็กต์

C++

  • ดาวน์โหลด Play Games PC C++ SDK

  • คัดลอกโฟลเดอร์ส่วนหัวของ API includes/ ลงในฐานโค้ดของแอปพลิเคชัน

  • คัดลอกไฟล์ที่แจกจ่ายซ้ำได้จากไดเรกทอรี imports/ ลงในโปรเจ็กต์ของแอปพลิเคชัน โดยขึ้นอยู่กับสถาปัตยกรรมเป้าหมาย

  • สำหรับ 64 บิต (x64): คัดลอกไฟล์จาก imports/x64/

  • สำหรับ 32 บิต (x86): คัดลอกไฟล์จาก imports/x86/

  • ลิงก์โปรเจ็กต์กับ play_pc_sdk.lib เพื่อให้เข้าถึงเนื้อหาของ play_pc_sdk.dll ได้

C#

ขั้นตอนที่ 2: เพิ่มไฟล์ Manifest

คุณจะต้องเชื่อมโยงไฟล์ปฏิบัติการของเกมกับชื่อแพ็กเกจของ Play ที่คุณรับสิทธิ์ภายใน Play Console ก่อนจึงจะใช้ SDK จากภายในเกมได้ โดยการเพิ่มไฟล์ 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: ลงนามดิจิทัลในเกม

เกมต้องลงนามดิจิทัลในไฟล์ปฏิบัติการของเกมโดยใช้ ลายเซ็นดิจิทัล Authenticodeก่อนจึงจะใช้ SDK ได้ ดูวิธีการลงนามในไฟล์ปฏิบัติการได้ในเอกสารประกอบเกี่ยวกับ SignTool

เมื่อดำเนินการตามกระบวนการลงนามดิจิทัลในเกมเสร็จแล้ว ให้ส่งข้อมูลใบรับรองไปยังตัวแทนของ Google เพื่อทำการกำหนดค่า

ขั้นตอนที่ 4: เริ่มต้น SDK

เริ่มต้น SDK ระหว่างลำดับการเริ่มต้นของเกม การดำเนินการนี้ควรทำโดยอัตโนมัติโดยไม่ต้องให้ผู้ใช้โต้ตอบ และขอแนะนำให้ยืนยันว่าการเริ่มต้นสำเร็จก่อนแสดงหน้าต่างเกม ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดแก่ผู้ใช้ด้วยการแสดงและแก้ไขข้อผิดพลาดโดยเร็วที่สุด และหลีกเลี่ยงไม่ให้หน้าต่างเกมปรากฏขึ้นชั่วครู่ในกรณีที่กระบวนการของเกมต้องออก

เริ่มใช้ SDK โดยเรียก GooglePlayInitialize (C++) / GooglePlayInitialization.InitializeAsync (C#) เพื่อเริ่มต้น API ซึ่งจะตั้งค่าสถานะส่วนกลาง เชื่อมต่อกับรันไทม์ของ SDK และยืนยันว่าแอปพลิเคชันเริ่มต้นอย่างถูกต้อง คุณต้อง เรียกใช้ฟังก์ชันนี้และให้ฟังก์ชันเรียกกลับการดำเนินการต่อเสร็จสมบูรณ์โดยมี InitializeResult::ok() (C++) / Result.IsOk (C#) เท่ากับ true ก่อนจึงจะใช้ API อื่นๆ ได้

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 Games จะแจ้งให้ผู้ใช้ซื้อสำเนา สำหรับข้อผิดพลาดอื่นๆ คุณควรออกจากกระบวนการของเกมด้วย เนื่องจากคุณจะไม่สามารถใช้ SDK เพื่อดำเนินการที่สำคัญ เช่น การยืนยันว่าผู้ใช้มีใบอนุญาตที่ถูกต้องสำหรับเกม

การตอบกลับที่ไม่สำเร็จอาจบ่งบอกถึงเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้

  • ไม่ได้ติดตั้งรันไทม์ของ SDK, ไม่ได้ทำงานบนอุปกรณ์ หรือเป็นเวอร์ชันเก่าที่ไม่เข้ากันกับ SDK ที่ผสานรวมอยู่ในเกม

  • รันไทม์ของ SDK ยืนยันข้อมูลประจำตัวของแอปพลิเคชันของเกมไม่ได้ ซึ่งอาจเกิดจาก manifest.xml ไม่ถูกต้อง หรือใช้ SDK โดยไม่ได้เปิดใช้ โหมดนักพัฒนาแอป เมื่อพัฒนา หากไม่มีการดำเนินการนี้ คุณจะต้องลงนามดิจิทัลในไฟล์ปฏิบัติการของเกมด้วยใบรับรองดิจิทัลที่ลงทะเบียนกับชื่อแพ็กเกจของ Play

  • ไม่ได้เปิดใช้ไฟล์ปฏิบัติการของเกมผ่านไคลเอ็นต์ Google Play Games

  • ผู้ใช้ที่ใช้งานอยู่ใน Google Play Games ไม่มีใบอนุญาตสำหรับแอปพลิเคชัน

ขั้นตอนที่ 5: (ไม่บังคับ) การรองรับกระบวนการของเกมหลายรายการ

ทำตามขั้นตอนการผสานรวมเพิ่มเติมเหล่านี้หากเกมของคุณใช้กระบวนการหลายรายการ และกระบวนการอื่นที่ไม่ใช่กระบวนการที่เปิดใช้โดย Google Play Games บน PC ใช้ Play Games PC SDK เช่น หาก Google Play Games บน PC เปิดใช้ Launcher ของเกม จากนั้น Launcher จะเริ่มกระบวนการของเกมที่จะโต้ตอบกับ SDK

  1. กระบวนการที่เปิดใช้โดย Google Play Games บน PC โดยตรงต้อง ยืนยันว่าการเริ่มต้น Play Games PC SDK สำเร็จ

    ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดแก่ผู้ใช้ด้วยการแสดงข้อผิดพลาดโดยเร็วที่สุด โปรดทราบว่ากระบวนการย่อยที่ใช้ SDK ต้องทำการเริ่มต้นด้วย นอกเหนือจากกระบวนการที่เปิดใช้โดยตรง

  2. หากต้องการใช้ Play Games PC SDK ในกระบวนการย่อย ให้ส่งต่อพารามิเตอร์บรรทัดคำสั่งไปยังกระบวนการย่อยที่สร้างขึ้น

    ตัวอย่างการส่งต่อพารามิเตอร์บรรทัดคำสั่ง

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

    ในตัวอย่างนี้ เราจะเห็นลำดับชั้นของกระบวนการที่ Google Play Games บน PC (GooglePlayGames.exe) เปิดใช้เกม (YourGameLauncher.exe) โดยมีพารามิเตอร์ตัวอย่าง (--gpg_args=abc --your_args=123) จากนั้นเกมจะสร้างกระบวนการย่อย (YourGame.exe) ซึ่งใช้ Play Games PC SDK เพื่อให้ดำเนินการนี้ได้ กระบวนการของเกมที่เปิดใช้โดย Google Play Games บน PC จะส่งต่อพารามิเตอร์บรรทัดคำสั่งที่ได้รับไปยังกระบวนการย่อย

  3. ออกกระบวนการทั้งหมดเมื่อเกมหยุดทำงาน

    เมื่อผู้ใช้ปิดเกมหรือเกมออกเนื่องจากการเริ่มต้น SDK ล้มเหลว เช่น kActionRequiredShutdownClientProcess ให้ปิดกระบวนการทั้งหมดที่เกมสร้างขึ้น ซึ่งจะช่วยให้แน่ใจว่าการเปลี่ยนแปลงใหม่ๆ เช่น การเปลี่ยนไปใช้บัญชีที่ใช้งานอยู่บัญชีอื่นจะมีผลในครั้งถัดไปที่ไคลเอ็นต์ Google Play Games บน PC เปิดใช้เกม

ขั้นตอนถัดไป

ใช้ SDK ขณะพัฒนาใน IDE โดยทำดังนี้

เพิ่มฟีเจอร์ Google Play บน PC ลงในแอปโดยทำดังนี้