Penso che una buona lettura di ciò che stanno facendo le altre tecnologie per i grafici delle scene produrrebbe molti vantaggi per te.
Sfondo
Ad esempio, guarda la descrizione di Ogre3D. È un motore grafico basato sul grafico di scena che è open source. Suggerirei di guardare i tutorial e vedere come vengono utilizzati i nodi scena (Nota: non ti sto dicendo di imparare ad usare Ogre, piuttosto quali funzioni sono presenti nei nodi scena e nei gestori scene di Ogre)
Documentazione SceneNode:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
Documentazione di SceneManager:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Qualcos'altro che vale la pena guardare è il seguente link:
http://sgl.sourceforge.net/#features
Si tratta di una soluzione per grafici di scene basata su OpenGL e la pagina delle caratteristiche lì mostra tutti i nodi che può contenere.
I tuoi nodi suggeriti
Sono dell'opinione che un grafico di scena debba essere il più astratto possibile dalla logica di gioco in modo da non avere problemi di dipendenza. Per ciascuno dei tuoi punti elenco direi quanto segue:
Attori di gioco
probabilmente direi di no. Simile a Ogre, avrei una classe Entity di base (che conterrebbe la logica specifica dell'oggetto) e un SceneNode di base con un puntatore membro Entity per ottenere le informazioni appropriate per il rendering dell'oggetto (Posizione, Orientamento, ecc.)
EDIT: Non sto dicendo di non includere i tuoi attori di gioco nel grafico della scena qui (altrimenti non verrebbe visualizzato nulla: P) Sto dicendo di avere un nodo scena con un riferimento alla classe degli attori di gioco logici, quindi hai continuava ad allentare il rendering e l'aggiornamento degli oggetti di gioco.
Semplici oggetti di gioco statici
Sì
Trigger di gioco?
No, mi sembra una logica specifica del gioco.
Luci di gioco?
sì
Videocamere di gioco?
sì
Proiettili di armi?
Non sono del tutto sicuro di questo, ma probabilmente direi di sì, ma probabilmente vorrai tutti i proiettili da bambini in un nodo scena padre "BulletCollection", solo così puoi memorizzare nella cache quella posizione e non dovrai attraversare il grafico della scena molto da rimuovere e aggiungere proiettili per il rendering.
Esplosioni di giochi ed effetti speciali?
Non sono sicuro, lascerò che qualcun altro risponda.
Copertura del grafico della scena
Se hai un livello relativamente piccolo, dovresti essere in grado di memorizzare l'intero livello in un grafico della scena e quindi ottimizzare la visibilità usando un Octree (di solito per gli ambienti esterni) o un albero BSP (di solito per gli ambienti interni).
Se hai un livello molto più grande e non vuoi eseguire alcun caricamento di livello, è qui che entrerebbe in gioco lo streaming, ma questo è un altro problema. Comincerei con un piccolo livello e vedrei in modo incrementale quanto puoi farlo senza influire negativamente sulle prestazioni.
Conclusione
Per me un grafico di scena è per la parte Render di un loop di gioco. Non dovresti accoppiare il rendering e gli aggiornamenti logici troppo strettamente insieme, altrimenti ti imbatterai in fastidiosi problemi di dipendenza.