Bahsettiğiniz bu adımlar büyük olasılıkla ayrı motorlarda yapılır. Sadece basit oyun motorları genellikle bir geçişte var. Sıralamanız
for each object
do physics
do game logic
draw
olur
call physics subsystem
call game logic subsystem
call drawing subsystem
Fizik Motoru pozisyonları ve boyutları dikkate alır.
Oyun Mantık Motor (o ... bazı noktalarını engelleyebilecek) Fizik Motoru ne değiştirdi yorumlama ilgilenir, onlar ne yapmaları gerektiğini hedefleri karakterler var ve hangi davranış , planlandığı komut (bu çalışır düşünüyorum fonksiyonu).
Drawing Engine, hangi nesnelerin görünür olduğunu çizer ve Quake motorlarının burada hile yaptığı için hangi nesnelerin görünür olduğunu bilir (bkz. Çizim bölümü).
Size tavsiyem oyun motorları yerine simülasyonların nasıl yapıldığını incelemektir. Oyun geliştirme ile ilgili büyük bir pop-kültür vardır ve oyun motorları zorunlu dillerde yapılır (gelenek ve hız nedeniyle); bu yüzden iyi ders kitapları (teori yerine) almak bana daha aydınlatıcıydı ve SONRA motorlara bakmak ve saatlerce yaptıklarından ziyade motorlara bakmaktan ziyade motorlara (pratik) bakmak.
Fizik
Tüm varlıkları tekrarlama ve yapmayı düşünme, çizme muhtemelen sorunlara yol açacaktır. Çatışmalar olacak vb. Valve'in Havok olduğuna inanıyorum ve sanırım Havok yeterince doğru fiziğe dikkat ediyor.
düşünmek
Düşünme işlevi, oyundaki bir zaman sonraki düşüncedeki zamana eşit olduğunda çalıştırılır . Quake motorunda bu şekilde çalışır ve Quake motoru Half Life motorlarının temelini oluşturur. Her seferinde çalıştırılmaz.
Dahili olarak, bir varlık listesi üzerinden basit bir yineleme ve düşünme işlevini çağırmak için zamanın geçip geçmediğini kontrol etmelidir. Zaman karmaşıklığı O (N) olacaktır, burada N varlık sayısıdır.
Çok sayıda varlık varsa, fps'yi ne kadar artıracağını ölçmelisiniz. Amdahl yasası nedeniyle potansiyel olarak görünmez bir hız olduğunu unutmayın. Yani, tüm öğeleri sadece yineleme ve bir sayı azaltmak ve kontrol.
Nesneleri nextthink ile sıralayarak hızlandıracağım (objelere işaretçiler listesi oluşturun ve her seferinde sıralayın; varlıklar dizisi değil, çünkü varlıklar bir sonraki düşüncelerini her zaman değiştirebilir, böylece dizide yeniden düzenlemek O (N) yerine O (N) alır 1) listede).
Linux'taki O (1) zamanlayıcısına da bakmalısınız .
Çizmek
Motor, kameranın göründüğü alandan yaklaşık olarak görülebilir olanı çizer. Oyun seviyesi bir ağaca bölünür ve bir alan o ağacın yaprağıdır. Sizi bununla ilgili ayrıntılarla rahatsız etmeyeceğim ... Dolayısıyla, bir varlık görünürse, bir dizi görünür varlık içine konur ve çizilir.
Hangi alanların potansiyel olarak görünür alanlar olduğunu depolarlar. Kısaca "potansiyel görünür görünür küme", PVS denir . PVS'nin görselleştirilmesi var , yeşil kapsül oyuncu ve etrafında PVS'nin içerdiği hale getiriliyor.
<some commercial engine>
?