Sanırım diğer sahne grafiği teknolojilerinin ne yaptığını okumak size çok fayda sağlayacak.
Arka plan
Örneğin, Ogre3D açıklamasına bakın. Açık kaynak kodlu bir sahne grafik tabanlı grafik motorudur. Eğiticilere bakmanızı ve sahne düğümlerinin nasıl kullanıldığını görmenizi öneririm (Not: Ogre'nin nasıl kullanılacağını öğrenmenizi söylemiyorum, aksine Ogre'nin sahne düğümlerinde ve sahne yöneticilerinde hangi özellikler mevcut)
SceneNode belgeleri:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
SceneManager belgeleri:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Bakmaya değer başka bir şey şu bağlantıdır:
http://sgl.sourceforge.net/#features
OpenGL tabanlı bir sahne grafiği çözümüdür ve oradaki özellikler sayfası içerebileceği tüm düğümleri gösterir.
Önerilen Düğümler
Bir sahne grafiğinin oyun mantığından olabildiğince soyutlanması gerektiğine inanıyorum, böylece herhangi bir bağımlılık sorununuz yok. Mermi noktalarınızın her biri için şunu söyleyebilirim:
Oyun Oyuncuları
Muhtemelen hayır diyebilirim. Ogre'ye benzer şekilde, nesneyi oluşturmak için uygun bilgileri (Konum, Yön, vb.) Almak için bir temel Entity sınıfı (nesneye özgü mantığı içerecek) ve Entity üye işaretçisiyle bir temel SceneNode olurdu.
DÜZENLEME: Oyun aktörlerinizi buradaki sahne grafiğine dahil etmeyeceğinizi söylemiyorum (aksi takdirde hiçbir şey görünmez: P) Mantıksal oyun aktör sınıfına referansla bir sahne düğümüne sahip olduğumu söylüyorum, hala oyun nesnelerinin render ve güncellenmesi gevşek bir bağlantı var.
Basit statik oyun hedefleri
Evet
Oyun Tetikleyicileri?
Hayır, bu bana oyuna özgü bir mantık gibi geliyor.
Oyun Işıkları?
Evet
Oyun Kameraları?
Evet
Silah Mermi?
Bu konuda tamamen emin değilim, ama muhtemelen evet diyebilirim, ama muhtemelen tüm mermileri çocuk olarak bir "BulletCollection" ebeveyn sahne düğümüne istersiniz, böylece bu pozisyonu önbelleğe alabilir ve sahne grafiği kaldırmak ve render mermi eklemek için çok.
Oyun Patlamaları ve Özel Efektler?
Emin değilim, başkasının buna cevap vermesine izin vereceğim.
Sahne Grafiği Kapsamı
Nispeten küçük bir seviyeniz varsa, tüm seviyeyi bir sahne grafiğinde saklayabilmeniz ve ardından bir Octree (genellikle dış mekan ortamları için) veya BSP ağacı (genellikle iç mekan ortamları için) kullanarak görünürlüğü optimize edebilmeniz gerekir.
Çok daha büyük bir seviyeniz varsa ve herhangi bir seviye yükleme yapmak istemiyorsanız, akış burada devreye girecektir, ancak bu tamamen başka bir konudur. Küçük bir seviye ile başlıyorum ve kademeli olarak performansı olumsuz etkilemeden ne kadar büyük yapabileceğinizi görüyorum.
Sonuç
Bana göre bir sahne grafiği bir oyun döngüsünün Render kısmı içindir. Oluşturma işleminizi ve mantık güncellemelerinizi birbirine çok yakın birleştirmemelisiniz, aksi takdirde can sıkıcı bağımlılık sorunlarıyla karşılaşırsınız.