Proje
DodgeArena — bir oyun döngüsünü baştan sona bitirme denemesi
Daralan bir arenada toplardan kaçıyorsun. Asıl mesele oyunun kendisi değil: bir oyun döngüsünü ilk kareden mağaza görseline kadar sonuna götürmek.
Problem
Bir uygulamayı yarım bırakabilirsin — eksik ekran görünmez, kimse fark etmez. Bir oyunu bırakamazsın: kare döngüsü, çarpışma, zorluk eğrisi, skor, ölüm, yeniden başlama ve menü hepsi çalışmadan ortada oynanacak hiçbir şey olmaz. Bu yüzden oyunu, "bitirmek" fiilini test etmek için seçtim.
İkinci soru daha teknikti: hazır bir oyun motoru kullanmadan, sadece React Native'in kendi çizim ve animasyon araçlarıyla akıcı bir oyun döngüsü kurulabilir mi?
Çözüm
Motor yok: her top ve oyuncu, konumu her karede güncellenen sıradan bir görünüm. Döngü requestAnimationFrame üzerinde çalışıyor ve iki şeyi doğru yapıyor — hareketi geçen süreye göre ölçekliyor (yavaş cihazda oyun yavaşlamıyor, sadece adımlar büyüyor) ve bu ölçeği bir üst sınırla kesiyor, böylece uygulama arka plandan dönerken toplar duvarların içinden geçip ışınlanmıyor.
Çarpışma, çizilen kutunun değil, ondan kasten daha küçük tutulmuş bir dairenin merkez mesafesiyle ölçülüyor: oyuncu gözüyle "kıl payı kurtuldum" hissi, matematiksel olarak gerçekten kurtulmuş olmaktan daha önemli. Aynı ölçüm ikinci bir işi daha yapıyor — belli bir mesafeden yakın geçen her top skoru artırıyor ve yavaş çekim göstergesini dolduruyor. Yani oyunun ödül sistemi, kaçmayı değil az kalsın çarpmayı ödüllendiriyor.
Zorluk tek bir çarpanla değil, dört ayrı eksende artıyor: seviye eşikleri (önce doğrusal, sonra hızlanan bir eğri), top hızı, seviye ilerledikçe açılan yeni top tipleri (peşinden gelen avcı, ikiye bölünen, hızlı) ve sürekli daralan arena. Dördü ayrı ayrı ayarlanabiliyor, çünkü "oyun zorlaştı" ile "oyun sıkıcı biçimde imkansızlaştı" arasındaki fark bu ayarların birbirine oranında.
Teknoloji
Öne Çıkan Detay
Kontrol şeması küçük ama belirleyici bir karar: parmağını nereye koyarsan koy, karakter oraya ışınlanmıyor — dokunduğun andan itibaren parmağının farkı kadar kayıyor. Böylece parmağın hiçbir zaman karakterin üstünü kapatmıyor, ki dar bir arenada görüşünü kapatmak doğrudan ölüm demek. Aynı hareket, arenanın o anki (daralmış) sınırlarına da kırpılıyor.
Ekranlar
Benzer bir problemi konuşalım
Kapsamı belirsiz bir ürün fikri ya da dijitalleşmesi gereken bir süreç varsa, bir e-posta yeterli.