Thiết lập Google Play Games cho Unity và đăng nhập

Tài liệu này hướng dẫn bạn thiết lập dự án Unity để sử dụng trình bổ trợ Google Play Games cho Unity. Bạn sẽ tìm hiểu cách cài đặt trình bổ trợ và định cấu hình dự án Unity. Tài liệu này cũng trình bày cách xác minh dịch vụ đăng nhập.

Trước khi bắt đầu

Xem các yêu cầu về phần mềm. Thiết lập Play Console và cài đặt Unity Hub.

Cài đặt trình bổ trợ

Để tải xuống và cài đặt trình bổ trợ Google Play Games cho Unity, hãy làm theo các bước sau trong Unity Hub:

  1. Tải kho lưu trữ GitHub xuống.

  2. Trong thư mục current-build, hãy tìm tệp unitypackage. Tệp này đại diện cho trình bổ trợ. Ví dụ: tệp sẽ có dạng như sau:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Thiết lập dự án Unity

Để thiết lập dự án Unity trong phần cài đặt người chơi, hãy làm theo các bước sau:

  1. Mở dự án trò chơi của bạn.

  2. Trong Unity Hub, hãy nhấp vào Assets > Import Package > Custom Package (Thành phần > Nhập gói > Gói tuỳ chỉnh) để nhập tệp unitypackage vào thành phần của dự án.

  3. Đảm bảo nền tảng bản dựng hiện tại của bạn được đặt là Android.

    1. Trong trình đơn chính, hãy nhấp vào File > Build Settings (Tệp > Cài đặt bản dựng).

    2. Chọn Android rồi nhấp vào Switch Platform (Chuyển nền tảng).

    3. Sẽ có một mục mới trong trình đơn tại Window > Google Play Games (Cửa sổ > Google Play Games). Nếu không có, hãy làm mới nội dung bằng cách nhấp vào Assets > Refresh (Nội dung > Làm mới), sau đó thử đặt lại nền tảng bản dựng.

  4. Trong Unity Hub, hãy nhấp vào File > Build Settings > Player Settings > Other Settings (Tệp > Cài đặt bản dựng > Cài đặt người chơi > Cài đặt khác).

  5. Trong hộp Target API level (Cấp độ API mục tiêu), hãy chọn một phiên bản.

  6. Trong hộp Scripting backend (Phần phụ trợ tập lệnh), hãy nhập IL2CPP.

  7. Trong hộp Target architectures (Kiến trúc mục tiêu), hãy chọn một giá trị.

  8. Lưu ý tên gói package_name.Bạn có thể sử dụng thông tin này sau.

Phần cài đặt trình phát trong dự án Unity
Chế độ cài đặt trình phát trong dự án Unity.

Tạo kho khoá mới

Để xác thực thông tin xác thực, bạn cần có khoá. Hãy làm theo các bước sau:

  1. Trong Unity Hub, hãy nhấp vào File > Build settings > Player settings (Tệp > Cài đặt bản dựng > Cài đặt người chơi).
  2. Trong phần Cài đặt phát hành, hãy nhấp vào Trình quản lý kho khoá.
    1. Trong cửa sổ Keystore manager (Trình quản lý kho khoá), hãy nhấp vào Keystore > Create new > Anywhere (Kho khoá > Tạo mới > Bất kỳ vị trí nào).
    2. Chọn một thư mục và đặt tên cho kho khoá.
    3. Trong hộp Password (Mật khẩu), hãy nhập mật khẩu rồi xác nhận.
    4. Nhấp vào Thêm khoá.

Ghi lại tên thư mục. Bạn có thể sử dụng tên này để tạo thông tin xác thực trong Google Cloud.

Sao chép tài nguyên Android từ Play Console

Mỗi thành tích, bảng xếp hạng và sự kiện mà bạn tạo trong Play Console đều bao gồm một tài nguyên Android mà bạn sử dụng khi thiết lập dự án Unity.

Để tải các tài nguyên Android cho trò chơi, hãy làm theo các bước sau:

  1. Trong Google Play Console, hãy mở trò chơi.

  2. Trên trang Dịch vụ trò chơi của Play – Cấu hình (Phát triển > Dịch vụ trò chơi của Play > Thiết lập và quản lý > Cấu hình), hãy nhấp vào Nhận tài nguyên.

  3. Trong cửa sổ Resources (Tài nguyên), hãy nhấp vào thẻ Android(XML).

  4. Chọn và sao chép nội dung tài nguyên Android (AndroidManifest.xml).

Thêm tài nguyên Android vào dự án Unity

Thêm các tài nguyên Android sau vào dự án Unity:

  1. Trong Unity Hub, hãy nhấp vào Window (Cửa sổ) > Google Play Games > Setup (Thiết lập) > Android Setup (Thiết lập Android).

    • Trong trường Directory to save constants (Thư mục lưu hằng số), hãy nhập tên thư mục cho tệp hằng số.
    • Trong trường Constants class name (Tên lớp hằng số), hãy nhập tên của lớp C# cần tạo, bao gồm cả không gian tên.

      Ví dụ: nếu lớp C# là id.cs và nằm trong Assets (Tài sản) > myproject (dự án của tôi) > scripts (tập lệnh) > id.cs. Tên lớp hằng số có thể là myproject.scripts.id.

    • Trong trường Resources definition (Định nghĩa tài nguyên), hãy dán dữ liệu tài nguyên Android (tệp AndroidManifest.xml) mà bạn đã sao chép từ Google Play Console.

    • Không bắt buộc: Trong trường Mã ứng dụng khách, hãy nhập mã ứng dụng khách của ứng dụng web đã liên kết.

      Để lấy mã ứng dụng khách cho trò chơi của bạn từ Google Cloud, hãy xem phần Tạo mã ứng dụng khách.

      Bạn chỉ cần mã này nếu bạn có phần phụ trợ dựa trên nền tảng web cho trò chơi của mình và cần một mã xác thực máy chủ để trao đổi với một mã truy cập của máy chủ phụ trợ, hoặc nếu bạn cần mã nhận dạng người chơi để thực hiện các lệnh gọi API khác ngoài trò chơi.

    • Nhấp vào Setup (Thiết lập). Thao tác này sẽ định cấu hình trò chơi của bạn với mã ứng dụng khách và tạo một lớp C# chứa hằng số cho mỗi tài nguyên Android của bạn.

  2. Trong Unity Hub, hãy nhấp vào Window (Cửa sổ) > Google Play Games > Setup (Thiết lập) > Nearby Connections Setup (Thiết lập kết nối lân cận).

    • Trong trường Mã dịch vụ kết nối lân cận, hãy nhập package_name.

      Sử dụng cùng một package_name mà bạn đã sử dụng trong phần thiết lập dự án Unity.

    • Nhấp vào Setup (Thiết lập).

Chọn một nền tảng mạng xã hội

Trình bổ trợ Dịch vụ trò chơi của Google Play triển khai giao diện xã hội của Unity để tương thích với các trò chơi đã sử dụng giao diện đó khi tích hợp với các nền tảng khác. Tuy nhiên, một số tính năng chỉ dành riêng cho Play Games và được cung cấp dưới dạng tiện ích mở rộng tới giao diện mạng xã hội chuẩn do Unity cung cấp.

Các lệnh gọi API chuẩn có thể được truy cập thông qua đối tượng Social.Active, là một đối tượng tham chiếu đến giao diện ISocialPlatform. Bạn có thể truy cập các tiện ích mở rộng không tiêu chuẩn của Dịch vụ trò chơi của Google Play bằng cách truyền đối tượng Social.Active vào lớp PlayGamesPlatform, nơi có các phương thức bổ sung.

Dùng trình bổ trợ này mà không cần ghi đè nền tảng mạng xã hội mặc định

Khi bạn gọi PlayGamesPlatform.Activate, Dịch vụ trò chơi của Google Play sẽ trở thành phương thức triển khai nền tảng xã hội mặc định, nghĩa là lệnh gọi tĩnh đến các phương thức trong SocialSocial.Active sẽ được trình bổ trợ Dịch vụ trò chơi của Google Play thực hiện. Đây là hành vi của hầu hết các trò chơi sử dụng trình bổ trợ.

Tuy nhiên, nếu vì lý do nào đó bạn vẫn muốn sử dụng phương thức triển khai mặc định (chẳng hạn như sử dụng phương thức này để gửi thành tích và bảng xếp hạng đến một nền tảng xã hội khác), bạn có thể sử dụng trình bổ trợ Dịch vụ trò chơi của Google Play mà không cần ghi đè chế độ cài đặt mặc định. Để thực hiện việc này:

  1. Không gọi PlayGamesPlatform.Activate
  2. Nếu Xyz là tên của phương thức mà bạn cần gọi trên lớp Social, thì đừng gọi Social.Xyz. Thay vào đó, hãy gọi PlayGamesPlatform.Instance.Xyz
  3. Đừng sử dụng Social.Active khi tương tác với Dịch vụ trò chơi của Google Play. Thay vào đó, hãy dùng PlayGamesPlatform.Instance

Bằng cách đó, bạn thậm chí có thể gửi điểm và thành tích cùng lúc cho 2 hoặc nhiều nền tảng mạng xã hội:

    // 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);

Xác minh dịch vụ đăng nhập

Hệ thống sẽ tự động tìm cách kết nối với Dịch vụ trò chơi của Play bằng dịch vụ Đăng nhập khi trò chơi của bạn mở ra. Nếu kết nối thành công, trò chơi của bạn sẽ hiển thị lời nhắc đăng nhập và sẵn sàng sử dụng trình bổ trợ Dịch vụ trò chơi của Google Play cho Unity.

Nếu người dùng chưa từng sử dụng Dịch vụ trò chơi của Google Play trên thiết bị của họ, thì người dùng đó sẽ tự động được chuyển đến màn hình thiết lập một lần để tạo tài khoản Play Games.

Trong phương thức Start của tập lệnh, hãy chờ nhận kết quả của lần tự động đăng nhập, tìm nạp trạng thái xác thực và tắt các tính năng Dịch vụ trò chơi của Google Play nếu người dùng chưa đăng nhập.

Nếu phiên bản trình bổ trợ Unity trước v11, bạn không thể sử dụng tính năng đăng nhập.

    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).
      }
    }

Mã kết quả là một giá trị enum mà bạn có thể sử dụng để xác định lý do không đăng nhập được.

Nếu muốn sử dụng nền tảng mạng xã hội của Unity, bạn có thể sử dụng đoạn mã sau đây:

  using GooglePlayGames;

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

Bạn không thể thực hiện bất kỳ lệnh gọi API Dịch vụ trò chơi của Google Play nào cho đến khi nhận được giá trị trả về thành công từ Authenticate. Do đó, các trò chơi nên hiển thị một màn hình chờ cho đến khi hệ thống thực hiện lệnh gọi lại để đảm bảo rằng người dùng không thể bắt đầu chơi trò chơi nếu quá trình xác thực chưa hoàn tất.

Sử dụng Tính năng ký ứng dụng của Play

Google quản lý và bảo vệ khoá ký của ứng dụng bằng Tính năng ký ứng dụng của Play. Bạn có thể sử dụng tính năng Ký ứng dụng của Play để ký tệp Android App Bundle(AAB) phân phối đã được tối ưu hoá. Tính năng ký ứng dụng của Play lưu trữ khoá ký ứng dụng trên cơ sở hạ tầng bảo mật của Google. Để sử dụng Tính năng ký ứng dụng của Play, trước tiên, bạn phải tạo và tải tệp AAB xuống từ Unity Hub. Sau đó, bạn có thể tải tệp AAB lên Play Console và tạo một bản phát hành thử nghiệm nội bộ.

Tạo tệp AAB

Để tạo tệp AAB trong Unity Hub, hãy làm theo các bước sau:

  1. Trong Unity Hub, hãy nhấp vào File > Build settings (Tệp > Cài đặt bản dựng).
  2. Chọn Build App Bundle ( Google Play ) (Tạo gói ứng dụng (Google Play)).

    Để biết thêm thông tin, hãy xem nội dung Tài liệu tham khảo về Cài đặt bản dựng Android.

  3. Nhấp vào Build (Bản dựng).

  4. Tải tệp AAB xuống từ Unity Hub.

Tạo bản phát hành thử nghiệm nội bộ

Để tạo bản phát hành thử nghiệm nội bộ và thêm người kiểm thử trong Play Console, hãy thực hiện các bước sau:

  1. Trong Google Play Console, hãy chọn một trò chơi.
  2. Chuyển đến trang Kiểm thử và phát hành (Kiểm thử > Thử nghiệm nội bộ).
  3. Nhấp vào Tải lên rồi chọn tệp AAB.
  4. Trong trường Release details (Thông tin chi tiết về bản phát hành), hãy nhập tên.
  5. Nhấp vào Tiếp theo rồi xem lại thông tin chi tiết về bản phát hành.
  6. Nhấp Lưu và xuất bản.
  7. Trên thẻ Người kiểm thử, hãy nhấp vào Tạo danh sách email để thêm tối đa 100 người kiểm thử.

    Để biết thêm thông tin, hãy xem bài viết Kiểm thử nội bộ: quản lý tối đa 100 người thử nghiệm.

  8. Trong mục Địa chỉ email hoặc URL để gửi phản hồi, hãy nhập một URL hoặc địa chỉ email để gửi phản hồi.

  9. Nhấp vào Lưu.

Xác minh thông tin đăng nhập để ký ứng dụng

  1. Trong Google Play Console, hãy chọn một trò chơi.
  2. Chuyển đến trang Kiểm thử và phát hành (Thiết lập > Ký ứng dụng).
  3. Xác minh thông tin đăng nhập để ký ứng dụng.

Tạo bản dựng và chạy dự án

Bạn có thể tạo và chạy dự án trò chơi tại thời điểm này. Khi trò chơi bắt đầu, bạn sẽ thấy thao tác đăng nhập tự động.

Bạn cần một thiết bị thực chạy Android đã bật tính năng gỡ lỗi qua USB hoặc một trình mô phỏng có thể chạy dự án đã phát triển.

Truy xuất mã xác thực máy chủ

Để truy cập API Google trên máy chủ web phụ trợ thay mặt cho người chơi hiện tại, bạn cần lấy mã xác thực từ ứng dụng khách và truyền mã này đến ứng dụng máy chủ web của bạn. Sau đó, bạn có thể đổi mã đó lấy mã truy cập để gọi đến nhiều API. Để biết thông tin về quy trình, vui lòng xem phần đăng nhập bằng Google cho web.

Cách nhận mã truy cập phía máy chủ:

  1. Định cấu hình mã ứng dụng web được liên kết với trò chơi của bạn trong Play Console.

  2. Gọi PlayGamesPlatform.Instance.RequestServerSideAccess sau khi xác thực người chơi để lấy mã truy cập phía máy chủ.

  3. Truyền mã này vào ứng dụng máy chủ của bạn.

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

Thiết lập và thêm tính năng