Nâng tầm trò chơi bằng SDK Play Games dành cho máy tính

Với SDK Play Games cho máy tính, bạn có thể truy cập vào Dịch vụ Google Play để xây dựng và kiếm tiền từ trò chơi trên máy tính. Bán nội dung kỹ thuật số bằng Play Billing, đăng nhập liền mạch bằng Play Games và xác minh rằng người dùng có quyền hợp lệ đối với ứng dụng của bạn bằng Play Integrity.

Bạn đã sẵn sàng bắt đầu?

Điều kiện tiên quyết

  • Tạo một mục nhập ứng dụng trong Play Console và xác nhận tên gói Play.

  • Tải và cài đặt Google Play Games cho máy tính rồi đăng nhập bằng Tài khoản Google của bạn.

Bước 1: Thêm SDK vào dự án

C++

  • Tải SDK Play Games cho máy tính C++ xuống.

  • Sao chép thư mục tiêu đề API includes/ vào cơ sở mã của ứng dụng.

  • Sao chép các tệp có thể phân phối lại từ thư mục imports/ vào dự án của ứng dụng, tuỳ thuộc vào kiến trúc mục tiêu:

  • Đối với 64 bit (x64): Sao chép các tệp từ imports/x64/.

  • Đối với 32 bit (x86): Sao chép các tệp từ imports/x86/.

  • Liên kết dự án của bạn với play_pc_sdk.lib để cho phép truy cập vào nội dung của play_pc_sdk.dll.

C#

Bước 2: Thêm tệp kê khai

Trước khi có thể sử dụng SDK trong trò chơi, bạn cần liên kết tệp thực thi trò chơi với tên gói Play mà bạn đã xác nhận trong Play Console. Bạn có thể thực hiện việc này bằng cách thêm tệp manifest.xml vào cùng thư mục với tệp thực thi của trò chơi.

Nội dung ví dụ về manifest.xml:

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

Vị trí ví dụ về manifest.xml:

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

Bước 3: Ký số trò chơi

Trước khi trò chơi có thể sử dụng SDK, tệp thực thi của trò chơi phải được ký số bằng Chữ ký số Authenticode. Để biết hướng dẫn về cách ký tệp thực thi, hãy xem tài liệu về SignTool .

Khi bạn đã hoàn tất quy trình ký số trò chơi, hãy gửi thông tin chứng chỉ cho đại diện của Google để định cấu hình.

Bước 4: Khởi chạy SDK

Khởi chạy SDK trong trình tự khởi động của trò chơi. Quá trình này sẽ được thực hiện tự động mà không cần bất kỳ tương tác nào của người dùng. Bạn nên xác minh quá trình khởi chạy thành công trước khi kết xuất cửa sổ trò chơi. Điều này mang lại trải nghiệm tốt nhất cho người dùng bằng cách hiển thị và giải quyết lỗi sớm nhất có thể, đồng thời tránh trường hợp cửa sổ trò chơi xuất hiện trong thời gian ngắn khi quy trình trò chơi cần thoát.

Bắt đầu sử dụng SDK bằng cách gọi GooglePlayInitialize (C++) / GooglePlayInitialization.InitializeAsync (C#) để khởi chạy API. Thao tác này sẽ thiết lập trạng thái chung, kết nối với thời gian chạy SDK và xác minh rằng ứng dụng đã được khởi động đúng cách. Bạn PHẢI gọi và hoàn tất lệnh gọi lại tiếp tục bằng InitializeResult::ok() (C++) / Result.IsOk (C#) bằng true trước khi có thể sử dụng bất kỳ API nào khác.

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();
          }
      }
  }

Nếu quá trình khởi chạy không thành công với mã kActionRequiredShutdownClientProcess (C++) / InitializationError.ActionRequiredShutdownClientProcess (C#), hãy thoát khỏi quy trình trò chơi càng sớm càng tốt. Thời gian chạy của SDK sẽ cố gắng hỗ trợ người dùng mà không cần trò chơi của bạn thực hiện thêm hành động nào. Ví dụ: nếu người dùng không sở hữu giấy phép hợp lệ cho trò chơi, Google Play Games sẽ nhắc người dùng mua một bản sao. Đối với các lỗi khác, bạn cũng nên thoát khỏi quy trình trò chơi vì bạn sẽ không thể sử dụng SDK để thực hiện các thao tác quan trọng, chẳng hạn như xác minh rằng người dùng sở hữu giấy phép hợp lệ cho trò chơi của bạn.

Phản hồi không thành công có thể cho biết một trong các điều kiện sau:

  • Thời gian chạy SDK chưa được cài đặt, không chạy trên thiết bị hoặc là phiên bản cũ không tương thích với SDK được tích hợp vào trò chơi của bạn.

  • Thời gian chạy SDK không xác minh được danh tính ứng dụng của trò chơi. Điều này có thể là do manifest.xml không hợp lệ hoặc sử dụng SDK mà không bật chế độ nhà phát triển khi phát triển. Nếu không có điều này, tệp thực thi của trò chơi phải được ký số bằng chứng chỉ số đã đăng ký với tên gói Play của bạn.

  • Tệp thực thi trò chơi không được khởi chạy thông qua ứng dụng Google Play Games.

  • Người dùng đang hoạt động trong Google Play Games không sở hữu giấy phép cho ứng dụng.

Bước 5: (Không bắt buộc) Hỗ trợ nhiều quy trình trò chơi

Hoàn tất các bước tích hợp bổ sung này nếu trò chơi của bạn sử dụng nhiều quy trình và SDK Play Games cho máy tính được sử dụng bởi một quy trình khác với quy trình được Google Play Games trên máy tính khởi chạy. Ví dụ: nếu Google Play Games trên máy tính khởi chạy trình chạy trò chơi của bạn, sau đó trình chạy của bạn sẽ bắt đầu quy trình trò chơi tương tác với SDK.

  1. Quy trình được Google Play Games cho máy tính khởi chạy trực tiếp phải xác minh quá trình khởi chạy SDK Play Games cho máy tính thành công.

    Điều này mang lại trải nghiệm tốt nhất cho người dùng bằng cách hiển thị lỗi sớm nhất có thể. Xin lưu ý rằng quy trình con sử dụng SDK cũng phải thực hiện quá trình khởi chạy ngoài quy trình được khởi chạy trực tiếp.

  2. Để sử dụng SDK Play Games cho máy tính trong quy trình con, hãy chuyển tiếp các tham số dòng lệnh đến quy trình con được tạo.

    Ví dụ về việc chuyển tiếp tham số dòng lệnh:

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

    Trong ví dụ này, chúng ta thấy một hệ phân cấp quy trình trong đó Google Play Games cho máy tính (GooglePlayGames.exe) khởi chạy trò chơi (YourGameLauncher.exe) với một số tham số ví dụ (--gpg_args=abc --your_args=123). Sau đó, trò chơi sẽ tạo một quy trình con (YourGame.exe) sử dụng SDK Play Games cho máy tính. Để cho phép điều này, quy trình trò chơi được Google Play Games cho máy tính khởi chạy sẽ chuyển tiếp các tham số dòng lệnh được cung cấp cho quy trình con.

  3. Thoát khỏi tất cả các quy trình khi trò chơi ngừng chạy.

    Khi người dùng đóng trò chơi của bạn hoặc trò chơi thoát do lỗi khởi chạy SDK, chẳng hạn như kActionRequiredShutdownClientProcess, hãy đóng tất cả các quy trình mà trò chơi của bạn đã tạo. Điều này đảm bảo rằng vào lần tiếp theo khi trò chơi của bạn được ứng dụng Google Play Games cho máy tính khởi chạy, các thay đổi mới như chuyển sang một tài khoản đang hoạt động khác sẽ có hiệu lực.

Các bước tiếp theo

Sử dụng SDK trong khi phát triển trong IDE:

Thêm các tính năng của Google Play cho máy tính vào ứng dụng của bạn: