Creo que leer un poco sobre lo que están haciendo otras tecnologías de gráficos de escenas le brindaría muchos beneficios.
Antecedentes
Por ejemplo, mire la descripción de Ogre3D. Es un motor gráfico basado en gráficos de escena que es de código abierto. Sugeriría mirar los tutoriales y ver cómo se usan los nodos de escena (Nota: no le estoy diciendo que aprenda a usar Ogre, sino qué características están presentes en los nodos de escena y los administradores de escena de Ogre)
Documentación de SceneNode:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
Documentación de SceneManager:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Algo más que vale la pena mirar es el siguiente enlace:
http://sgl.sourceforge.net/#features
Es una solución de gráfico de escena basada en OpenGL y la página de características allí muestra todos los nodos que puede contener.
Tus nodos sugeridos
Soy de la opinión de que un gráfico de escena debe estar lo más abstraído posible de la lógica del juego para que no tengas ningún problema de dependencia. Para cada una de sus viñetas, diría lo siguiente:
Actores del juego
Probablemente diría que no. Similar a Ogre, tendría una clase de entidad base (que contendría la lógica específica del objeto) y un SceneNode base con un puntero de miembro de entidad para obtener la información adecuada para representar el objeto (posición, orientación, etc.)
EDITAR: no estoy diciendo que no incluyas a tus actores del juego en el gráfico de la escena aquí (de lo contrario, nada aparecerá: P) Estoy diciendo que tengas un nodo de escena con una referencia a la clase de actor lógico del juego, así que has Todavía se soltó el acoplamiento de la representación y actualización de los objetos del juego.
Juego estático simple ojbects
Sí
¿Disparadores de juego?
No, esto me parece una lógica específica del juego.
Juego de luces?
si
Cámaras de juego?
si
Balas de armas?
No estoy completamente seguro de esto, pero probablemente diría que sí, pero probablemente querría todas las viñetas como hijos en un nodo de escena padre "BulletCollection", solo para que pueda almacenar esa posición en caché y no tenga que atravesar el gráfico de escena mucho para eliminar y agregar viñetas para renderizar.
Explosiones de juegos y efectos especiales?
No estoy seguro, dejaré que alguien más responda eso.
Cobertura del gráfico de escena
Si tiene un nivel relativamente pequeño, debería poder almacenar todo el nivel en un gráfico de escena y luego optimizar la visibilidad utilizando un Octree (generalmente para ambientes exteriores) o un árbol BSP (generalmente para ambientes interiores).
Si tiene un nivel mucho más grande y no desea cargar ningún nivel, aquí es donde entraría en juego la transmisión, pero ese es otro problema por completo. Comenzaría con un nivel pequeño y vería gradualmente cuán grande puede hacerlo sin afectar negativamente el rendimiento.
Conclusión
Para mí, un gráfico de escena es para la porción Render de un bucle de juego. No debe acoplar su renderizado y sus actualizaciones lógicas demasiado juntas, de lo contrario, se encontrará con problemas de dependencia molestos.