Этот вопрос по-прежнему часто возникает в процессе разработки игр, поскольку различные студии и группы начинают работать с новыми движками.
Короткий ответ заключается в том, что все зависит от сложности ваших игровых объектов.Для простых сущностей это не имеет значения.
Когда вы попадаете в гораздо более сложные сущности, вы должны переосмыслить свой подход.В общем, вы захотите сопротивляться желанию иметь цикл uber, который перебирает каждую сущность и вызывает некоторую функцию update / render / what.Это не масштабируется вообще, если каждое обновление, рендеринг или какая-либо другая иерархия не будут абсолютно одинаковыми.Это хорошо для такой игры, как Geometry Wars, но не для чего-то более сложного, чем это.
То, что вы хотите сделать, - это дать наиболее общую коллекцию сущностей для извлечения специфического обхода.Например, если вы хотите визуализировать сцену, у вас должен быть способ извлечения всех визуализируемых сущностей из коллекции сущностей, а затем их рендеринга в произвольном порядке пакетной обработки.То же самое касается физики, столкновений, ИИ и т. Д.
Некоторые полезные ссылки:
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf
Я настоятельно рекомендую оба;первый - это логическое обоснование построения игровых объектов из компонентов, то есть компонента рендеринга, компонента физики, компонента ИИ.Второе относится к характеристикам производительности различных подходов игровых сущностей.