Регистрация: Mar 2010
Сообщений: 18
|
Производительность: вызов метода объекта или изменение его публичных полей?
Я начал писать небольшой движок для игрового приложения, который хотел бы использовать впредь, расширять и модифицировать. Игра, которую я сейчас начинаю делать - двумерный платформер, основанный на тайлах. Предполагается, что будет много разных персонажей, которые перемещаются по миру, взаимодействуют с ним, взаимодействуют между собой.
Мне показалась привлекательной архитектура приложения, основанная на компонентах.
Получается, что игровой объект должен содержать экземпляры нужных ему компонентов и в своем методе update() вызывать метод update() каждого своего компонента. И каждый игровой цикл для каждого игрового объекта вызывается метод update().
Я, однако, часто встречал мнение, что вызов метода объекта работает медленнее, чем изменение его публичных полей напрямую кодом извне. Исходя из этого, не стоит каждый игровой цикл вызывать метод update() каждого объекта, а лучше изменять его поля кодом в обработке игрового цикла. Такой подход, как я понимаю, не совместим с архитектурой, основанной на компонентах.
Мне бы хотелось, чтоб персонажей в мире одновременно было достаточно много, скажем, сотня или несколько сотен, и чтоб они продолжали "жить" даже тогда, когда игрок их не видит.
Сильно ли я в таких условиях потеряю в производительности, воспользовавшись компонентной моделью и, соответственно, сильно увеличив количество вызовов методов объектов?
Может есть какой-то другой паттерн, обеспечивающий ту же гибкость в создании новых игровых объектов и стройность кода, как компонентная модель, но при этом ориентированный на производительность при работе с множеством объектов?
Буду благодарен, если подскажете мне, в каком направлении изучать этот вопрос. А то я совсем мало знаком с паттернами, применяемыми в программировании игр и с подходами к архитектуре игрового приложения.
|