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