MVVM ile Game Service Kullanımı / Part 3— Events

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

Herkese merhaba,

Bu makale, Huawei Game Service blog serisinin üçüncü bölümüdür . Üçüncü bölümde Game Service hakkında biraz detay verip, events hakkında bilgi vererek MVVM yapısı ile mobil oyun uygulamanızda nasıl kullanılacağını anlatacağım.

Yazı dizisinin ikinci bölümünü aşağıdaki linkte bulabilirsiniz.

Events Nedir?

Events özelliği oyun sırasında oyuncularınız tarafından oluşturulan belirli verileri ve geri bildirimleri AppGallery Connect’de belirli eventler altında depolamayı sağlar.

Oyununuzun hangi etkinlik verilerini göndermesi gerektiğini esnek bir şekilde tanımlayabilirsiniz; örneğin, oyuncular belirli bir miktar ödemiş, oyuncular belirli bir seviyeye ulaşmış veya oyuncular belirli bir oyun seviyesine girmiştir şeklinde bir çok event tanımlanabilir.

Oyununuzu yayınlarken etkinlik verilerine göre de ayarlayabilirsiniz. Örneğin, belirli bir ürünün alıcıları beklenenden çok daha azsa, öğe fiyatını ayarlayabilir ve öğeyi oyuncular için daha çekici hale getirebilirsiniz.

Başlamadan önce

  • HMS Core SDK sürümünün 3.0.3.300 veya üstü olduğundan emin olun.
  • Oyununuzdaki events özelliğini kullanmadan önce, AppGallery Connect’te eventsleri tanımladığınızdan emin olun.
  • Events API’lerini çağırmadan önce, oynatıcının oturum açtığından emin olun.
  • Events ö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ı olay 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.

Event Oluşturma

Events, yalnızca konsolda oluşturulur. Bunun için öncelikle Huawei AGC Konsolunda oturum açın.

“My Apps” -> Your App Name -> “Operate” -> “Events” yolunu takip ederek events yönetim paneline erişebilirsiniz.

Bu sayfada eventleri görebilir ve “Create” butonuna tıklayarak yeni bir event oluşturabilirsiniz .

“Create” butonuna tıkladıktan sonra , event detay sayfasını göreceksiniz. Bu sayfada eventler için bazı bilgiler vermelisiniz. Bir event aşağıdaki temel özellikleri içerebilir:

  1. Event ID: Bir eventi tanımlamak için AppGallery Connect tarafından oluşturulan benzersiz bir ID.
  2. Event name: Bir eventin adı . Bir eventi yapılandırırken bunu tanımlayabilirsiniz.
  3. Event description: Bir eventin açıklaması .
  4. Event value: Bir event tanımlandığında değil, bir event gönderildiğinde ayarlanan bir event değeri. “Harcanan altın para” eventi için değer 500 ise, oyuncunun 500 altın harcadığı anlamına gelir. Bir eventi konfigüre ederken bir event değeri için veri türünü sayı veya zaman olarak tanımlayabilirsiniz. Sayı türünün bir değeri için, ondalık basamak sayısını ve birimi de tanımlayabilirsiniz. AppGallery Connect, veri türü ayarına göre gönderilen bir eventin değeri için otomatik olarak bir birim ekler.
  5. Event icon: Bir eventle ilişkili simge . Simge, 512 x 512 piksel çözünürlükte ve PNG veya JPG biçiminde olmalıdır. Simgede yerelleştirilmesi gereken metinleri kullanmaktan kaçının.
  6. Initial state: Bir eventin ilk durumu. Bir eventi tanımlarken, eventi göstermeyi veya gizlemeyi belirlemek için ayarlayabilirsiniz.
  7. List order: Tüm eventler arasında bir eventin sıralaması. Bir eventi yapılandırırken belirtmeniz gerekir.
  8. Event type: Bir eventin türü. Şu anda üç event türü desteklenmektedir:
  • Currency sink : Bir para biriminin tüketimini izleyen eventler için bu türü seçin, örneğin “harcanan altın paralar”.
  • Currency output : Bir para biriminin kaynaklarını izleyen eventler için bu türü seçin, örneğin “kazanılan altın paralar”.
  • None : Para birimiyle ilgili olmayan eventler için bu türü seçin.

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

Events Listeleme

  1. Event Listesi Sayfası

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

2. EventsViewModel Sınıfı

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

Öncelikle eventsi ayarlamak ve View sınıfına göndermek için bir LiveData listesi ve ArrayList oluşturun. Daha sonra getLiveData() ve setLiveData() metodlarını oluşturun.

Son olarak, events için bir client oluşturun. Ve tüm eventleri listlemek için bir metot oluşturun. Tüm eventleri arrayList’e ekleyin. Daha sonra bu diziyi LiveData listesine set edin.

Aşağıda EventsViewModel sınıfını görebilirsiniz.

3. EventsViewModelFactory Sınıfı

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

4. Adapter Sınıfı

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

5. EventsFragment

Ö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.EventsViewModel" />
</data>

EvetsFragment’a geri dönün, factory sınıfı, viewModel sınıfı ve az önce XML dosyasına eklediğiniz bindingi ekleyin.

özel lateinit var bağlama: FragmentEventsBinding 
özel lateinit var viewModel: EventsViewModel
özel lateinit var viewModelFactory: EventsViewModelFactory

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

Event Kaydetme ve Değerini Arttırma

Oyununuza ilgili bir evente kaydolmak istediğinizde EventsClient.grow metodunu çağırarak, eventId ve growAmount değerlerini set etmelisiniz.

  • EventId parametresi eventin ID değerini gösterir ve AppGallery Connect event tanımlandığı zaman oluşturulur.
  • GrowAmount parametresi ise event değerinin arttırım miktarını belirler.

İlk olarak, bir client nesnesi oluşturun.

var eventsClient: EventsClient? = null

Daha sonra client nesnesini tanımlayın.

eventsClient = Games.getEventsClient(context as Activity)

Ve son olarak ID değeri ile seçtiğiniz eventin değerini arttırın.

eventsClient?.grow(EVENT_ID, GROW_AMOUNT)

Event Detaylarını Konsolda Görüntüleme

Tüm eventleri konsolda görebilirsiniz. Ayrıca bu sayfada Event ID, event adı, açıklaması, son yayınlanma zamanı ve durumu bulabilirsiniz.

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

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

Sonuç

Bu yazı yardımıyla konsol üzerinde etkinlik oluşturabilirsiniz. Ayrıca bu yazı sayesinde evetnlerin değerini arttırma işlemlerini ve listeleme işlemlerini nasıl yapabileceğinize dair bir fikir bulabilirsiniz.

Bir sonraki yazımda Leaderboard’u açıklayacağım ve bir örnek vereceğim. Oyun uygulamanızı temiz bir mimari ile geliştirmek için lütfen dördüncü makaleyi takip edin.

--

--