Myślę, że dobra lektura tego, co robią inne technologie wykresów scen, przyniosłaby ci wiele korzyści.
tło
Na przykład spójrz na opis Ogre3D. Jest to silnik graficzny oparty na grafie scen, który jest open source. Sugerowałbym zapoznanie się z samouczkami i sprawdzenie, w jaki sposób wykorzystywane są węzły scen (Uwaga: nie mówię, abyś nauczył się korzystać z Ogre, a raczej jakie funkcje są obecne w węzłach scen i menedżerach scen)
Dokumentacja SceneNode:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
Dokumentacja SceneManager:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Kolejną rzeczą, na którą warto spojrzeć, jest następujący link:
http://sgl.sourceforge.net/#features
Jest to rozwiązanie oparte na grafice OpenGL, a strona funkcji pokazuje wszystkie węzły, które może zawierać.
Twoje sugerowane węzły
Uważam, że wykres sceny powinien być jak najbardziej oderwany od logiki gry, abyś nie miał problemów z zależnościami. Dla każdego z twoich punktów kulistych powiedziałbym, co następuje:
Aktorzy gry
prawdopodobnie powiedziałbym „nie”. Podobnie jak Ogre, miałbym podstawową klasę Entity (która zawiera logikę specyficzną dla obiektu) i podstawową SceneNode ze wskaźnikiem elementu Entity, aby uzyskać odpowiednie informacje do renderowania obiektu (Pozycja, Orientacja itp.)
EDYCJA: Nie mówię, żeby nie włączać twoich aktorów do gry na wykresie sceny (inaczej nic by się nie pokazało: P) Mówię, że mam węzeł sceny z odniesieniem do logicznej klasy aktora, więc masz wciąż mam luźne połączenie renderowania i aktualizacji obiektów gry.
Prosta statyczna gra ojbects
Tak
Wyzwalacze gier?
Nie, to wydaje mi się logiką specyficzną dla gry.
Światła gry?
tak
Aparaty do gier?
tak
Kule broni?
Nie jestem do końca pewien, ale prawdopodobnie powiedziałbym „tak”, ale prawdopodobnie chciałbyś, aby wszystkie pociski jako dzieci trafiły do węzła sceny nadrzędnej „BulletCollection”, abyś mógł buforować tę pozycję i nie będziesz musiał przechodzić wykres sceny do usunięcia i dodania pocisków do renderowania.
Wybuchy w grze i efekty specjalne?
Nie jestem pewien, pozwolę komuś na to odpowiedzieć.
Pokrycie wykresu sceny
Jeśli masz względnie mały poziom, powinieneś być w stanie zapisać cały poziom na wykresie sceny, a następnie zoptymalizować pod kątem widoczności za pomocą drzewa Octree (zwykle dla środowisk zewnętrznych) lub drzewa BSP (zwykle dla środowisk wewnętrznych).
Jeśli masz znacznie większy poziom i nie chcesz ładować żadnego poziomu, w tym miejscu mogłaby pojawić się transmisja strumieniowa, ale to zupełnie inna kwestia. Zaczynam od małego poziomu i stopniowo sprawdzam, jak duży możesz go zrobić bez negatywnego wpływu na wydajność.
Wniosek
Dla mnie wykres sceny dotyczy części renderowania w pętli gry. Nie powinieneś zbyt ściśle łączyć renderowania i aktualizacji logiki, w przeciwnym razie napotkasz irytujące problemy z zależnościami.