Відповіді:
Особисто я не думаю, що є хороших прикладів, багато в чому тому, що визначення "компонентної системи" для ігор настільки вільно визначене, що може означати майже нічого.
Деякі з обговорень у цій відповіді можуть бути корисними: Як реалізувати компонентну систему для елементів у веб-грі
В цілому, підхід полягає просто в зміні будь-якого типу GameObject або Actor з великого класу, який передає всю поведінку на простіший клас, який містить об'єкти, що виконують поведінку. Я думаю, що найкращим способом продовжувати роботу над цим і робити різні компоненти, що відповідають вашій грі, часто.
Ось кілька ресурсів, які вам можуть сподобатися:
Ось ця дивовижна нитка. Це не сам ігровий движок, але дизайн та обговорення чудові.
Питання про StackOverflow на дуже схожу тему.
Щоб відповісти на оригінальне запитання, слонова рамка в C # - це саме те, що ви хочете: це було припинено, але все ще існує тут для посилання на реалізацію.
Цей сайт запускається в базову реалізацію.
Більшість сказаного натхненна цим статтею на T = Machine
Я почав базову реалізацію, натхненну двома вищезгаданими ланками. Я впевнений, що я дуже відхилився від чистої теорії компонентних систем, і, безсумнівно, є помилки, але це може виявитися корисним, якщо ви шукаєте кілька простих прикладів.
Брикл (C # / XNA)
Зараз він просто завантажує основні об'єкти, обробляє деякі події тощо. Основні місця, які ви шукаєте, - це папка Engine.EntitySystem і, напевно, PlayScreen де фактично створені сутності.
Створення простого сховища компонентів на основі типу та приховування того, що позаду загального EntityManager був відносно прямий.
Першим завданням, з яким я зіткнувся, було те, коли окремі системи можуть потребувати декількох типів компонентів (тобто фізичні компоненти та InputMoveable). Щоб скористатися мовою реляційної бази даних, мені довелося знайти спосіб зробити запит JOIN. Для цього я створив інший тип колекції для об'єктів, побудованих із відповідних запитів типу компонентів - кожна колекція сутностей з'єднується з подією OnEntityCreate і перевіряє, чи відповідає вона. Ще є якісь помилки.
Другим завданням було насправді створення «ігрового об’єкта» - я назвав їх шаблонами. Тут я, мабуть, не дуже чистий за специфікаціями T = Machine, але, здається, працює. Шаблони групуються разом з компонентами і створюють простіший склад сутності (тобто, м'яч є малювальним і фізичним).
Сподіваюсь, що це корисно - системи сутностей / компонентів можуть бути складним завданням пройти деякі початкові перешкоди.
Ще один я не використовував, але трохи переглянув код - це Артеміда . Добре коментується і досить активно. Спочатку рамка Java, але перенесена на C # / XNA.