Modern web için oyun geliştirme
İyi oyun geliştiricileri, belirli bir platformun sunduğu fırsatlardan yararlanmak için o platformun benzersiz özelliklerini benimsemenin önemli olduğunu bilir. Peki web'in benzersiz özellikleri nelerdir? Peki bir web oyununun tanımı nedir?
Google I/O 2019'da web oyunları ekosisteminin durumu, modern web oyunu geliştirmeyle ilgili mevcut en iyi uygulamalar ve sektörün nereye gittiği hakkındaki düşüncelerimi paylaşmıştım. Bu blog yayınında, YouTube'da tam olarak izleyebileceğiniz konuşmamdaki bazı önemli noktaları özetleyeceğim:
Web oyunlarının zorlukları
Google'a katılmadan önce, yaklaşık 20 milyon kez indirilen Duet adlı bir mobil oyun geliştirdim. Bu deneyim sayesinde, bir oyundan başarılı bir işletme oluşturmanın üç temel bileşeninin şunlar olduğunu öğrendim:
- İşlevsel bir oyun
- Kullanıcılar
- Kullanıcılardan para kazanmanın bir yolu
Oyun geliştiriciler bu üç unsur olmadan başarılı olamaz. Günümüzde bu son iki nokta en kritik olanlardır. WeChat, Facebook Instant Games ve benzeri kapalı HTML5 ekosistemleri, HTML5'i kullanarak oyun oluşturmanın mümkün olduğunu göstermiştir.
Modern en iyi uygulamalar
"İşlevsel oyun" derken, bir oyunun başarılı olmasını sağlayan en temel üç unsuru kastediyorum:
- Performans
- Görseller
- Ses
Web platformu, bu alanların her birinde son birkaç yılda önemli ilerlemeler kaydetti. CPU performansı için WebAssembly adlı yeni ve yüksek performanslı bir standarda erişebiliyoruz. Grafik tarafında, WebGL 1.0 tarayıcılar arası iyi bir desteğe sahiptir ve WebGPU gibi gelecekteki standartlar, web platformunu Vulkan ve Metal'e benzer şekilde genişletilebilir bir grafik programlama geleceği için konumlandırıyor. Son olarak, web sesi için ortak Web Audio API'si ve daha yeni olan Audio Worklet API'si'ni kullanabilirsiniz.
Unity kısa süre önce HTML5 tabanlı platformlar için 2D oyunlar geliştirmeye odaklanan Project Tiny adlı yeni bir çalışma zamanını tanıttı. Project Tiny, Unity'nin motor yapısına yeni bir modüler tasarım uygulayarak Unity motorunun temel boyutunun 1 megabaytın altına düşmesini sağlar.
Teknik açıdan bakıldığında, web oyun geliştirmeyi benimsemek için daha iyi bir zaman olmamıştır.
Döngüye girin
Tabii ki iyi bir oyun iyi performans, grafik ve sesten daha fazlasıdır. Bir oyunun mükemmel olması için de eğlenceli olması gerekir.
Eğlence, bir üründe ölçülmesi zor bir unsurdur. Yeterince eğlenceli, ilgi çekici veya yenilikçi olan oyunlar kullanıcıların arkadaşlarına bahsetmesini sağlar. Diğer bir deyişle, deneyimi paylaşmak isterler. Bu fırsattan yararlanıp web'le birlikte kullanmak, viral büyüme potansiyelini açığa çıkaran güçlü bir kombinasyondur. Özellikle web'de, merkezi bir keşif platformu olmadan kullanıcı edinme konusunda en iyi şansımız, oyunlarımızın olabildiğince viral olmasını sağlamaktır.
İyi oyun geliştiricileri, belirli bir platformdan (yazılım veya donanım düzeyinde) yararlanmak için o platformun benzersiz özelliklerini benimsemenin önemli olduğunu bilir. Örneğin, hareket kontrolleri olan bir konsol için oyun geliştiriyorsanız bu hareket kontrollerini kullanmanın en iyi yolunu düşünmeniz gerekir.
Başka bir deyişle, uygulamanızı geliştirdiğiniz platformun kullanıcılarının beklentilerine saygı göstermeniz gerekir. Web kullanıcıları ne bekler? Web içeriğinin hızlı yüklenmesini ve hızlı bir şekilde etkileşimli olmasını bekliyorlar. Konuşmamda, oyunların hem web'de hem de web'de hızlı bir şekilde yüklenmek, kullanıcıları oyun dünyalarına çekmek, bu kullanıcılarla etkileşim kurmak ve kullanıcılara deneyimlerini paylaşmaları için ek teşvikler sunmak üzere tasarlandığına dair çeşitli örnekler verdim.
Şahsen, başarılı bir web oyunu oluşturmanın anahtarının web'in bu benzersiz özelliğinden yararlanmak olduğunu düşünüyorum. Özellikle, web'in URL yapısının gücü ve kullanıcıların katılabileceği paylaşım döngüsü.
Construct 3'ü kullanarak oluşturduğum ve URL'den eğlenceli ve ilgi çekici bir şekilde yararlanan bir web oyunu örneğini burada bulabilirsiniz.
Uzay Tahtası, mobil cihazlarda dokunmatik kontrollerle veya masaüstünde klavye girişiyle oynanabilen çok basit bir oyundur. Amaç, sonunda bir hedefe ulaşmak için engellerle dolu bir labirentte gezinmektir.
Space Board URL'yi benzersiz bir şekilde kullanıyor? Seviye yapısını URL'ye kodlayarak. Tüm seviyeler, 10x10 nesne ızgarası (ör. duvarlar, düşman kuleleri, anahtarlar, kilitli kapılar vb.) olarak tanımlanır. Ardından URL, tüm ızgara konumlarını ve içeriklerini listeler. Duvarlar W
karakteriyle gösterilir. Boş alan, alt çizgi karakteridir.
Aşağıda bununla ilgili bir örnek verilmiştir:
https://io-space-board.firebaseapp.com/?gameWorld=_wwwwwwwwww___ww__eww_k__d___ww___ww___ww_wwwww_www_wwwww_www___ww___ww_s_ww_f_ww___ww___wwwwwwwwwwww
Çirkin ama işe yarıyor.
Space Board'da bir seviyeyi tamamlayan oyuncu, yukarıda gösterilen basit seviye düzenleyiciyi kullanarak kendi seviyesini tasarlayabilir. Oyuncuların kendi seviyelerini tasarlamasına olanak tanıyarak kişiselleştirme fırsatı sunuyoruz. Kullanıcılar bir oyunla bağlantı kurduklarında ve içerik üretip özelleştirdiklerinde, bu "şeyi" dünyayla paylaşmak isterler.
Bir oyunu paylaşma isteği, web oyunlarımızda ulaşmayı amaçladığımız viral döngünün başlangıcıdır. Bu oyun tasarımı ve paylaşım mekanizması, mümkün olan örneklerden yalnızca biridir. Bunun dışında birçok olasılık vardır. Daha fazla örnek için konuşmamı izlemenizi öneririm.
Yatırım geri dönüşü
Şu anda oyun geliştiricilerin web oyunlarından nasıl gelir elde edebileceği konusunda iki temel yaklaşım vardır:
- Oyunlardan doğrudan para kazanma
- Bu kanalları edinme kanalı olarak değerlendirme
Web oyunlarını bir edinme kanalı olarak değerlendirmek, iOS/Android/masaüstü oyununuzun web sürümünden yararlanarak oyuncuların ilgisini çekmek ve onları daha büyük iOS/Android/masaüstü ikilinizi indirmeye ikna etmek için bir mekanizma kullanmak anlamına gelir. Böylece iOS/Android/masaüstü platformunun yerleşik ödeme ve faturalandırma arka uçlarıyla gelir elde edersiniz.
Para kazanma, genellikle reklam ve mikro işlemlerin bir karışımıdır. Web'in oyun reklamcılığında mobil platformlarla rekabet edebilmesi için yapılması gereken çalışmalar var. Örneğin, ödüllü video reklamlar gibi biçimler mobil oyunlarda birkaç yıldır son derece popüler olmasına rağmen reklam ağlarının bu biçimleri web'de kullanıma sunduğunu ancak şimdi görüyoruz.
Bununla birlikte, geleneksel banner reklamlar ve geçiş video reklamları aracılığıyla reklamcılık yaparak açık web'de başarılı olmaya devam eden oyun geliştiriciler de vardır. Bu biçimler hakkında daha fazla bilgi için Oyunlar için AdSense'e göz atın.
Web'de, uygulanabilecek sınırsız sayıda ödeme yöntemi sayesinde mikro ödemeler için tam esneklik sunulur. Ancak bu özellik iki ucu keskin bir kılıçtır. Bunun olumsuz tarafı, oyuncuların keşfettikleri yeni bir web sitesine karşı, platforma özel mobil mağaza ödeme yöntemlerine kıyasla daha az güven duymasıdır.
Web'e daha tutarlı bir ödeme kullanıcı arayüzü getiren çözümlerden biri Payment Request API'dir. Bu API, tarayıcı tarafından gösterilen bir kullanıcı arayüzü çağırır ve kredi kartları ve fatura adresleri gibi ödeme ayrıntılarının alınmasını kolaylaştırır. Ancak ödeme ayrıntılarını almak, işlem yapmanın yalnızca ilk adımıdır. Arka uç faturalandırma platformuna da ihtiyacınız vardır.
Gelecek
Son birkaç yılda, şaşırtıcı derecede başarılı olan birkaç web oyunu gördük. Slither.io, web'in sunduğu muazzam erişimi ve viral büyüme fırsatını gösteren, web'e ve platforma özel karma bir işletme oluşturdu. Poki.com gibi portallar, kullanıcı deneyimlerinde yenilikler yapıyor ve her gün Subway Surfers veya Crossy Road gibi mobil sürümleriyle aynı kalitede oyunlar yayınlıyor.
Dahası, açık web'in dışına bakarsanız web oyunlarının çoktan yükselişe geçtiğini görebilirsiniz. WeChat ve LINE gibi kapalı ekosistemler, açık web'de oynanamayan, ancak HTML5 ve WebView gibi web teknolojileri temel alınarak oluşturulmuş keyifli oyunlar sunar. Bu, web'in platforma özel mobil oyunlarla rekabet edebilecek bir gerçekçilik düzeyine ulaştığının açık bir göstergesidir. Belki de gerçekçilik konusundaki ders kitabı tanımında değil, daha önemli bir metrikte: oyuncu ilgisi.