Mengintegrasikan Google Leaderboard pada Game VR Android

Adam Ardisasmita 10 Juli 2016

Mengintegrasikan Google Leaderboard pada Game VR Android

Kali ini saya akan membahas cara mengintegrasikan leaderbard dari Google Play Service ke dalam game menggunakan game engine Unity. Untuk mengikuti tutorial ini, kamu diharapkan sudah memiliki Google Play Developer Account dan sudah memiliki APK dari aplikasi yang sudah disubmit dan siap diintegrasi dengan Google Play service.

Hal tersebut diperlukan karena proses setup leaderboard sangat dependent dengan akun developer dan APK kamu di Google Play. Dan jika kamu butuh tutorial lebih lanjut untuk mengembangkan game menggunakan Unity, kamu bisa mengunjungi Dicoding Academy untuk belajar membuat game secara cuma-cuma.

Kita mulai saja tutorial untuk mengintegrasikan leaderboard dari Google Play Service ke dalam game menggunakan Unity.

Baca juga: Membuat Game Virtual Reality Android yang Mendukung Kontrol Joystick

Setup Game Service di Google Play Developer Console

Jika kamu sudah login ke dalam Google Play Developer Console, kamu dapat mengakses tab Google Play games service yang berada di tab sebelah kiri.

Screen Shot 2016-06-30 at 1.27.25 PM

Setelah itu kamu bisa setup Google Play Game Service untuk game yang ingin kamu integrasikan.

Screen Shot 2016-06-30 at 1.33.43 PM

Setelah itu kamu perlu melengkapi Game Details di form yang muncul terkait game yang ingin kamu integrasikan. Untuk keperluan testing, kamu hanya perlu memasukan “display name” saja. Field yang lain baru diperlukan ketika kamu ingin publish game yang kamu buat.

Generate OAuth 2.0 Client ID

Tahap selanjutnya adalah membuat OAuth 2.0 Client ID yang diperlukan ketika proses autentikasi dan autorisasi ketika memanggil Google Play Serivces. Berikut adalah tahapan untuk membuat OAuth 2.0 Client ID.

Screen Shot 2016-07-02 at 11.52.25 PM

Pertama kamu perlu membuat linked application dengan cara klik Linked App page dan pilih platform yang ingin digunakan. Karena kita ingin membuat aplikasi berbasis Android,

Screen Shot 2016-07-02 at 11.28.59 PM

Pilih tombol bergambar Android.

Screen Shot 2016-07-02 at 11.52.50 PM

Lalu kamu akan diminta memasukan app detail. Package name bisa kamu search untuk mencari APK yang sudah diupload di dalam Google Play Developer Console miliki mu. Kemudian biarkan setting-an lainnya seperti Multiplayer Settings dan Anti-Piracy dalam kondisi off.

Screen Shot 2016-07-02 at 11.53.30 PM

Kemudian kamu akan diminta untuk meng-authorise aplikasi buatan mu. Jika kamu melihat layar tanpan konten yang menunjukan aplikasi sudah terhubung, bisa jadi kamu belum menyetujui Terms of Service dari Google Play. Kamu juga kan diminta untuk membuat keystore. Untuk info lebih lengkap tentang membuat autentikasi dalam OAuth 2 Services, kamu bisa membuka tautan ini.

Baca juga: Belajar UI Text, GUI Text, dan TextMesh pada Unity

Jika kamu sudah melakukan melakukan proses di atas, maka kamu akan memiliki Android OAuth Client yang berisikan nama package dan signing certificate ifngerprint (SHA1).

Screen Shot 2016-07-03 at 12.00.36 AM

Jika proses itu berhasil, maka ikon di side bar “Linked Apps” akan berisi tanda ceklis. Itu artinya aplikasi kamu sudah terhubung dengan Google Play Service dan siap diintegrasikan ke dalam game. Namun sebelum itu, kita harus mendefinisikan dulu leaderboard yang ingin dibuat.

Membuat Leaderboard Di Google Play Developer Console

Pertama kamu perlu menuju halaman leaderboard dengan menyentuh ikon di tab sebelah kiri. Setelah itu, kamu bisa membuat leaderboard di dalam game mu sendiri dengan menekan tulisan “Add new leaederboard"

Screen Shot 2016-07-03 at 12.03.08 AM

Setelah itu, kamu bisa membuat leaderboard mu sendiri. Apakah yang akan diadu jumlah koin, jumlah nilai, atau jumlah waktu, kita bisa mengaturnya di menu ini.

Screen Shot 2016-07-03 at 12.06.08 AM

Leaderboard bisa kamu buat lebih dari satu jika ada beberapa nilai yang ingin kamu bandingkan. Jika sudah selesai, bisa klik save untuk menyimpan leaderboard yang sudah kamu buat.

Jika sudah selsai melakukan proses ini, maka kamu sudah selesai setup Google Play Service di Google Play Developer Console milikmu. Selanjutnya kita akan setup leaderboard di dalam game menggunakan Unity.

Setup Game Service di Unity

Google telah menyediakan sebuah open source plugin yang akan membantu proses integrasi Google Play Service dengan Unity. Plugin tersebut bisa kamu dapatkan di link berikut ini. Unduh pluginnya terlebih dahulu untuk bisa menggunakannya di dalam Unity. Setelah selesai diunduh, maka kita akan mulai melakukan integrasi dengan Unity.

Hal pertama yang perlu kita lakukan adalah meng-import package Google Play Service ke dalam Unity. Caranya bisa dengan melakukan navigasi pada tab Assets -> Import Package -> Custom Package menu atau bisa juga dengan melakukan klik kanan di foder Assets. File Unity Package pada plugin ada di dalam folder current build.

Screen Shot 2016-07-03 at 9.19.54 AM Screen Shot 2016-07-03 at 9.20.28 AM Screen Shot 2016-07-03 at 9.20.41 AM

Kemudian kita perlu memastikan bahwa build platform Unity kita sudah ditargetkan ke Android. Caranya dari File -> Build Setting pilih Android dan klik Swith Platform. Maka akan muncul menu baru di bawah Window -> Google Play Games. Kalau belum muncul, kamu bisa refresh aset dengan klik Assets -> Refresh.

Screen Shot 2016-07-03 at 9.21.40 AM Screen Shot 2016-07-03 at 9.21.50 AM

Jika proses ini berhasil, maka akan muncul pop up notifkasi bahwa Google Play Games Plugin untuk Unity sudah berhasil diinstal dan siap digunakan.

Screen Shot 2016-07-03 at 9.23.41 AM

Baca juga: Membuat Game Virtual Reality First Person Shooter Menggunakan Unity 3D dan Google Cardboard SDK

Selanjutnya kamu perlu memasukan resource leaderboard yang telah dibuat di Google Play Developer Console ke dalam project Unity kamu.

Di dalam Game Services Leaderboard kamu, klik Get Resources.

Screen Shot 2016-07-03 at 9.43.38 AM

Selanjutnya copy text yang ada di dalam tab Android.

Screen Shot 2016-07-03 at 9.44.43 AM

Buka halaman setup Google Play Service di Unity melalui Window -> Google Play Game -> Setup ->Android.

Screen Shot 2016-07-03 at 9.45.20 AM

Paste teks resource yang sudah dicopy ke dalam kolom resource defintion.

Screen Shot 2016-07-03 at 9.45.34 AM

Scripting di dalam Unity untuk Integrasi Leaderboard

1. Sign In

Sekarang kita akan mulai menggunakan plugin Google Play Service untuk mengakses leaderboard. Untuk bisa mengakses segala fitur yang ada di Google Play Service, kita perlu melakukan Sign in. Untuk melakukan Sign in, kita perlu memanggil fungsi Social.localUser.Authenticate.

public void GPSSignIn(){
    Social.localUser.Authenticate((bool success)=>
    {
        if(success){
            Debug.Log("Login Berhasil");
        }else{
            Debug.Log("Login Gagal");
        }
    });
}

2. Posting Score

Jika Sign-in berhasil, maka selanjutnya kita bisa mengisi score ke dalam leaderboard kita. Sebelum itu, kita perlu mengambil kode leaderboard yang ingin kita isi (mengingat dalam satu game bisa ada beberapa jenis leaderboard). Kita bisa mendapatkannya melalui file resources yang sudah kita paste ke dalam proyek Unity atau mendapatkannya di Google Developer Console.

Screen Shot 2016-07-03 at 9.57.50 AM

Selanjutnya kita bisa mengunakan fungsi Social.ReportScore() Untuk memasukan score ke dalam Leaderboard kita.

public void GPSOnAddScoreToLeaderboard(){
    if(Social.localUser.authenticated){
        Social.ReportScore(100, leaderboardID, (bool success) =>{
            if(success){
                Debug.Log("Update Score Berhasil")    ;    
            }else{
                Debug.Log("Update Score Gagal");
            }
        });
    }
}

Baca juga: Virtual Reality dan Perkembangannya

3. Show Leaderboard

Untuk melihat Leaderboard, kita dapat memanggil fungsi Social.ShowLeaderboardUI(). Google telah membuatkan UI Leaderboard sehingga kita tidak perlu repot-repot mengatur UI Leaderboard.

public void GPSOnShowLeaderboard(){
    ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(leaderboardID);
    Social.ShowLeaderboardUI();
}

Tiga fungsi tersebut adalah fungsi dasar yang bisa kamu gunakan untuk mengakses Leaderboard di dalam game kamu. Untuk kode lengkapnya, kamu bisa membuat kelas sebagai berikut.

using UnityEngine;
using System.Collections;
using GooglePlayGames;
using UnityEngine.SocialPlatforms;

public class GPSController : MonoBehaviour {
    public string leaderboardID;
    // Use this for initialization
    void Start () {
        //digunakan untuk melakukan debugging
        PlayGamesPlatform.DebugLogEnabled = true;

        //aktivasi google play games platform
        PlayGamesPlatform.Activate();

        //leaderboard ID yang digenerate di Google Play Developer Console
        leaderboardID = "CgkI3sq-7acLEAIQAQ" ;

    }
    
    // Update is called once per frame
    void Update () {
    
    }

    public void GPSSignIn(){
        Social.localUser.Authenticate((bool success)=>
            {
                if(success){
                    Debug.Log("Login Berhasil");
                }else{
                    Debug.Log("Login Gagal");
                }
            });
    }

    public void GPSOnShowLeaderboard(){
        ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(leaderboardID);
    }

    public void GPSOnAddScoreToLeaderboard(){
        if(Social.localUser.authenticated){
            Social.ReportScore(100, leaderboardID, (bool success) =>{
                if(success){
                    Debug.Log("Update Score Berhasil")    ;    
                }else{
                    Debug.Log("Update Score Gagal");
                }
            });
        }
    }

    public void GPSOnLogOut(){
        ((PlayGamesPlatform)Social.Active).SignOut();
    }
}

Tiap method bisa kamu panggil ketika ingin memanggilnya di dalam game. Kamu bisa juga assign method ini di UI button seperti untuk menampilkan leaderboard. Untuk lebih dalam lagi, Google Play Service juga menyediakan fitur lebih detil semisal kamu ingin menampilkan leaderboard dengan ID tertentu saja atau ingin mengatur sendiri layout UI dengan data leaderboard yang mentah.

Untuk di awal, kamu bisa mencoba menggunakan metode sederhana ini untuk mengakses leaderboard. Jika kamu ada pertanyaan terkait dengan setup leaderboard di Android menggunakan Unity, bisa langsung tinggalkan komentar. Dan buat kamu yang sudah memahaminya, kamu bisa mencoba mengikuti Lenovo Virtual Reality Challenge 2 untuk menguji skill dan keberuntunganmu. Semoga tutorial ini bermanfaat.