Achievement sering diartikan sebagai sebuah prestasi yang dibuat dalam bentuk tanda seperti ikon gambar atau pun tropi medali.
Sebagai Contoh kami membuat sebuah games quiz bertemakan pendidikan dimana, jika seseorang telah berhasil menjawab pertanyaan maka akan di beri kenaikan pangkat. Kami memulai pemberian pangkat berdasarkan status kepangkatan pada instansi pemerintahan yakni pangkat ASN. Di mulai dari pangkat IA hingga pangkat tertinggi IV C.
Pada prosesnya pengguna harus mampu menjawab beberapa tingkatan soal dengan benar agar Achievement atau prestasi dapat terbuka dan selanjutnya akan ada pangkat yang dapat diberikan. sedangkan untuk nilai yang benar kami menyambungkan ke dalam Leaderboard games. Anda bisa membaca artikel kami sebelumnya tentang Leadearboard Game: Cara Menerapkan dalam Aplikasi Game di Android Studio.
Pengenalan Dasar Achievement Games
Sebelum anda memulai untuk melakukan penerapan API ID Achievement ada baiknya anda membaca terlebih dahulu artikel kami mengenai Cara Membuat leaderboard dan Achievement Game Pada Google Play. Ini dimaksudkan agar anda telah mempunyai ID Achievement yang nantinya bisa di aplikasikan pada project games anda.Ada beberapa point penjelasan mengenai cara penerapan Achievement pada aplikasi game di seperti berikut::
- Persiapkan button
- Memasang Achievement Client
- Membuka ID Achievement
- MenampilkanAchievement
1) Persiapan Button
Pertama-tama anda harus menyediakan sebuah button atau tombol yang dapat dilihat oleh pengguna serta bisa di klik dengan mudah. Tombol tersebut di usahakan dapat menampilkan achievement dalam mode pop up atau melayang. Contoh sederhananya seperti berikut:btnHighScore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nilai = new Intent(MainActivity.this, Score.class);
startActivity(nilai);
}
});
Script di atas memberikan isyarat bahwa jika tombol btnHighScore di klik maka pengguna akan beralih ke btnHighScore.class yang sebelumnya berada pada MainActivity.class . Pada contoh kali ini Tombol btnHighScore sendiri di letakkan pada halaman utama Game yakni pada fungsi class MainActivity.
Sedangkan jika tombol di klik oleh pengguna dan menampilkan tampilan melayang atau popup di halaman utama anda bisa menggunakan script seperti berikut:
btnHighscore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final AlertDialog.Builder menuAleart = new AlertDialog.Builder(Score.this);
final String[] menuList = {"Rangking Satu", "Naik pangkat", "Skor Lokal"};
menuAleart.setTitle("Papan Peringkat");
menuAleart.setItems(menuList, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch (item) {
case 0 :
{
fungsi 1 yang ingin anda di tampilkan
}
case 1 :
{
fungsi 2 yang ingin anda di tampilkan
}
case 2 :
{
fungsi 3 yang ingin anda di tampilkan
}
a. Memasang AlertDialog
Supaya saat pengguna menekan tombol prestasi muncul popup pada tampilan maka anda harus memasang fungsi final AlertDialog.Builder menuAleart = new AlertDialog.Builder(Score.this);Fungsi tersebut sama artinya dengan tampilan peringatan saat pengguna ingin mengakhiri atau menutup aplikasi. Hanya saja fungsi AlertDialog telah dilakukan sedikit modifikasi agar dapat menampilkan prestasi serta score pengguna.
Pada script di atas juga terdapat beberapa pilihan yang bisa ditampilkan dalam pop up yang juga di bagi dalam fungsi case. Dalam penggalan list program java diatas kami memisahkan case ke dalam tiga bagian yakni :
- fungsi 1 : menampilkan leaderboard games (Rangking Satu)
- fungsi 2 : menampilkan achievement games (Naik Pangkat)
- fungsi 3 : menampilkan score lokal (Skor lokal)
Anda tinggal menyesuaikan saja penerapan fungsi di atas, apakah ingin di tambahkan atau pun dikurangi.
Sebelumnya anda harus menentukan nilai dari setiap pencapaian yang akan terbuka saat pemain berhasil menyelesaikan suatu tahap. Ada baiknya berikan 5 poin untuk mudah, 20 poin untuk sedang dan 50 point untuk sulit. Silakan anda atur nilai atau poin pada setiap levelnya.
Apabila anda telah selesai mengatur poin atau nilai, silakan untuk menyalin ID Achievement pada games_id.xml. Fungsinya sebagai data yang nantinya akan di panggil pada class java.
Simpan ID Achievement di file res → value → games_ids.xml . Kode tersebut dapat anda temukan pada layanan Game google play.
Caranya :
b. Menentukan Poin
Sebelumnya anda harus menentukan nilai dari setiap pencapaian yang akan terbuka saat pemain berhasil menyelesaikan suatu tahap. Ada baiknya berikan 5 poin untuk mudah, 20 poin untuk sedang dan 50 point untuk sulit. Silakan anda atur nilai atau poin pada setiap levelnya.
Apabila anda telah selesai mengatur poin atau nilai, silakan untuk menyalin ID Achievement pada games_id.xml. Fungsinya sebagai data yang nantinya akan di panggil pada class java.
Simpan ID Achievement di file res → value → games_ids.xml . Kode tersebut dapat anda temukan pada layanan Game google play.
Caranya :
- Buka layanan game
- kemudian pilih Pencapaian
- Selanjutnya klik "Dapatkan sumber daya"
- Akan muncul popup yang berisi ID Achievement beserta ID Leaderboards.
- Salin seluruh source code tersebut dan simpan pada res → value → games_ids.xml
- Jika belum ada games_ids.xml silakan buat terlebih dahulu.
Untuk contoh ID Achievement yang kami salin dari Layanan games adalah sebagai berikut:
<?xml version="1.0" encoding="utf-8"?>
<!--
Google Play game services IDs.
Save this file as res/values/games-ids.xml in your project.
-->
<resources>
<!-- app_id -->
<string name="app_id" translatable="false">270281185935</string>
<!-- package_name -->
<string name="package_name" translatable="false">com.farrelstudio.ukg</string>
<!-- achievement Juru Muda -->
<string name="achievement_juru_muda" translatable="false">CgkIj7WO8O4HEAIQEg</string>
<!-- achievement Juru Muda Tk.1 -->
<string name="achievement_juru_muda_tk.1" translatable="false">CgkIj7WO8O4HEAIQAg</string>
</resources>
<!--
Google Play game services IDs.
Save this file as res/values/games-ids.xml in your project.
-->
<resources>
<!-- app_id -->
<string name="app_id" translatable="false">270281185935</string>
<!-- package_name -->
<string name="package_name" translatable="false">com.farrelstudio.ukg</string>
<!-- achievement Juru Muda -->
<string name="achievement_juru_muda" translatable="false">CgkIj7WO8O4HEAIQEg</string>
<!-- achievement Juru Muda Tk.1 -->
<string name="achievement_juru_muda_tk.1" translatable="false">CgkIj7WO8O4HEAIQAg</string>
</resources>
2) Memasang Achievement Client
Langkah selanjutnya, kita harus menghubungkan Games.getAchievementClient(). Hal ini sangat penting untuk membuka setiap tingkat level pencapaian yang telah anda atur pada layanan game google play.Baca juga : Mengatasi Error Leaderboards dan Achievement Games
Sambungkan terlebih dahulu GoogleApiClient agar tidak muncul error. letakkan di bawah public class ..... extends Activity, source code berikut:
GoogleApiClient mclient;
mclient = getApiClient();
3) Membuka ID Achievement
Agar dapat membuka sebuah pencapaian, games harus terhubung dengan Games.Achievements.unlock dan tersambung ID Achievement. Anda bisa menghubungkan ID achievement pada games_id.xml.Selanjutnya untuk membuka salah satu pencapaian yang tingkatannya lebih rendah gunakan contoh source code sebagai berikut:
if(mclient.isConnected())
{
// pangkat juru muda (1A)
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru_muda));
// membuka ID achievement_juru_muda
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);
}
{
// pangkat juru muda (1A)
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru_muda));
// membuka ID achievement_juru_muda
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);
}
Jika anda perhatikan listing kode di atas kita berhasil membuka salah satu level saat pengguna tersambung ke layanan google games. Perhatikan bahwa anda harus memastikan R.String.achievement harus sama setiap kali harus di buka.
Contoh selanjutnya kita akan membuka level di saat pengguna memperoleh poin 5 atau lebih besar dari 5. Listing programnya sebagai berikut:
if (result >= 5) {
// pangkat juru muda tk.1 (1B)
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru_muda_tk));
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
4) Menampilkan Achievement
Sebenarnya untuk menampilkan achievement sudah kami tampilkan di atas yakni dengan sorce code berikut:startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);
Agar lebih memahami secara keseluruhan, source kode penerapan Achievement secara lengkap kami sajikan sebagai berikut:
btnHighscore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final AlertDialog.Builder menuAleart = new AlertDialog.Builder(Score.this);
final String[] menuList = {"Rangking Satu", "Naik pangkat", "Skor Lokal"};
menuAleart.setTitle("Papan Peringkat");
menuAleart.setItems(menuList, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch (item) {
case 0:
if (mclient.isConnected()) {
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(
getApiClient(), getString(R.string.leaderboard_quiz_app)),1);
}
break;
case 1:
if(mclient.isConnected())
{
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru_muda));
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);
}
break;
case 2:
Intent i = new Intent(Score.this, Highest_Score.class);
startActivity(i);
break;
}
}
});
AlertDialog menuDrop = menuAleart.create();
menuDrop.show();
}
});
@Override
public void onSignInSucceeded () {
// TODO Auto-generated method stub
Log.d("sigin succeded", "inside on onSignInSucceeded");
if (mclient.isConnected()) {
Games.Leaderboards.submitScore(getApiClient(),
getString(R.string.leaderboard_quiz_app),
Long.valueOf(score));}
if (result >= 5) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru_muda_tk)); // pangkat juru muda tk.1 (1B)
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 10) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_juru)); // pangkat juru (1C)
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 16) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_pengatur_muda)); // pangkat pengatur muda (2A)
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 21) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_pengatur_muda_tk)); // pangkat pengatur muda tingkat 1 (2B)
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 31) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_pengatur)); // pangkat pengatur muda tingkat 1 (2C)
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 41) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_pengatur_tingkat_1)); // PANGKAT 2D
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 51) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_penata_muda)); // PANGKAT 3A
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
if (result >= 61) {
Games.Achievements.unlock(mclient, getString(R.string.achievement_penata_muda_tk_1)); // PANGKAT 3B
startActivityForResult(Games.Achievements.getAchievementsIntent(mclient), 1);}
Silakan anda baca tutorial step by step untuk bisa memahami penerapan achievement. Jika kurang paham silakan masukan komentar.
Demikian postingan kami mengenai "Achievement Games: Cara menerapkan dalam Aplikasi dengan menggunakan Android Studio" semoga dapat bermanfaat.
Show Parser Hide Parser