Если нет популярных, то почему бы и нет?
Потому что нет ничего похожего на консенсус о том, как будет работать такая структура.
На ветке Gamedev.net я определил, что, когда люди говорят о компонентных игровых системах, на самом деле существует по крайней мере 8 возможных вариантов того, как они ожидают, что они будут работать, исходя из 3 различных факторов:
Внутренний и внешний - должны ли компоненты быть объединены в объект или они должны быть частью подсистемы и связаны только с идентификатором объекта?
Статическая или динамическая композиция - если объекты состоят из известного набора компонентов (например, 1 физика, 1 анимация, 1 AI и т. Д.), Которые могут взаимодействовать в коде через хорошо известные интерфейсы, или объекты могут добавлять произвольное количество компонентов к их (со связанными стратегиями для поиска других компонентов, представляющих интерес)
Данные о компоненте против данных об объекте. Должны ли данные храниться в компоненте, который в основном работает с ним? Или данные должны храниться на объекте в общем пространстве, доступном для всех компонентов?
Кроме того, есть дополнительные вопросы о том, как компоненты должны взаимодействовать (через общие данные? Через функциональные указатели? Через сигналы / слоты? Или вообще нет?), Как они должны обновляться (в фиксированном порядке, основанном на типе компонента? порядок объектов, определенный во время создания (на основе топологического вида взаимозависимостей компонентов?) и т. д.
Каждый из этих вариантов совершенно произвольный, и все, что вы можете сделать с одной системой, можно сделать с другой. Но способ, которым вы должны кодировать, в каждом случае совершенно разный. И у людей, кажется, есть твердое мнение о том, какой путь работает лучше для них.
Прямо сейчас люди все еще слишком увлечены идеей, что компоненты каким-то образом заменяют объектную ориентацию (которой они не являются), а также воображают, что они являются огромным изменением от того, как традиционно создавались игры (что, опять же, они не были - люди разрабатывают различные подсистемы в своих сущностях целую вечность), поэтому существует много гипербол и мало согласия. Возможно, через несколько лет все уляжется, и люди примут один или два достаточно стандартных подхода.