Saya pikir sedikit membaca tentang apa yang dilakukan teknologi grafik adegan lain akan menghasilkan banyak manfaat bagi Anda.
Latar Belakang
Sebagai contoh, lihat deskripsi Ogre3D. Ini adalah mesin grafik berbasis adegan adegan yang open source. Saya akan menyarankan melihat tutorial dan melihat bagaimana node adegan sedang digunakan (Catatan: Saya tidak memberitahu Anda untuk belajar cara menggunakan Ogre, melainkan fitur apa yang ada dalam node adegan dan manajer adegan Ogre)
Dokumentasi SceneNode:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
Dokumentasi SceneManager:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Hal lain yang patut dilihat adalah tautan berikut:
http://sgl.sourceforge.net/#features
Ini adalah solusi grafik adegan berbasis OpenGL dan halaman fitur di sana menunjukkan semua node yang dapat dikandungnya.
Node yang Disarankan
Saya berpendapat bahwa grafik adegan harus diabstraksi sejauh mungkin dari logika permainan sehingga Anda tidak memiliki masalah ketergantungan. Untuk setiap poin Anda, saya akan mengatakan yang berikut:
Aktor Game
Saya mungkin akan mengatakan tidak. Mirip dengan Ogre, saya akan memiliki kelas Entity dasar (yang akan berisi logika objek spesifik) dan SceneNode dasar dengan pointer anggota Entity untuk mendapatkan informasi yang sesuai untuk merender objek (Posisi, Orientasi, dll)
EDIT: Saya tidak mengatakan untuk tidak memasukkan aktor permainan Anda dalam grafik adegan di sini (jika tidak, tidak akan muncul: P) Saya mengatakan untuk memiliki node adegan dengan referensi ke kelas aktor permainan logis, jadi Anda sudah masih mendapatkan kopling longgar dari rendering dan pembaruan objek game.
Gim statis sederhana ojbects
Ya
Pemicu Game?
Tidak, ini kedengarannya seperti logika khusus game bagi saya.
Lampu Game?
Iya
Kamera Game?
Iya
Peluru Senjata?
Tidak sepenuhnya yakin tentang yang ini, tapi saya mungkin akan mengatakan ya, tetapi Anda mungkin ingin semua peluru sebagai anak-anak ke simpul adegan orangtua "BulletCollection", hanya agar Anda dapat men-cache posisi itu dan Anda tidak perlu melintasi grafik adegan banyak untuk menghapus dan menambahkan peluru ke render.
Ledakan Game dan Efek Khusus?
Tidak yakin, saya akan membiarkan orang lain menjawabnya.
Cakupan Grafik Adegan
Jika Anda memiliki level yang relatif kecil, Anda harus dapat menyimpan seluruh level dalam grafik adegan dan kemudian mengoptimalkan visibilitas menggunakan Oktree (biasanya untuk lingkungan luar) atau pohon BSP (biasanya untuk lingkungan dalam ruangan).
Jika Anda memiliki level yang jauh lebih besar dan Anda tidak ingin melakukan pemuatan level apa pun, di sinilah streaming akan ikut bermain, tapi itu masalah lain sepenuhnya. Saya akan mulai dengan level kecil dan secara bertahap melihat seberapa besar Anda dapat membuatnya tanpa mempengaruhi kinerja.
Kesimpulan
Bagi saya grafik adegan adalah untuk bagian Render dari loop game. Anda tidak boleh memasangkan rendering Anda dan pembaruan logika Anda terlalu dekat, jika tidak, Anda akan mengalami masalah ketergantungan yang mengganggu.