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

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

ดูภาพรวมระดับสูงของฟีเจอร์ที่กำลังจะเปิดตัว เวอร์ชันที่เสถียร และสถาปัตยกรรมการผสานรวมได้ที่แผนงาน Play Games บน PC

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

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

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

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

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

C++

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

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

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

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

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

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

C#

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

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

เริ่มต้นใช้ 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. 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: (ไม่บังคับ) รองรับกระบวนการเกมหลายรายการ

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