Game Service için Oyun geliştirmek III: Achievements

Mustafa CAN
Huawei Developers - Türkiye
3 min readAug 11, 2020

Bir önceki yazımda oyunumuzun temel kullanıcı arayüzünü yazmış ve Account Kit ile Sign-in fonksiyonlarını yazmıştık.

Artık achievementslerimizi (başarımlar) yaratabiliriz. ilk önce App Gallery Connect (AGC) üzerinden kendimize yeni achievementler oluşturalım.

AGC içerisinde sırasıyla My Apps > Oyunun Adı (XOX Game) > Operate (Sol üsste) > Game Achievements > Create yolundan gidelim.

Ardından Language: Hangi dilde gösterildiği, Name: Achievementimizin adı, Description: Achievementin tanımı, Icon: Achievementimizin ikonu (512x512), Incremental achievements: Achievementimizin tamamlanmış olması için adım sayısı eklemek checkboxı (Eğer seçersek preset steps yerine kaç adımda tamamlanması gerektiğini girmemiz gerekiyor), Initial state: Achievementimizin kazanmadan önce görünüp görünmeyeceği durumu (Revealed görünür, Hidden gizli kalır) ve List order: Achievementimizin listede kaçıncı sırada görüneceği gibi özelliklerini girerek sağ üstteki save butonuna tıklıyoruz.

Bir adet hidden, bir adette revealed achievement oluşturduk.

Ardından Release butonuna tıklayarak achievementlerimizi oyunumuzda kullanılabilir duruma getiriyoruz. Eğer istersek ID değerlerini oyunumuza yazarak daha kısa kodlar yazarak achievementimize erişebiliriz ancak biz bunu yapmayacağız.

Artık achievementlerimizi oluşturduğumuza göre kodlama adımlarına geçebiliriz.

Kodlama

Android Studio üzerinden Achievements.java, AchievementsAdapter.java, achievements.xml ve achievements_list_item.xml adında 4 adet dosya oluşturuyoruz. Benim klasör yapım aşağıdaki gibi, isterseniz siz farklı şekilde de oluşturabilirsiniz.

Tekrar hatırlamamız gerekirse Opening ve main_menu.xml: Oyunumuzun ana menüsü, MainActivity ve activity_main.xml: Oyunumuzun oynandığı arayüz için bulunuyorlar.

Kodlamaya giriş yaparken sırasıyla, ilk önce Opening içerisinde (Achievementlerimizin listesini göstereceğimiz için) Achievements adında bir buton oluşturucaz, ardından bu butona tıkladığımızda Achievements classını çağırıcaz ve oradaki RecycleView ‘ı doldurmak için AchievementsAdapter classını kullanıcaz. Herhangi bir durumda oyunu oynarken (MainActivity classında iken) achievementslerden birinin açılma (unlock) durumuna gelirse bizim achievement açma komutumuzdan sonra kullanıcıya Game Service tarafından bildirim gelir gibi achievementi açıtığını bildirecek, burayı kodlamamıza gerek yok.

Not: AchievementsAdapter kullanmak burada bizim tercihimiz oldu. Eğer isterseydik Huawei AppAssistant kullanarak Achievementlerin gösterimini tamamen GameService’e bırakabilirdik. Ancak öğrenmek amacıyla kendimiz yazalım. Bilgi için AppAssistant

Yalnızca en alttaki Button tagini ekledik
onActivityResult, achievementsClickHandler ve ACHIVEMENTS_INTENT üzerinde değişiklik yaptık

achievements.xml dosyasında RecyclerView dışında başka birşey eklememize gerek yok. RecyclerView’ı ise Adapter kullanarak dolduracağız.

init metodu içerisinde RecyclerView için gerekli tanımlarımızı ve atamalarımızı yapıyoruz, requestData metodu içerisinde GameService den achievementlerimizi getiriyoruz (liste olarak)

achievements_list_item.xml dosyasında 1 adet achievementin nasıl görüneceğini tasarlıyoruz.

achievements_list_item.xml
Achievements ekranları

SONUÇ

Artık achievements leri uygulamamıza eklemiş bulunuyoruz. Bir sonraki yazımda entegre etmesi oldukça benzer olan Leaderboards ları eklemeye geçeceğiz.

(Bu, serinin 3. yazısıdır. ilk yazıya aşağıdaki linki kullanarak erişebilirsiniz.)

--

--