Ich entwickle derzeit eine C# .net XNA Spiel-Engine.
Ich hatte eine Frage zur Konstruktion des Motors. Zunächst einmal würde ich gerne meine eigene Skriptsprache in die Engine einbauen. Um dies zu tun, dachte ich, ich müsste in der Lage sein, auf alle Eigenschaften aller Objekte im Spiel zuzugreifen, oder nur auf die, die ich ändern möchte.
Als Erstes habe ich versucht, den Zugriff über Strings zu ermöglichen. Zu diesem Zweck habe ich jedes "Entity", also etwas, das auf den Bildschirm gezeichnet werden kann, mit einem Wörterbuch aller Eigenschaften versehen. Das Hinzufügen der Eigenschaften wurde manuell in der Entity-Klasse vorgenommen. Inzwischen habe ich gelesen, dass es die GC verlangsamen kann, wenn man viele Wörterbücher hat, aber nicht sehr viele Dinge in ihnen. Ich glaube, das ist es, was in meinem Spiel im Moment passiert. Ich kann nur bis zu etwa 1000 Entitäten mit grundlegenden Eigenschaften, d.h. Farbe, Position, Textur, bevor es beginnt, fps zu verlieren.
Ich frage mich, ob es eine andere Möglichkeit gibt, in der Lage sein, ein Objekt Eigenschaften dynamisch on the fly andere als was ich tue oder mit Reflexion zugreifen, denn das ist noch langsamer als die Wörterbücher. Oder sollte ich einfach das gesamte Design überdenken?