Гра на базі компонентів з відкритим кодом та двигуни?


15

Я прочитав декілька про ігровий дизайн на основі компонентів, але у мене все ще виникають проблеми, щоб зрозуміти, як саме ви хочете реалізувати його. Чи є якісь хороші приклади ігор на основі компонентів чи ігрових двигунів, які я міг би прочитати, щоб краще відчути це?

Відповіді:


7

Особисто я не думаю, що є хороших прикладів, багато в чому тому, що визначення "компонентної системи" для ігор настільки вільно визначене, що може означати майже нічого.

Деякі з обговорень у цій відповіді можуть бути корисними: Як реалізувати компонентну систему для елементів у веб-грі

В цілому, підхід полягає просто в зміні будь-якого типу GameObject або Actor з великого класу, який передає всю поведінку на простіший клас, який містить об'єкти, що виконують поведінку. Я думаю, що найкращим способом продовжувати роботу над цим і робити різні компоненти, що відповідають вашій грі, часто.


Я це чую. Намагаючись знайти хороші ресурси на цьому, я виявив, що майже кожна людина використовує різну термінологію для опису речей. Складно було порівняти різні реалізації, коли ви витрачаєте половину часу на переклад основних структур. Система сутності, система компонентів, ігровий об’єкт, шаблон, збірка, складання компонентів тощо ...
Звільнення

2

Ось кілька ресурсів, які вам можуть сподобатися:
Ось ця дивовижна нитка. Це не сам ігровий движок, але дизайн та обговорення чудові.
Питання про StackOverflow на дуже схожу тему.

Щоб відповісти на оригінальне запитання, слонова рамка в C # - це саме те, що ви хочете: це було припинено, але все ще існує тут для посилання на реалізацію.


1

Цей сайт запускається в базову реалізацію.

Більшість сказаного натхненна цим статтею на T = Machine

Я почав базову реалізацію, натхненну двома вищезгаданими ланками. Я впевнений, що я дуже відхилився від чистої теорії компонентних систем, і, безсумнівно, є помилки, але це може виявитися корисним, якщо ви шукаєте кілька простих прикладів.

Брикл (C # / XNA)

Зараз він просто завантажує основні об'єкти, обробляє деякі події тощо. Основні місця, які ви шукаєте, - це папка Engine.EntitySystem і, напевно, PlayScreen де фактично створені сутності.

Створення простого сховища компонентів на основі типу та приховування того, що позаду загального EntityManager був відносно прямий.

Першим завданням, з яким я зіткнувся, було те, коли окремі системи можуть потребувати декількох типів компонентів (тобто фізичні компоненти та InputMoveable). Щоб скористатися мовою реляційної бази даних, мені довелося знайти спосіб зробити запит JOIN. Для цього я створив інший тип колекції для об'єктів, побудованих із відповідних запитів типу компонентів - кожна колекція сутностей з'єднується з подією OnEntityCreate і перевіряє, чи відповідає вона. Ще є якісь помилки.

Другим завданням було насправді створення «ігрового об’єкта» - я назвав їх шаблонами. Тут я, мабуть, не дуже чистий за специфікаціями T = Machine, але, здається, працює. Шаблони групуються разом з компонентами і створюють простіший склад сутності (тобто, м'яч є малювальним і фізичним).

Сподіваюсь, що це корисно - системи сутностей / компонентів можуть бути складним завданням пройти деякі початкові перешкоди.


1

Ще один я не використовував, але трохи переглянув код - це Артеміда . Добре коментується і досить активно. Спочатку рамка Java, але перенесена на C # / XNA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.