Підхід "чистої агрегації", описаний Уестом у цій пов'язаній статті, взагалі уникає об'єкта "сутності". Є компоненти, що плавають навколо пам’яті, але вони пов'язані між собою лише неявними зв’язками, якщо вони взагалі є.
Один із способів зробити це - так званий підвісний підхід . У такій системі компоненти утримуються системами, які керують ними або іншим чином керують ними (тут я використовую термін "керувати", але ви не повинні сприймати це, щоб сказати, що я пропоную вам провести купу класів * менеджер для утримання типи компонентів). Наприклад, ваша фізична система може утримувати купу речей, що представляють кожне жорстке тіло в його світі імітації, і може виставляти ці речі як PhysicsComponents. Компоненти можуть бути фактичними об'єктами, якими обробляється відповідна підсистема, або вони можуть бути проксі-сервера для цих об'єктів, якщо це потрібно.
У такій системі необов'язково необхідність класу "Entity", щоб містити колекцію посилань на компоненти, що їх складають; натомість надходить повідомлення про створення або знищення "сутності", і кожна підсистема, яка обробляє компоненти, переглядає опис створеного / знищеного об'єкта (який, як правило, завантажується з деяких даних), і визначає, чи потрібен компонент для цього.
Однією з переваг такого підходу є те, що ви отримуєте дійсно хороший орієнтир для кожного компонента. На жаль, це трохи дивно, загалом, і не найдобріший смак компонентів на основі компонентів, з якими я стикався. Іноді дійсно зручно мати реальний об'єкт, який представляє сутність, навіть якщо цей об'єкт робить трохи більше, ніж агрегує слабкі посилання на компоненти, які все ще містяться в інших підсистемах (якщо ніщо інше, це забезпечує простий спосіб маршрутизації повідомлень між компонентами) .
Існує кілька хороших способів реалізації компонентних ігрових об'єктних систем; це дуже, дійсно, дуже допомагає, якщо ви маєте чітке уявлення про вимоги, які ви хочете вийти зі своєї системи - ви можете подивитися, які популярні рамки, такі як Unity, для прикладів. Не ставлячи перед собою суворих вимог, ви можете зіткнутися з проблемою нескінченного "проектування" системи, навіть не будуючи її по-справжньому, марно намагаючись вдатися до ідеальної реалізації. З будь-якої причини я багато бачив з компонентними системами.