В настоящее время я разрабатываю игровой движок C# .net XNA.Дизайн игрового движка с динамическими свойствами
У меня возник вопрос о дизайне двигателя. Прежде всего, я хотел бы, чтобы мой движок мог включать мой собственный язык сценариев. Для этого я думал, что должен иметь доступ ко всем свойствам всех объектов в игре или просто тем, которые я хотел бы изменить.
Первое, что я начал делать, - это попытка получить доступ по строкам. Для этого я сделал каждую «Сущность», что-то, что можно нарисовать на экране, иметь словарь всех свойств в нем. Добавление свойств было сделано вручную в классе Entity. С тех пор я читал, что, когда у вас много словарей, но не очень много вещей, они могут замедлить работу GC. Я считаю, что это то, что происходит в моей игре прямо сейчас. Я могу получить до 1000 объектов с основными свойствами, то есть цветом, положением, текстурой, прежде чем он начнет терять fps.
Мне было интересно, есть ли какой-либо другой способ получить доступ к свойствам объекта динамически на лету, кроме того, что я делаю или использую отражение, потому что это еще медленнее, чем словари. Или я просто переосмыслил весь дизайн?
Что вы подразумеваете под воздействием объектов на язык сценариев? –
Большинство встраиваемых языков сценариев позволяют подвергать определенные объекты скриптам. В основном вы говорите: «Сделайте этот объект C# доступным для скриптов с именем X». Затем вы можете использовать X в сценариях, получить доступ к любым методам X и т. Д., Как и в C#. –