Menyiapkan Google Play Game untuk Unity dan melakukan autentikasi

Dokumen ini memandu Anda dalam menyiapkan project Unity untuk menggunakan plugin Google Play Game untuk Unity. Anda akan mempelajari cara menginstal plugin dan mengonfigurasi project Unity. Dokumen ini juga membahas cara memverifikasi layanan autentikasi.

Sebelum memulai

Tinjau persyaratan software. Siapkan Konsol Play dan instal Unity Editor.

Penginstalan Plugin

Untuk mendownload dan menginstal plugin Google Play Game untuk Unity, ikuti langkah-langkah berikut di Unity Editor:

  1. Download repositori GitHub.

  2. Di direktori current-build, temukan file unitypackage. File ini mewakili plugin. Misalnya, file ini akan terlihat seperti berikut:

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

Menyiapkan project Unity

Untuk menyiapkan project Unity di setelan pemain, ikuti langkah-langkah berikut:

  1. Buka project game Anda.

  2. Di Unity Editor, klik Assets > Import Package > Custom Package untuk mengimpor file unitypackage ke aset project Anda.

  3. Pastikan platform build Anda saat ini disetel ke Android.

    1. Di menu utama, klik File > Build Settings.

    2. Pilih Android lalu klik Switch Platform.

    3. Harus ada item menu baru di bagian Window > Google Play Game. Jika tidak ada, muat ulang aset dengan mengklik Assets > Refresh , lalu coba tetapkan platform build lagi.

  4. Di Unity Editor, klik File > Build Settings > Player Settings > Other Settings.

  5. Di kotak level API target, pilih versi.

  6. Di kotak Scripting backend, masukkan IL2CPP.

  7. Di kotak Target architectures, pilih nilai.

  8. Perhatikan nama paket package_name.Anda dapat menggunakan informasi ini nanti.

Setelan pemain di project Unity Anda
Setelan pemain di project Unity Anda.

Membuat keystore baru

Untuk memvalidasi kredensial, Anda memerlukan kunci. Ikuti langkah berikut:

  1. Di Unity Editor, klik File > Build settings > Player settings.
  2. Di bagian Publishing settings, klik Keystore manager.
    1. Di jendela Keystore manager, klik Keystore > Create new > Anywhere.
    2. Pilih folder dan berikan nama untuk keystore.
    3. Di kotak Password, masukkan sandi dan konfirmasi.
    4. Klik Add key.

Perhatikan nama folder. Anda dapat menggunakan nama ini untuk membuat kredensial di Google Cloud.

Menyalin resource Android dari Konsol Play

Setiap pencapaian, papan peringkat, dan peristiwa yang Anda buat di Konsol Play akan menyertakan resource Android yang Anda gunakan saat Anda menyiapkan project Unity.

Untuk mendapatkan resource Android untuk game Anda, ikuti langkah-langkah berikut:

  1. Di Konsol Google Play, buka game.

  2. Di halaman Layanan Play Games - Konfigurasi (Menumbuhkan pengguna > Layanan Play Games > Penyiapan dan pengelolaan > Konfigurasi), klik Dapatkan resource.

  3. Di jendela Resources, klik tab Android(XML).

  4. Pilih dan salin konten resource Android (AndroidManifest.xml).

Menambahkan resource Android ke project Unity Anda

Tambahkan resource Android berikut ke project Unity Anda:

  1. Di Unity Editor, klik Window > Google Play Games > Setup > Penyiapan Android.

    • Di kolom Directory to save constants, masukkan nama folder untuk file konstanta.
    • Di kolom Constants class name, masukkan nama class C# yang akan dibuat, termasuk namespace.

      Misalnya, jika class C# adalah id.cs dan ada di bagian Assets > myproject > scripts > id.cs. Nama class konstanta dapat berupa myproject.scripts.id.

    • Di kolom Resources definition, tempel data resource Android (file AndroidManifest.xml) yang Anda salin dari Konsol Google Play.

    • Opsional: Di kolom Client ID, masukkan client ID aplikasi web tertaut.

      Untuk mendapatkan client ID untuk game Anda dari Google Cloud, lihat Membuat client ID.

      Client ID ini hanya diperlukan jika Anda memiliki backend berbasis web untuk game dan memerlukan kode autentikasi server untuk ditukar dengan token akses oleh server backend, atau jika Anda memerlukan token ID untuk pemain guna melakukan panggilan API non-game lainnya.

    • Klik Setup. Tindakan ini akan mengonfigurasi game Anda dengan client ID dan membuat class C# yang berisi konstanta untuk setiap resource Android.

  2. Di Unity Editor, klik Window > Google Play Games > Setup > Nearby Connections Setup.

    • Di kolom Nearby connection service ID, masukkan package_name.

      Gunakan package_name yang sama dengan yang Anda gunakan saat menyiapkan project Unity.

    • Klik Setup.

Memilih platform media sosial

Plugin Layanan game Google Play mengimplementasikan antarmuka sosial Unity, untuk kompatibilitas dengan game yang sudah menggunakan antarmuka tersebut saat berintegrasi dengan platform lain. Namun, beberapa fitur bersifat unik untuk Play Game dan ditawarkan sebagai ekstensi untuk antarmuka sosial standar yang disediakan oleh Unity.

Panggilan API standar dapat diakses melalui objek Social.Active yang merupakan referensi ke antarmuka ISocialPlatform. Ekstensi Layanan game Google Play non-standar dapat diakses dengan mentransmisikan objek Social.Active ke class PlayGamesPlatform apabila metode tambahan tersedia.

Menggunakan plugin tanpa mengganti platform media sosial default

Saat Anda memanggil PlayGamesPlatform.Activate, Layanan game Google Play akan menjadi implementasi platform media sosial default. Artinya plugin Layanan game Google Play melakukan panggilan statis ke metode di Social dan Social.Active, yang merupakan perilaku yang diharapkan untuk sebagian besar game yang menggunakan plugin.

Namun, jika karena alasan tertentu Anda ingin tetap membuat implementasi default dapat diakses (misalnya, untuk menggunakannya untuk mengirimkan pencapaian dan papan peringkat ke platform media sosial lain), Anda dapat menggunakan plugin Layanan game Google Play tanpa mengganti implementasi default. Untuk melakukannya:

  1. Panggil metode PlayGamesPlatform.Activate.
  2. Jika Xyz adalah nama metode yang Anda panggil di class Social, jangan panggil Social.Xyz. Sebagai gantinya, panggil PlayGamesPlatform.Instance.Xyz.
  3. Gunakan properti PlayGamesPlatform.Instance dan bukan Social.Active saat Anda berinteraksi dengan Layanan game Google Play.

Dengan begitu, Anda bahkan dapat mengirimkan skor dan pencapaian secara bersamaan ke dua atau beberapa platform sosial:

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

Memverifikasi layanan autentikasi

Koneksi ke Layanan Play Games otomatis dicoba menggunakan autentikasi Platform saat game dibuka. Jika koneksi berhasil, game Anda akan menampilkan perintah login dan siap menggunakan plugin Layanan game Play untuk Unity.

Jika belum pernah menggunakan Layanan game Play di perangkatnya, pengguna akan otomatis diarahkan melalui layar penyiapan satu kali untuk membuat akun Play Game.

Dalam metode Start skrip Anda, proses hasil upaya autentikasi otomatis, ambil status autentikasi, dan nonaktifkan fitur Layanan game Play jika pengguna tidak diautentikasi.

Jika versi plugin Unity sebelum v11, Anda tidak dapat menggunakan fitur autentikasi.

    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 authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

Kode hasil adalah enum yang dapat Anda gunakan untuk mengidentifikasi alasan kegagalan autentikasi.

Jika lebih suka menggunakan platform Social pada Unity, Anda dapat menggunakan kode berikut:

  using GooglePlayGames;

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

Anda tidak dapat melakukan panggilan Google Play Game Services API sampai mendapatkan nilai return dari Authenticate. Oleh karena itu, sebaiknya game menampilkan layar standby sampai callback dipanggil untuk memastikan pengguna tidak dapat mulai memainkan game hingga autentikasi selesai.

Mencegah pembuatan profil yang dimulai otomatis

Anda dapat menonaktifkan perintah pembuatan profil yang dimulai otomatis melalui file manifes. Hal ini memungkinkan pengguna tanpa profil Layanan Play Games untuk terus memuat game tanpa diminta untuk membuat profil Layanan Play Games. Untuk mengetahui informasi selengkapnya, lihat Opsi pembuatan profil.

Untuk menggunakan fitur ini, pastikan kondisi berikut terpenuhi:

  • Perangkat tidak memiliki profil Layanan Play Game di salah satu Akun Google yang login.
  • Game Anda terintegrasi dengan Layanan Play Games plugin Unity 2.1.0 atau yang lebih tinggi.
  1. Di file AndroidManifest.xml, tambahkan tag com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION di elemen <meta-data> dan atribut ke elemen <application>:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>

    Menyetel tanda ini ke benar akan memberi tahu Layanan Play Games bahwa game Anda akan menangani proses pembuatan profil. Oleh karena itu, Layanan Play Games tidak akan otomatis menampilkan antarmuka pengguna pembuatan profil untuk pengguna di perangkat yang tidak memiliki profil Layanan Play Games.

  2. Untuk menangani kasus saat pengguna tidak diautentikasi karena profil Layanan Play Games tidak ada, Anda dapat menggunakan PlayGamesPlatform.Instance.IsAuthenticated(). Metode ini menampilkan false karena pembuatan profil gagal. Untuk mengatasi masalah ini, mulai proses pembuatan profil dengan memanggil PlayGamesPlatform.Instance.ManuallyAuthenticate().

    
    if (!PlayGamesPlatform.Instance.IsAuthenticated()) {
      // The user is unauthenticated, likely due to a missing Play Games profile.
      // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger
      // the profile creation UI.
      PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => {
        // ...
      });
    }
    

  3. Setelah menambahkan tag penonaktifan, gunakan jendela logcat untuk memverifikasi penambahan. Output logcat berisi pesan yang mirip dengan berikut: "Game opted out of automatic profile creation prompt (using manifest)".

Menggunakan Penandatanganan Aplikasi Play

Google mengelola dan melindungi kunci penandatanganan aplikasi Anda menggunakan Penandatanganan Aplikasi Play. Anda dapat menggunakan Penandatanganan Aplikasi Play untuk menandatangani file Android APP Bundle yang dioptimalkan dan didistribusikan. Penandatanganan Aplikasi Play menyimpan kunci penandatanganan aplikasi Anda di infrastruktur Google yang aman. Untuk menggunakan Penandatanganan Aplikasi Play, Anda harus membuat dan mendownload file AAB dari Unity Editor terlebih dahulu. Kemudian, Anda dapat mengupload file AAB ke Konsol Play dan membuat rilis pengujian internal.

Membuat file AAB

Untuk membuat file AAB di Unity Editor, ikuti langkah-langkah berikut:

  1. Di Unity Editor, klik File > Build settings.
  2. Pilih Build App Bundle ( Google Play ).

    Untuk mengetahui informasi selengkapnya, lihat referensi Setelan Build Android.

  3. Klik Build.

  4. Download file AAB dari Unity Editor.

Membuat rilis pengujian internal

Untuk membuat rilis pengujian internal dan menambahkan penguji di Konsol Play, lakukan langkah-langkah berikut:

  1. Di Konsol Google Play, pilih game.
  2. Buka halaman Test and release (Testing > Internal testing).
  3. Klik Upload dan pilih file AAB.
  4. Di kolom Release details, masukkan nama.
  5. Klik Next dan tinjau detail rilis.
  6. Klik Save and publish.
  7. Di tab Testers, klik Create email list untuk menambahkan hingga 100 penguji.

    Untuk mengetahui informasi selengkapnya, lihat Pengujian internal: mengelola hingga 100 penguji.

  8. Di Feedback URL or email address, masukkan URL masukan atau alamat email untuk memberikan masukan.

  9. Klik Save.

Memverifikasi kredensial Penandatanganan aplikasi

  1. Di Konsol Google Play, pilih game.
  2. Buka halaman Test and release (Setup > Penandatanganan aplikasi).
  3. Verifikasi kredensial Penandatanganan aplikasi Anda.

Membangun dan menjalankan project

Anda dapat membangun dan menjalankan project game pada tahap ini. Saat game dimulai, Anda akan melihat upaya autentikasi otomatis.

Anda memerlukan perangkat fisik berbasis Android dengan proses debug USB diaktifkan atau emulator yang dapat menjalankan project yang dikembangkan.

Mengambil kode autentikasi server

Agar dapat mengakses Google API di server web backend atas nama pemain saat ini, Anda harus mendapatkan kode autentikasi dari aplikasi klien dan meneruskannya ke aplikasi server web Anda. Kemudian kode ini dapat ditukarkan dengan token akses untuk melakukan panggilan ke berbagai API. Untuk informasi tentang alur kerja, lihat login dengan Google untuk web.

Untuk mendapatkan kode akses sisi server:

  1. Tambahkan client ID web untuk game Anda di Konsol Play.
    1. Di Konsol Google Play, pilih game Anda.
    2. Di halaman Configuration (Menumbuhkan pengguna > Layanan Play Games > Setup and Management > Configuration), klik Add credential.
    3. Di halaman Add credential, pilih Game server.
    4. Buat client ID OAuth 2.0.
    5. Perhatikan nilai client ID. Anda harus memberikan nilai ini nanti.
  2. Tambahkan client ID web ke hub Unity.

    1. Di hub Unity, siapkan Google Play Game untuk Unity dan lakukan autentikasi.
    2. Di hub Unity, buka Window > Google Play Games > Setup > Penyiapan Android.
    3. Masukkan nilai client ID.
  3. Ambil kode auth server untuk cakupan tambahan.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Menyiapkan dan menambahkan fitur