MVVM ile Game Service Kullanımı / Part 2— Achievements

Berk Özyurt
Huawei Developers - Türkiye
5 min readFeb 23, 2021

Herkese merhaba.

Bu yazı, Huawei Game Service blog serisinin ikinci bölümüdür . İlk bölümde Game Service ile ilgili biraz bilgi verip, Auth Service kullanımı hakkında bir örnek hazırlamıştım. Bu yazıda ise achievements hakkında bilgi vereceğim ve MVVM yapısı ile mobil oyun uygulamanızda nasıl kullanılacağını anlatacağım.

Game Service blog serisinin ilk bölümünü aşağıda bulabilirsiniz.

Achievements Nedir?

Achievements, oyununuzdaki oyuncu katılımını artırmanın ve oyuncuların oyunu oynamaya devam etmeleri için daha fazla teşvik sağlamanın mükemmel bir yoludur. Bir achievement, bir oyuncunun başarılarını (örneğin, mağlup edilen oyuncuların veya tamamlanan görevlerin sayısı) veya oyuncunun kazandığı becerileri temsil edebilir. Oyunu canlı tutmak ve oyuncuları katılmaya devam etmeye teşvik etmek için periyodik olarak başarılar ekleyebilirsiniz.

  • Achievements bilgileri AppGallery Connect’te yaratılmış olmalıdır. Ayrıntılar için lütfen Başarıları Yapılandırma bölümüne bakın .
  • Achievement API’larını çağırmadan önce, oyuncunun oturum açtığından emin olun.
  • Achievements özelliğini desteklemek için cihazın EMUI 10.0 veya sonraki bir sürümünü çalıştırması ve HUAWEI AppAssistant 10.1 veya sonraki sürümünün yüklü olması gerekir.
  • Achievements özelliğini kullanmak için, kullanıcıların HUAWEI AppGallery’de (10.3 veya üzeri) Game Service’i etkinleştirmesi gerekir. Game Service’i etkinleştirmemiş bir kullanıcı achievements API çağrısını tetiklerse, HMS Core SDK, kullanıcıyı HUAWEI AppGallery’deki Oyun Hizmetleri geçiş sayfasına yönlendirir ve kullanıcıya Game Service’i etkinleştirmesi talimatını verir. Kullanıcı Game Service’i etkinleştirmezse, 7218 hata kodu döndürülür.

Achievement Oluşturma

Achievements konsol aracılığı ile oluşturulur. Bunun için öncelikle Huawei AGC Konsolda oturum açın.

“My Apps” -> Uygulama Adı -> “Operate” -> “Achievements” yolu ile ahchievements yönetim paneline erişebilirsiniz.

Bu sayfada başarılarınızı görebilir ve “ Create ” butonuna tıklayarak yeni bir achievement oluşturabilirsiniz.

“Create” butonuna tıkladıktan sonra detay sayfasını göreceksiniz. Bu sayfada oluşturacağınız achievement için bazı bilgiler vermelisiniz. Bir achievement aşağıdaki temel nitelikleri içermelidir:

  1. ID: Bir achievement tanımlamak için AppGallery Connect tarafından oluşturulan benzersiz bir ID değeri.
  2. Name: Achievement yapılandırması sırasında tanımladığınız başarının kısa adı (maksimum 100 karakter).
  3. Description: Achievementa a ait kısa bir açıklama. Genellikle oyuncuya achievementı nasıl kazanacağını açıklamak için kullanılır.(maksimum 500 karakter).
  4. Icon: Bir achievement kazanıldıktan sonra görüntülenir. Icon 512 x 512 piksel boyutunda, PNG veya JPG biçiminde ve belirli bir dilde herhangi bir kelime içermemelidir. HMS Core SDK, bu simgeye dayalı olarak otomatik olarak gri tonlamalı bir sürüm simgesi oluşturacak ve bunu kilitli başarılar için kullanacaktır.
  5. State: Bir achievement, bir oyundaki üç farklı durumdan birinde olabilir.
  • Hidden : Achievement hakkındaki ayrıntıların oyuncudan gizlendiği anlamına gelir. Bu tür achievement, gizli durumdayken genel bir yer tutucu açıklaması ve simge ile donatılmıştır. Bir achievement, oyununuz hakkında açığa çıkarmak istemediğiniz bir spoiler içeriyorsa, achievementı gizli olarak yapılandırabilir ve oyun belirli bir aşamaya geldikten sonra kazanan kişiye gösterebilirsiniz.
  • Revealed : Oyuncunun achievement varlığını bildiği ancak henüz kazanmadığı anlamına gelir. Oyuncuya oyunun başında achievement göstermek isterseniz, bu duruma göre yapılandırabilirsiniz.
  • Unlocked : Oyuncunun achievementı başarıyla kazandığı anlamına gelir. Bu durum yapılandırılamaz ve oyuncu tarafından kazanılması gerekir. Oyuncu bu duruma ulaştıktan sonra, oyun sayfasının üst kısmında bir açılır pencere görüntülenecektir. HMS Core SDK, bir achievementın çevrimdışı olarak açılmasına izin verir. Bir oyun tekrar çevrimiçi olduğunda, achievementın kilitli olmayan durumunu güncellemek için Huawei Game Service sunucusuyla senkronize olur.

6. Steps: Achievementlar standart veya artımlı olarak belirlenebilir. Artımlı bir achievement, bir oyuncunun achievementın kilidini açmak için birkaç adımı tamamlamasını içerir. Önceden tanımlanmış adım sayısı, achievement adımlarının sayısı olarak bilinir.

7. List order: Seçili achievementın tüm achievementlar arasında göründüğü sıradır. Achievement oluşturma sırasında belirlenmelirlenmelidir..

Gerekli tüm bilgileri yazdıktan sonra, “Save” butonuna tıklayın ve kaydedin. Kaydettikten sonra tekrar Achievement listesini göreceksiniz. Ve achievementları kullanmaya başlamak için “Release” butonuna tıklamanız gerek. Ayrıca, bu sayfada achievementların ayrıntılarını düzenleyebilir ve görebilirsiniz. Ancak achievementın onaylanması için 1–2 gün beklemelisiniz. Oyuna geliştirici hesabınızla giriş yapabilir ve onaylanana kadar test edebilirsiniz. Ancak diğer kullanıcıların achievementı görüntüleyebilmesi için onay beklemesi gerekir.

Achievement Listeleme

  1. Achievement Listeleme Sayfası

İlk olarak, bir Xml dosyası oluşturun ve tüm achievementları listelemek için recyclerView ekleyin. Örnek tasarımımı aşağıda bulabilirsiniz.

2. AchievementsViewModel Aınıfı

AchievementsViewModel sınıfı, View sınıfından veri alacak, verileri işleyecek ve View sınıfına yeniden gönderecektir.

Achievement listesini ayarlamak ve View sınıfına göndermek için ilk olarak bir LiveData ve ArrayList oluşturun. Daha sonra getLiveData () ve setLiveData () metotlarını oluşturun.

Son olarak, achievementlar için bir client oluşturun. Ve tüm achievementları konsoldan çekmek için bir metot oluşturun. Tüm achievementları arrayList’e ekleyin. Daha sonra bu listeyi LiveData‘ya set edin.

Aşağıdaki AchievementsViewModel sınıfını görebilirsiniz.

3. AchievementsViewModelFactory Sınıfı

Bir ViewModelFactory sınıfı oluşturun ve parametre olarak context nesnesini set edin. Bu sınıf, ViewModel sınıfını döndürmelidir.

4. Adapter Sınıfı

Achievementları listelemek için bir adapter sınıfı ve özel bir AchievementItem tasarımı oluşturmanız gerekir . Burada ihtiyaçlarınıza uygun bir tasarım yapabilir ve adapter sınıfı oluşturabilirsiniz.

5. AchievementsFragment Sınıfı

Öncelikle ViewModel bağımlılıkları Xml dosyasına eklenmelidir. Bunun için, Xml dosyanızı yeniden açın ve variable name alanına“viewmodel” olarak ekleyin. type kısmına ise ViewModel sınıfınızın dizinini ekleyin.

<data>
<variable
name="viewmodel"
type="com.xxx.xxx.viewmodel.AchievementsViewModel" />
</data>

AchievemetsFragment’a geri dönün ve ViewModelFactory sınıfı, ViewModel sınıfı ve Binding nesnelerini ekleyin.

private lateinit var binding: FragmentAchievementsBinding
private lateinit var viewModel: AchievementsViewModel
private lateinit var viewModelFactory: AchievementsViewModelFactory

Achievement listesini almak için ViewModel sınıfını çağırın ve adapter sınıfıyla recyclerView’a verileri set edin. View sınıfının tamamını aşağıda bulabilirsiniz.

Achievement Step Arttırma

Achievement için adım tanımladıysanız, kullanıcı bu adım sayısına ulaştığında başarıyı kazanacaktır.

Achievement adımlarını artırmak için bir client oluşturun. Ve achievement Id ve adım sayısını parametre olarak ayarlayın. Ancak Achievement’ın açık olup olmadığını kontrol etmeyi unutmayın. Achievement açıksa, grow() yöntemini kullanmanız gerekir, eğer açık değilse, growWithResult() yöntemini kullanmanız gerekir .

ViewModel sınıfında 2 metot oluşturun ve seçilen achievement adımını AchievementId ve adım sayısıyla artırın.

Achievement Kilidini Açmak

Achievement için step tanımlamadıysanız, kullanıcının adımları artırmasına gerek yoktur.

Achievementın kilidini açmak için bir client oluşturun . Bir task oluşturun ve onSuccessListener ve onFailureListener ekleyin . Achievementı açmak için reachWithResult() metodunu kullanmalısınız.

Bu metodu ViewModel sınıfında oluşturun ve Achievement ID ile seçilen achievementın kilidini açın.

Achievementları Konsolda Görüntüleme

Tüm achievementları konsolda görebilirsiniz. Ayrıca bu sayfada Achievement ID değerini, kazananların sayısını ve durumu bulabilirsiniz.

Bu verilere erişmek için AGC Konsoluna giriş yapabilir ve aşağıdaki yolu takip edebilirsiniz.

“My Apps” -> Your App Name -> “Operate” -> “Achievements”

Sonuç

Bu yazı dizisi yardımıyla konsolda achievement oluşturabilirsiniz. Ayrıca bu bir achievementın adımları artırabilir ve achievementlara ulaşabilirsiniz.

Bir sonraki yazımda Events özelliğini açıklayıp bir örnek vereceğim. Oyun uygulamanızı temiz bir mimari ile geliştirmek için lütfen sıradaki makaleyi takip edin.

--

--