Pokémon TCG Pocket: Basit oyunlar için yalnızca Vulkan geliştirmeyi benimseme

Pokémon TCG Pocket'taki oyun başlığı logosunun ekran görüntüsü.

Pokémon Trading Card Game (TCG), yaklaşık 30 yıldır dünya çapında oynanıyor. Kısa süre önce kullanıma sunulan Pokémon TCG Pocket, oyuncuların fiziksel kartlara ihtiyaç duymadan Pokémon koleksiyonlarını ve savaşlarını istedikleri zaman, istedikleri yerde deneyimlemelerini sağlamak için tasarlanmıştır. Oyunun akıllı telefonlarda erişilebilir olması, kullanıcılar arasında yaygın bir popülerliğe sahip olmasına katkıda bulundu.

Basit bir takas kartı oyunu gibi görünse de Pokemon TCG Pocket, karmaşık gölgelendiriciler kullandığından derleme süresini kısaltmak önemli bir zorluk teşkil ediyor. Bu sorunu gidermek, yüksek kaliteli grafikler ve sorunsuz bir oyun deneyimi sunmak için Pokémon TCG Pocket'in Android sürümünde yeni nesil grafik API'si Vulkan kullanıldı.

Bu belgede, Pokémon TCG Pocket geliştirme ekibinin Vulkan'ı kullanmaya başlaması, karşılaşılan zorluklar ve Vulkan'ın sunduğu avantajlar ayrıntılı olarak ele alınmaktadır.

Şekil 1. Pokémon TCG Pocket oyun oynama sahneleri.

Vulkan'ı kullanmanın nedenleri

Pokémon TCG Pocket geliştirme ekibi başlangıçta OpenGL ES kullanmayı planlıyordu. Ancak gelecek vaat eden bir grafik API'si olan Vulkan'ı kullanmaya karar verdiler. Vulkan'ı tercih etmemizin başlıca nedenleri şunlardı:

  • Uzun vadeli uygulama yönetimi: Ekip, Vulkan'ın Android için baskın grafik API'si olma eğilimini fark ederek Vulkan'ın uzun vadeli uygulama yönetimi için en uygun seçim olduğunu belirledi.
  • Düşük özellikli cihazlarda kararlı performans: Çeşitli kullanıcılara sorunsuz bir deneyim sunmak için düşük özellikli cihazlarda kararlı performans sağlamak önemlidir. Vulkan'ın CPU yükünü azaltma özelliğinin kare hızlarını ve pil tüketimini iyileştirmesi bekleniyor.
  • Yayın sonrası büyük ölçekli değişikliklerden kaçınma: Yayından sonra OpenGL ES'ten Vulkan'a geçiş, kapsamlı değişiklikler gerektirir ve kullanıcı deneyimini olumsuz yönde etkileyebilir. Vulkan'ı en başından itibaren benimsemek, bu tür önemli değişikliklere olan ihtiyacı azalttı.

Vulkan'ı Unity ile uygulama

Pokémon TCG Pocket, oyun motoru olarak Unity'yi kullanır. Unity, Vulkan'ı tek tıklamayla uygulamak için basitleştirilmiş bir süreç sunar. Geliştirme ekibi, Unity'yi kullanarak özel eğitime gerek kalmadan Vulkan'ı sorunsuz bir şekilde entegre etti. Ayrıca, geliştirme ortamları ve araçları için Vulkan'a özel uyarlamaların olmaması da maliyet etkinliğine katkıda bulundu.

Unity'de Auto Graphics API
Şekil 2. Unity'de Auto Graphics API

Vulkan'ı uygulamayla ilgili zorluklar

Vulkan'ın uygulanması nispeten kolay olsa da geliştirme ekibi daha sonra bazı zorluklarla karşılaştı:

  • Cihaza özgü sorunlar: Bazı üreticilerin sürücüleri, OpenGL ES'ye kıyasla Vulkan'da daha düşük kararlılık sergiledi ve cihaza özgü sorunlara yol açtı.
  • Ara katmanda eksik Vulkan desteği: Bazı ara katmanlarda tam Vulkan desteği olmadığından ekibin ara katman güncellemelerini beklemesi gerekiyordu.

Geliştirme ekibi, bu zorlukları çözmek için birden fazla strateji kullandı. Örneğin, sorun giderme için deneyimli tüketici oyunu geliştiricilerinden oluşan bir ekip oluşturdu (düşük seviyeli grafik API'sinde veya özel motorda deneyimli oldukları için) ve her bir sorunu çözmek için Google ve Unity ekipleriyle birlikte çalıştı. Cihaz uyumluluğunu genişletmek için test, önerilen cihaz özelliklerini belirlemek amacıyla orta ve eski üst düzey cihazları (2-3 yıl önce piyasaya sürülmüş) içeriyordu.

Vulkan'ın avantajları

Vulkan'ı benimsemek Pokémon TCG Pocket'a çeşitli avantajlar sağladı:

  • Shader derleme süresi azaltıldı: Vulkan, çok sayıda shader için bile shader derleme süresini önemli ölçüde azalttı. Örneğin, OpenGL ES derleme süresi 1 saniyeyi aşabilir ancak Vulkan oluşturma işleminde bu artık sorun teşkil etmez.
  • Desteklenen cihaz yelpazesinin genişletilmesi: Kare hızında ve pil tüketimindeki iyileştirmeler, daha geniş bir cihaz yelpazesinin desteklenmesine olanak tanıyarak daha fazla kullanıcının daha sorunsuz bir deneyim yaşamasını sağladı.
  • Vulkan doğrulama katmanlarıyla daha iyi telemetri: Vulkan doğrulama katmanı, Vitals ANR/Kilitlenme raporları tarafından sağlanan verileri tamamlayarak sorunların temel nedenini belirlemede çok faydalı oldu.

Geliştiricilere mesaj

Pokémon TCG Pocket geliştirme ekibi, projeleri için Vulkan'ı kullanmayı düşünen geliştiricilere aşağıdaki tavsiyede bulunuyor:

  • Vulkan, gölgelendirici derleme süresini kısaltmanın yanı sıra önemli performans avantajları da sunar.
  • Pokémon TCG Pocket henüz kullanmasa da OpenGL ES'e geri dönmek için vkQuality'yi kullanmak cihaz desteğini genişletebilir.

Sonuç

Pokémon TCG Pocket geliştirme ekibi, Vulkan'ı kullanarak her oyuncuya sorunsuz ve ilgi çekici bir deneyim sunmak için grafikleri çok çeşitli cihazlarda optimize etti. Devam eden özellik eklemeleri ve gelecekte gelişen potansiyeliyle Vulkan'ın zaman içinde daha da fazla avantaj sunması bekleniyor.