Ich denke, ein gutes Stück Nachlesen darüber, was andere Szenendiagrammtechnologien tun, würde Ihnen viele Vorteile bringen.
Hintergrund
Schauen Sie sich zum Beispiel die Ogre3D-Beschreibung an. Es ist eine auf Szenendiagrammen basierende Grafik-Engine, die Open Source ist. Ich würde vorschlagen, dass Sie sich die Tutorials ansehen und sehen, wie Szenenknoten verwendet werden (Hinweis: Ich möchte Ihnen nicht sagen, wie Sie Ogre verwenden sollen, sondern welche Funktionen in den Szenenknoten und Szenenmanagern von Ogre vorhanden sind.)
SceneNode-Dokumentation:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
SceneManager-Dokumentation:
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
Etwas anderes, das einen Blick wert ist, ist der folgende Link:
http://sgl.sourceforge.net/#features
Es handelt sich um eine OpenGL-basierte Szenendiagrammlösung. Auf der dortigen Funktionsseite werden alle Knoten angezeigt, die darin enthalten sein können.
Ihre vorgeschlagenen Knoten
Ich bin der Meinung, dass ein Szenendiagramm so weit wie möglich von der Spielelogik entfernt sein sollte, damit Sie keine Abhängigkeitsprobleme haben. Für jeden Ihrer Aufzählungspunkte würde ich Folgendes sagen:
Game Actors
Ich würde wahrscheinlich nein sagen. Ähnlich wie bei Ogre hätte ich eine Basis-Entity-Klasse (die die objektspezifische Logik enthalten würde) und einen Basis-SceneNode mit einem Entity-Member-Zeiger, um die entsprechenden Informationen zum Rendern des Objekts zu erhalten (Position, Ausrichtung usw.).
BEARBEITEN: Ich sage hier nicht, dass Sie Ihre Spielschauspieler nicht in das Szenendiagramm aufnehmen sollen (sonst würde nichts angezeigt: P). Ich sage, dass Sie einen Szenenknoten mit einem Verweis auf die Klasse der logischen Spielschauspieler haben sollen immer noch lose Kopplung des Renderns und Aktualisierens von Spielobjekten.
Einfaches statisches Spiel ojbects
Ja
Spielauslöser?
Nein, das klingt für mich nach spielspezifischer Logik.
Spiellichter?
Ja
Spielekameras?
Ja
Waffengeschosse?
Ich bin mir nicht ganz sicher, aber ich würde wahrscheinlich ja sagen, aber Sie möchten wahrscheinlich alle Aufzählungszeichen als Kinder zu einem übergeordneten Szenenknoten "BulletCollection", damit Sie diese Position zwischenspeichern können und die Position nicht durchlaufen müssen Szenendiagramm viel zu entfernen und Aufzählungszeichen zum Rendern hinzuzufügen.
Spielexplosionen und Spezialeffekte?
Ich bin mir nicht sicher, ich werde es jemand anderem beantworten lassen.
Abdeckung von Szenendiagrammen
Wenn Sie eine relativ kleine Ebene haben, sollten Sie in der Lage sein, die gesamte Ebene in einem Szenendiagramm zu speichern und dann die Sichtbarkeit mithilfe eines Octree (normalerweise für Außenumgebungen) oder eines BSP-Baums (normalerweise für Innenumgebungen) zu optimieren.
Wenn Sie ein viel größeres Level haben und kein Level laden möchten, kommt hier das Streaming ins Spiel, aber das ist ein ganz anderes Problem. Ich würde mit einem kleinen Level beginnen und schrittweise sehen, wie groß Sie es machen können, ohne die Leistung zu beeinträchtigen.
Fazit
Für mich ist ein Szenendiagramm für den Render-Teil einer Spielschleife. Sie sollten Ihr Rendering und Ihre Logikaktualisierungen nicht zu eng miteinander verbinden, da Sie sonst auf lästige Abhängigkeitsprobleme stoßen.