MVVM ile Game Service Kullanımı / Part 5— Saved Games

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

Herkese merhaba,

Bu makale, Huawei Game Service blog serisinin beşinci bölümüdür. Beşinci bölümde Game Service ile ilgili biraz detay verdim ve Saved Games hakkında bilgi verip MVVM yapısı ile mobil oyun uygulamanızda nasıl kullanılacağını anlattım .

Bu yazı dizisinin dördüncü bölümünü aşağıdaki bağlantıda bulabilirsiniz.

Saved Games Nedir?

Huawei Game Service, oyuncularınızın oyun ilerlemesini Huawei Cloud’a kaydetmesine ve ardından kaydedilen verileri almasına olanak tanır, böylece oyuncularınız oyunda oturum açmak için Huawei Kimliklerini kullandıkları sürece herhangi bir cihazdan oyuna son kaydetme noktasından devam edebilir. Bu sayede oyuncuların cihazları kaybolsa, hasar görse veya değiştirilse bile baştan başlamasına gerek kalmaz.

Bir saved game aşağıdaki bölümlerden oluşur:

  • Archive file: Saved game verilerini yazmak için seçtiğiniz bir dosyadır. Huawei Cloud’dan bir arşiv dosyası alındıktan sonra oyununuzun onu ayrıştırması gerekir. Böyle bir dosyanın maksimum boyutu 3 MB’dir.
  • Archive metadata: Saved game tanımlamalarına arşiv adı ve son güncelleme zamanı dahil devam etmek için birini seçmelerine yardımcı olmak için oyunculara görüntülenebilen arşiv öznitelikleridir.

Bir Saved game aşağıdaki nitelikleri içerir.

  1. ID: Huawei oyun sunucusu tarafından oluşturulan benzersiz saved game ID değeri.
  2. Name: Huawei oyun sunucusu tarafından oluşturulan bir saved game adı.
  3. Description: Oyuncuların görüntülemesi için sizin tarafınızdan tanımlanan bir saved game hakkında açıklama. Açıklama 1000 karaktere kadar içerebilir.
  4. Last Update Time: Bir oyun en son kaydedildiğinde milisaniye cinsinden zaman değeri. Değer, Huawei game service tarafından oluşturulur.
  5. Played Time: Bir saved game’in milisaniye cinsinden toplam oynatma süresi. Bir saved game güncellerken oyununuzun değeri sağlamansı gerekir.
  6. Game Progress: Bir oyuncunun saved game ilerlemesi. İlerlemeyi nasıl ölçeceğinizi tanımlayabilirsiniz. Örneğin, ilerleme, bir tam sayı tanımlayabileceğiniz bir oyuncunun ulaştığı mevcut seviye ile temsil edilebilir.
  7. Cover Image: Genellikle kaydetme noktasında alınan ve oyununuz tarafından sağlanan oyun ekran görüntüsü olan bir arşivin kapak resmi. Bu özellik isteğe bağlıdır. Özniteliği ayarlamazsanız, varsayılan görüntü kullanılır. En boy oranı 16: 9 olan ve boyutu 200 KB’den büyük olmayan bir JPG veya PNG görüntüsü önerilir.

Önemli bilgi:

  • Saved game işlevi, verileri oyuncuların HUAWEI Kimlikleri ile HUAWEI Cloud’a kaydeder. Sonuç olarak, kaydetme işlevini uygulayabilmeniz için HUAWEI Drive Kitini etkinleştirmeyi kabul etmeniz gerekir. Şu anda Saved game işlevi yalnızca HUAWEI Cloud tarafından desteklenen ülkelerde / bölgelerde kullanılabilir.
  • Saved game API’lerini çağırmadan önce, oyuncunun oturum açtığından emin olun.
  • Saved game özelliğini kullanmak için, kullanıcıların Huawei AppGallery’de (10.3 veya üzeri) Oyun Hizmetlerini etkinleştirmesi gerekir. Oyun Hizmetlerini etkinleştirmemiş bir kullanıcı arşiv 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 Oyun Hizmetlerini etkinleştirmesi talimatını verir. Kullanıcı Oyun Hizmetlerini etkinleştirmezse, sonuç kodu 7218 döndürülür.

Oyun Nasıl Kaydedilir?

  1. View, ViewModel ve Factory Sınıfları Oluşturun

Öncelikle, önceki makalelerde olduğu gibi View sınıfınızı, ViewModel sınıfınızı ve Factory sınıfınızı oluşturmalısınız.

2. Huawei Drive’da Oturum Açın

SavedGamesViewModel sınıfı, View sınıfından veri alır, verileri işler ve View sınıfına tekrar gönderir.

Öncelikle, Huawei Drive’da oturum açmalısınız. Çünkü kaydedilen oyunlar Huawei Drive’da saklanıyor.

İnitLoginProgress adlı bir metot oluşturun. Bir appsClient nesnesi tanımlayın, HuaweiIdAuthManager ile bir task başlatın ve bu taska onSuccessListener ve onFailureListener ekleyin. Huawei ID parametrelerini almak için bir metot oluşturun. Kullanıcı başarıyla oturum açtıysa, Kaydedilen Oyun bilgilerini onSuccessListener’da almak için farklı bir metot çağırabilirsiniz. Aksi takdirde, signInNewWay metodunu çağırmalı ve View sınıfında startActivityForResult’u çağırmalısınız.

ViewModel sınıfındaki bu kodlar aşağıdaki gibi olmalıdır.

View sınıfına geri dönün ve onActivityResult metodunu override edin.

Bu kodlar sayesinde, Huawei Drive’a giriş yaptınız. Ve şimdi, kaydedilmiş yeni bir oyun oluşturabilir, kaydedilmiş oyununuzu güncelleyebilir ve kaydedilmiş oyununuzun ayrıntılarını alabilirsiniz.

2. Saved Game Oluşturma

ViewModel sınıfınızdaki sonuçları almak için bir ArchivesClient ve ArrayList oluşturun. SaveGame adlı bir metot oluşturun. Ve burada tüm Saved Game parametrelerini tanımlayın. (Description, playedTime, progress vb.)

ArchiveSummaryUpdate’ten bir nesne oluşturun, bu nesnenin tüm parametrelerini set edin.

ArchiveDetails’den bir nesne oluşturun ve tüm parametreleri burada tekrar set edin ve charseti “UTF-8” olarak ayarlayın.

Bir archivesClient oluşturun ve bu client ile bir task başlatın. Ayrıca, ArchiveDetails ve ArchiveSummaryUpdate’i bu task için parametre olarak set etmelisiniz.

Son olarak onSuccessListener ve onFailureListener ekleyi . OnSuccessListener sayesinde, saved game ayrıntılarınızı görebilirsiniz. Ayrıca, herhangi bir hatanız varsa, bunu FailureListener’da görebilirsiniz.

3. Saved Game Güncellemesi

Bir saved game güncellemek için öncelikle getArchivesClient metodunu oluşturmalısınız. Bu metot ile bir client oluşturabilirsiniz.

İkinci olarak, tüm saved game parametrelerini yeniden tanımlayın. Bu parametreler yeni değerleriniz olmalıdır. Unutmayın, kaydedilmiş bir oyunu güncellediğinizde, eski değerleriniz yeni tanımlanan değerlerle değişecektir.

Yeniden bir ArchiveSummaryUpdate nesnesi ve ArchiveDetails nesnesi oluşturun.

GetArchivesClient metoduyla bir task oluşturun. onSuccessListener ve onFailureListener ekleyin. Saved Game update sonucunu SuccessListener’da kontrol edebilir ve sonucunuzu ekrana yazdırabilirsiniz.

4. Saved Game Ayrıntısını Görme

Ayrıntıları listelemeden önce, Drive’da yeniden oturum açmalısınız.
Tekrar oturum açtıktan sonra requestData() adında bir metot oluşturun.

İkinci olarak, bir task oluşturun ve getArchiveSummaryList() metodunu çağırın. Ve bu göreve onSuccessListener ile onFailureListener ekleyin.

Bundan sonra, bir for döngüsü oluşturun ve kaydedilen tüm oyun ayrıntılarını buraya yazdırın.

Son olarak, bu ViewModel metodunu View sınıflarınızda çağırmalısınız.

Tüm kodları aşağıda bulabilirsiniz.

https://gist.github.com/BerkOzyurt/7c11eb5800eecaad660a0b2e0bdbf358#file-requestdata-kt

Sonuç

Bu makale yardımıyla Saved Games oluşturabilirsiniz. Ayrıca, saved games ayrıntılarınızı uygulamanızda güncelleyebilir ve listeleyebilirsiniz. Saved Games detay loglarını aşağıda görebilirsiniz.

Bu saved game değerleri ile bir oyunu başlayabilir veya kullanıcının saved game ayrıntılarını gösterebilir, gerekli yerlerde kullanabilirsiniz. (Güncelleme zamanı, mevcut ilerleme vb.)

Huawei Game Service ile ilgili 5 parçadan oluşan bu yazı dizimi okuduğunuz için teşekkür ederim. Umarım yararlı olmuştur.

--

--