Advertisement
  1. Code
  2. Android SDK

Memulai dengan Google Play Game Service

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

Game teknologi terus berkembang. Namun demikian, banyak unsur-unsur gameplay inti tetap tidak berubah selama beberapa dekade. Highscore, leaderboards, quests, achievements, dan multiplayer dukungan adalah contoh. Jika Anda sedang mengembangkan permainan untuk Android platform, Anda tidak perlu menerapkan salah satu unsur-unsur secara manual. Anda hanya dapat menggunakan layanan Google Play Games Service API sebagai gantinya.

Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana untuk membuat permainan Android yang sederhana, tambahkan Google Play Game Service untuk itu, dan menggunakan leaderboards dan achievement api.

Prasyarat

Untuk dapat mengikuti tutorial ini, Anda akan memerlukan berikut ini:

1. Buat Permainan Sederhana

Tidak menyenangkan di menambahkan Play games services api untuk proyek Android Studio kosong. Oleh karena itu, mari kita membuat sebuah permainan di mana pengguna mendapatkan poin dengan hanya mengklik sebuah tombol. Lebih tepatnya, tujuan dari permainan adalah untuk klik pada tombol sesering mungkin dalam waktu 60 detik.

Langkah 1: Buat tata letak permainan

Tata letak permainan akan memiliki satu Button widget, yang pengguna akan mengklik untuk mendapatkan poin, dan dua TextView widget untuk menampilkan Skor dan waktu yang tersisa. Jika Anda menaruh semua mereka dalam RelativeLayout dan pusat mereka secara horisontal dan vertikal, Anda harus memiliki sebuah file tata letak yang terlihat seperti ini:

1
<?xml version="1.0" encoding="utf-8"?>
2
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
3
    xmlns:tools="http://schemas.android.com/tools"
4
    android:id="@+id/activity_main"
5
    android:layout_width="match_parent"
6
    android:layout_height="match_parent"
7
    android:paddingBottom="@dimen/activity_vertical_margin"
8
    android:paddingLeft="@dimen/activity_horizontal_margin"
9
    android:paddingRight="@dimen/activity_horizontal_margin"
10
    android:paddingTop="@dimen/activity_vertical_margin"
11
    tools:context="com.tutsplus.mylittlegame.MainActivity">
12
13
    <Button
14
        android:text="Start"
15
        android:layout_width="wrap_content"
16
        android:layout_height="wrap_content"
17
        android:layout_centerVertical="true"
18
        android:layout_centerHorizontal="true"
19
        android:id="@+id/main_button" />
20
21
    <TextView
22
        android:text="Time remaining: 0 seconds"
23
        android:layout_width="wrap_content"
24
        android:layout_height="wrap_content"
25
        android:layout_below="@+id/main_button"
26
        android:layout_centerHorizontal="true"
27
        android:layout_marginTop="25dp"
28
        android:id="@+id/time_view" />
29
30
    <TextView
31
        android:text="Score: 0"
32
        android:layout_width="wrap_content"
33
        android:layout_height="wrap_content"
34
        android:layout_above="@+id/main_button"
35
        android:layout_marginBottom="28dp"
36
        android:layout_centerHorizontal="true"
37
        android:id="@+id/score_view" />
38
39
</RelativeLayout>

Permainan kami akan memiliki layar leaderboard dan sebuah layar achievements . Untuk memungkinkan pengguna untuk menavigasi ke layar tersebut, tambahkan dua widget Button pada akhir file tata letak.

1
<Button
2
    android:text="Achievements"
3
    android:layout_width="wrap_content"
4
    android:layout_height="wrap_content"
5
    android:layout_alignParentTop="true"
6
    android:layout_alignParentLeft="true"
7
    android:id="@+id/achievements_button"
8
    android:onClick="showAchievements"
9
    />
10
11
<Button
12
    android:text="Leaderboard"
13
    android:layout_width="wrap_content"
14
    android:layout_height="wrap_content"
15
    android:layout_alignParentTop="true"
16
    android:layout_alignParentRight="true"
17
    android:id="@+id/leaderboard_button"
18
    android:onClick="showLeaderboard"/>

Perhatikan bahwa tombol kedua memiliki onClick atribut. Kita akan menciptakan metode Java yang mereka sebut dalam langkah-langkah berikutnya.

Langkah 2: Menerapkan logika permainan

Dalam activity, membuat anggota variabel untuk gameplay widget kami didefinisikan dalam tata letak file XML. Selain itu, membuat variabel int untuk Skor dan variabel boolean untuk permainan state.

1
private Button mainButton;
2
private TextView scoreView;
3
private TextView timeView;
4
5
private int score = 0;
6
private boolean playing = false;

Menginisialisasi widget di dalam activity onCreate() metode menggunakan metode findViewById().

1
mainButton = (Button)findViewById(R.id.main_button);
2
scoreView = (TextView)findViewById(R.id.score_view);
3
timeView = (TextView)findViewById(R.id.time_view);

Untuk listern klik pada Button widget, membuat dan menambahkan OnClickListener untuk itu.

1
mainButton.setOnClickListener(new View.OnClickListener() {
2
    @Override
3
    public void onClick(View v) {
4
        // More code goes here

5
    }
6
});

Kita sekarang harus menerapkan persyaratan berikut:

  • Pertama kali pengguna mengklik pada tombol, permainan harus mulai.
  • Setiap klik berikutnya harus kenaikan score variabel.
  • Permainan harus berakhir ketika 60 detik telah berlalu.

Kita dapat menggunakan variabel playing untuk membedakan antara klik pertama dan semua klik berikutnya. Untuk melacak waktu, kita dapat menggunakan CountDownTimer abstract class, yang sangat ideal untuk persyaratan. Memiliki sebuah metode onTick() di dalamnya, yang dapat secara akurat memperbarui timeView untuk menampilkan jumlah detik tersisa. Ini juga memiliki onFinish() metode, yang disebut ketika hitung mundur berakhir.

Dengan demikian, tambahkan kode berikut ke onClick() metode:

1
if(!playing) {
2
    // The first click

3
    playing = true;
4
    mainButton.setText("Keep Clicking");
5
6
    // Initialize CountDownTimer to 60 seconds

7
    new CountDownTimer(60000, 1000) {
8
        @Override
9
        public void onTick(long millisUntilFinished) {
10
            timeView.setText("Time remaining: " + millisUntilFinished/1000);
11
        }
12
13
        @Override
14
        public void onFinish() {
15
            playing = false;
16
            timeView.setText("Game over");
17
            mainButton.setVisibility(View.GONE);
18
        }
19
    }.start();  // Start the timer

20
} else {
21
    // Subsequent clicks

22
    score++;
23
    scoreView.setText("Score: " + score + " points");
24
}

Pada titik ini, Anda dapat menjalankan proyek untuk memainkan permainan.

Game interfaceGame interfaceGame interface

2. Tambahkan permainan Layanan dependensi

Mengkonfigurasi sebuah proyek untuk menggunakan Play games services API  melibatkan banyak langkah-langkah. Dengan menggunakan Android Studio asisten Firebase, Anda dapat mengotomatisasi beberapa dari mereka.

Buka jendela asisten melalui Tools > Firebase. Selanjutnya, dalam bagian Analytics, klik pada Log Analytics event link. Anda sekarang dapat menghubungkan Anda Android Studio proyek ke proyek Firebase dengan mengklik pada Connect to Firebase tombol. Pastikan bahwa Anda memilih opsi Create new Firebase project buat pada dialog yang muncul.

Connect to Firebase dialogConnect to Firebase dialogConnect to Firebase dialog

Setelah sambungan telah ditetapkan, tekan Analytics Tambahkan ke tombol aplikasi Anda untuk menambahkan semua perubahan yang diperlukan ke file build.gradle.

Anda harus menambahkan ketergantungan untuk bermain permainan layanan secara manual. Oleh karena itu, pergi ke file build.gradle app modul dan tambahkan ketergantungan compile berikut:

1
compile 'com.google.android.gms:play-services-games:9.8.0'

Selain itu, games services APIsi membutuhkan file konfigurasi XML. Membuat satu dinamakan games-ids.xml di dalam folder res/values. Kami akan menambahkan konten ke pada langkah berikutnya.

3. Register permainan

Semua permainan yang menggunakan layanan Google Play services harus terdaftar pada Play developer console. Anda harus membayar biaya pendaftaran satu kali $ 25 untuk dapat mengakses konsol.

Di konsol, klik pada ikon gamepad untuk membuka layar Game Services.

Game services screenGame services screenGame services screen

Selanjutnya, klik Set up Google Play game services tombol untuk memulai mendaftar permainan.

Pada dialog yang muncul, pilih tab kedua karena permainan kami sudah menggunakan Google api. Anda sekarang harus mampu melihat nama proyek Firebase Anda dalam daftar proyek-proyek yang tersedia. Setelah memilih, pilih kategori untuk permainan. Untuk saat ini, Anda dapat pergi dengan kategori Casual.

Choose your console projectChoose your console projectChoose your console project

Setelah Anda menekan Continue, Anda dapat menautkan Firebase Analytics dan Play games services dengan mengklik pada tombol Link Firebase.

Selanjutnya, pergi ke bagian Linked apps  ke link proyek Android Studio Anda ke Play developer console. Pada dialog yang muncul, tekan tombol Android dan jenis dalam nama paket proyek Anda dalam bidang Package name.

Link an Android app screenLink an Android app screenLink an Android app screen

Tekan tombol Save and continue tombol untuk menghasilkan ID klien untuk permainan Anda.

Client ID display screenClient ID display screenClient ID display screen

Permainan kami sekarang telah berhasil terdaftar dengan Google Play developer console.

4. Tambahkan User Test

Play games services APIsi akan bekerja hanya jika permainan Anda diterbitkan di Google Play. Namun, untuk memungkinkan Anda untuk menguji permainan Anda, konsol pengembang memungkinkan Anda menghubungkan beberapa account pengguna pengujian. Dengan pergi ke bagian Testing, Anda dapat menambahkan atau menghapus account pengguna pengujian. Pastikan bahwa Anda menambahkan akun Google yang Anda gunakan pada telepon atau emulator di sini.

Testing access screenTesting access screenTesting access screen

5. Buat Leaderboard

Leaderboard tidak lain hanyalah sebuah layar yang menampilkan highscore pengguna. Play games services leaderboards memungkinkan pengguna untuk melihat Skor tinggi mereka harian, mingguan, dan all-time.

Menciptakan leaderboard pada konsol pengembang bermain membutuhkan hanya dengan beberapa klik. Pergi ke bagian Leaderboards dan tekan tombol Add leaderboard. Pada layar berikutnya, memberi bermakna nama leaderboard dan tekan tombol Save.

Leaderboard creation screenLeaderboard creation screenLeaderboard creation screen

Leaderboard kami sudah siap.

6. Buat sebuah prestasi

Prestasi adalah penghargaan dalam permainan pengguna mendapatkan untuk mengelola untuk melakukan sesuatu yang khusus. Permainan yang memiliki banyak prestasi untuk membuka ini biasanya lebih menyenangkan daripada satu yang tidak. Akibatnya, sebagian besar permainan yang populer di Google Play hari ini memiliki puluhan jika tidak ratusan prestasi.

Dalam tutorial ini, kita akan menambahkan satu prestasi permainan kami. Namanya akan Lightning Fast, dan akan dibuka ketika pengguna mengelola tekan tombol lebih dari 100 kali dalam satu menit. Untuk membuat achievement, pergi ke bagian Achievements dan tekan tombol Add achievement. Setelah Anda mengetik di nama dan deskripsi pencapaian, tekan tombol Save.

Achievement creation screenAchievement creation screenAchievement creation screen

7. memperbarui konfigurasi permainan XML

Leaderboard dan pencapaian memiliki pengidentifikasi unik. Kita sekarang harus menambahkan pengenal mereka untuk proyek Android Studio kami, bersama dengan ID aplikasi yang dihasilkan selama pendaftaran. Anda dapat melakukannya dengan manual memperbarui file permainan-ids.xml yang kita buat sebelumnya. Namun, saya menyarankan agar Anda menggunakan kode konfigurasi otomatis tersedia di konsol pengembang.

Untuk mendapatkan kode konfigurasi dihasilkan otomatis, Anda bisa pergi ke bagian Achievements atau bagian Leaderboards, dan tekan mendapatkan link Get resources. Anda akan melihat XML kode yang terlihat seperti ini:

1
<?xml version="1.0" encoding="utf-8"?>
2
<!--

3
Google Play game services IDs.

4
Save this file as res/values/games-ids.xml in your project.

5
-->
6
<resources>
7
    <string name="app_id">1234567890</string>
8
    <string name="package_name">com.tutsplus.mylittlegame</string>
9
    <string name="achievement_lightning_fast">HzkA4Kz04F8MRYIAze</string>
10
    <string name="leaderboard_my_little_leaderboard">HzkA4Kz04F8MRYIBVU</string>
11
</resources>

Salin Semua kode dan paste di file games-ids.xml proyek Anda.

8. menghubungkan ke bermain permainan Layanan

Sebelum menggunakan leaderboards dan achievements api, kita harus membuat sebuah instance GoogleApiClient dan menghubungkannya ke bermain permainan layanan. Oleh karena itu, menambahkan sebuah objek GoogleApiClient sebagai variabel anggota aktivitas Anda.

Kita harus menggunakan GoogleApiClient.Builder class untuk membangun instance GoogleApiClient. Sambil membangun klien, kita dapat menentukan API dan API lingkup kami tertarik dengan menggunakan metode addApi() dan addScope().

Selain itu, saya sarankan bahwa Anda memanggil metode enableAutoManage() untuk memastikan bahwa klien secara otomatis mengelola sambungan ke layanan permainan. Metode, namun memerlukan OnConnectionFailedListener, yang akan dipanggil ketika koneksi gagal. Untuk sekarang, kita hanya akan memanggil metode finish() untuk menutup aplikasi dalam kasus kegagalan koneksi.

Dengan demikian, tambahkan kode berikut pada awal onCreate() metode:

1
apiClient = new GoogleApiClient.Builder(this)
2
        .addApi(Games.API)
3
        .addScope(Games.SCOPE_GAMES)
4
        .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
5
    @Override
6
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
7
        Log.e(TAG, "Could not connect to Play games services");
8
        finish();
9
    }
10
}).build();

Jika Anda menjalankan app sekarang, Anda akan diminta untuk membuat Gamer ID untuk diri sendiri. Ketik ID Gamer pilihan Anda dan tekan Sign in di tombol.

Sign in to Play Games dialogSign in to Play Games dialogSign in to Play Games dialog

9. Gunakan Leaderboard

Mengirimkan Skor untuk leaderboard mengambil hanya satu baris kode. Semua yang perlu Anda lakukan adalah memanggil metode submitScore() dari Games.Leaderboards class. Sebagai argumen, itu mengharapkan GoogleApiClient contoh, ID dari leaderboard, dan Skor.

Dalam permainan kami, kita harus menyerahkan Skor di akhir 60 detik. Oleh karena itu, tambahkan kode berikut ke onFinish() metode:

1
Games.Leaderboards.submitScore(apiClient,
2
        getString(R.string.leaderboard_my_little_leaderboard),
3
        score);

Untuk melihat leaderboard, kita harus membuat activity baru dengan leaderboard intent. Untuk mengambil intent leaderboard, memanggil metode getLeaderboardIntent() kelas Games.Leaderboards dan pass ke GoogleApiClient instance dan leaderboard ID untuk itu.

Tata letak permainan kami sudah memiliki sebuah tombol yang dapat ditekan untuk membuka leaderboard. Nilai atribut onClick adalah showLeaderboard. Oleh karena itu, tambahkan kode berikut ke aktivitas Anda:

1
public void showLeaderboard(View v) {
2
    startActivityForResult(
3
      Games.Leaderboards.getLeaderboardIntent(apiClient,
4
        getString(R.string.leaderboard_my_little_leaderboard)), 0);
5
}

Anda dapat menjalankan app sekarang dan Main game lagi. Saat ini, ketika permainan sudah berakhir, Skor Anda akan dikirimkan ke leaderboard. Berikut adalah apa yang tampak seperti default leaderboard:

Leaderboard windowLeaderboard windowLeaderboard window

10. Gunakan pencapaian

Dengan memanggil metode unlock() kelas Games.Achievements, Anda dapat membuka prestasi apapun. Metode mengharapkan instance GoogleApiClient dan ID dari achievement sebagai argumen.

Kilat cepat pencapaian kita didefinisikan di konsol harus dibuka ketika pengguna Skor melintasi 100 poin. Oleh karena itu, tepat setelah kode untuk peningkatan Skor, tambahkan kode berikut:

1
if(score>100) {
2
    Games.Achievements
3
         .unlock(apiClient, 
4
            getString(R.string.achievement_lightning_fast));
5
}

Kode yang diperlukan untuk tampilan layar prestasi ini sangat mirip dengan yang kita tulis untuk menampilkan layar leaderboard. Semua yang perlu Anda lakukan adalah mengembalikan nilai metode getAchievementsIntent() metode ke startActivityForResult().

1
public void showAchievements(View v) {
2
    startActivityForResult(
3
        Games.Achievements
4
             .getAchievementsIntent(apiClient),
5
        1
6
    );
7
}

Jika Anda menjalankan aplikasi Anda dan bermain lagi, Anda akan melihat sebuah prestasi muncul ketika Skor Anda melintasi 100 poin untuk pertama kalinya.

Achievement pop upAchievement pop upAchievement pop up

Kesimpulan

Anda sekarang tahu bagaimana untuk menggunakan Google Play Game Layanan api dalam proyek Android Studio Anda. Play games services tidak terbatas untuk platform Android saja. Mereka dapat digunakan dengan mudah di web dan iOS platform juga. Jadi bermain permainan Layanan memungkinkan Anda untuk membuat cross-platform game dan menawarkan pengalaman gaming yang konsisten untuk pengguna pada beberapa platform.

Untuk mempelajari lebih lanjut tentang Google Play games services APIs, Anda dapat merujuk ke panduan resmi mereka atau, bahkan lebih baik, check out beberapa tutorial kami di sini di Envato Tuts +!


Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.