Coyote time ve jump buffer: iyi zıplamanın 12 satırı
Oyuncular "zıplama iyi hissettirmiyor" dediğinde kastettikleri şey genelde iki eksik özelliktir. İkisi de yarım saatte yazılır.
Sorun neye benziyor
Platform oyunu prototipinizi test eden herkes aynı şeyi söylüyor: "zıplama tuhaf". Kimse tam olarak neyin yanlış olduğunu söyleyemiyor. Kod doğru: zemine değiyorsan zıpla, değmiyorsan zıplama.
Sorun kodda değil, insanda. Oyuncu platformun kenarından düştüğünü fark ettiğinde tuşa basıyor — ama artık geç. Ve zıplama tuşuna havadayken bastığında, yere değdiği anda zıplamasını bekliyor.
İki küçük tolerans penceresi
Coyote time, karakter zeminden ayrıldıktan sonra kısa bir süre daha zıplama hakkını açık tutar. Adı çizgi filmlerdeki, uçurumdan çıkıp bir an havada duran çakaldan gelir.
Jump buffer ise tam tersi yönde çalışır: oyuncu yere değmeden hemen önce tuşa bastıysa, o basış hafızada tutulur ve yere değdiği anda uygulanır.
Değerler ne olmalı
Ölçtüğüm projelerde iki pencere de 100–150 ms aralığında iyi çalışıyor; yani 60 FPS'te 6–9 frame. Daha kısa tutarsanız etki hissedilmez, daha uzun tutarsanız karakter havada zıplıyormuş gibi görünür.
Bu değerleri sabit yazmayın. Bir ScriptableObject ya da veri tablosuna alın; tasarımcının oyunu çalıştırmadan değiştirebilmesi gerekir.
Nereye kadar gider
Aynı mantık başka her yerde işe yarar: saldırı girdisi tamponlama, çift zıplama toleransı, ledge grab yakalama penceresi, hatta menü geçişlerinde tuş yığını.
Genel kural şu: oyuncunun niyeti ile oyunun kuralları çakıştığında, oyuncunun lehine karar verin. Bunu yapan oyunlar "tepki veriyor" diye anılır.