Bir iphone shmup yapıyorum ve ne tür oyun döngüsü kullanılacağına karar vermeye çalışıyorum. Yarı sabit zaman adımını veya tam sabit zaman adımını kullanmak istiyorum.
Yarı sabit zaman testiyle sıfır veya daha fazla güncelleme (FIXED_INTERVAL) çağrısı ve ardından bir güncelleme (dt) çağrısı yapacağım, burada oyun döngüsü başına dt <= FIXED_INTERVAL. Ben bu yöntemle dezavantajları benim temelde her güncelleme için bir değişken dt varsaymak zorunda çünkü benim fizik güncelleme (dt) mantığı programlamak için daha zor olacak olmasıdır. Ve sonra, kayan nokta değerlerinin her seferinde aynı olmaması nedeniyle oyunumun her çalışmasının biraz farklı olacağını duydum.
Sonra tamamen sabit bir zaman çizelgesi ile sıfır veya daha fazla güncelleme (FIXED_INTERVAL) çağrıları ve ardından bir enterpolasyon (dt / FIXED_INTERVAL) çağrısı yapıyorum, burada oyun döngüsü başına dt <FIXED_INTERVAL.
Bu yüzden gerçekten yapmak zorunda olduğum büyük karar şudur: Değişken dt ile bir güncelleme (dt) uygulama zorluğunu çözmek mi yoksa enterpolasyon uygulama zorluğuyla mı uğraşmak istiyorum?
Şimdi okuduğum kadarıyla insanların çoğunluğu tam sabit kullanmayı ve enterpolasyon yapmayı söylüyor. Ama enterpolasyonu uygulamayı düşündüğümde, değişken dt ile bir güncellemeden (dt) çok daha karmaşık olurdu. Çünkü enterpolasyon kullanırsam hem önceki durumu hem de mevcut durumu hatırlamalıyım. Bu yüzden enterpolasyon kullanmak istiyorsam, tüm bireysel oyun durumlarını özetleyen ek bir dolaylama katmanı bulmalıyım. İnterpolasyon kullanmak zorunda olmadığım yarı sabit zaman aşımı ile bir oyun durumu soyutlaması yapmak zorunda değilim çünkü her zaman sadece bir oyun durumu vardır ve bu sadece düşmanlarımı ve düşmanımı temsil eden "küresel diziler" madde işaretleri vb.
Peki daha pratik bir seçim nedir: fizik güncellemelerimin dt değişkeni ile karmaşıklaşabileceğini bilerek yarı sabit olarak uygulayabilir miyim? Yoksa tam olarak sabit mi kullanıyorum ve enterpolasyon yapmak için önceki durumu ve mevcut durumu izleyebilmem için bir oyun durumu soyutlaması mı bulmaya çalışıyorum?