Це питання дизайну ... Я впевнений, що це можна було б узагальнити більше, але мені важко з цим. Мене цікавить дизайн для взаємодії ігрових об'єктів - ось мій приклад (2D-головоломка-платформер).
Скажіть, гравець намагається просунутися через рівень. Є багато вогнів, які можна вказувати в різні боки. Ось приклад того, як ці легкі об’єкти можуть взаємодіяти ...
- Одне світло проектує платформу, яка дозволяє гравцеві перейти пробіл
- Одне світло зменшує коефіцієнти тертя всього, чого він торкається, інший збільшує його
- Одне світло знімає ефекти всіх вогнів, через що платформа зникатиме, коли світло вмикається, і змінюють модифікатори тертя
- І т.д. ...
Який найкращий спосіб підійти до цієї проблеми при використанні компонентної архітектури? Компоненти кожного головного об'єкта здаються очевидними, а також чистим способом визначення їх впливу на навколишнє середовище. Клас для "розв'язання" взаємодії (здається, що це може швидко стати безладом)? Якесь використання малюнка декоратора для створення об'єднаних об'єктів для тих, хто взаємодіє в даний момент часу? Структура даних, яка піддається цьому?
Також підключення аудіо до цих взаємодій? Схоже, підключення аудіо до системи було б подібно до підключення будь-якої іншої властивості, наприклад, видимості або руху / зіткнення програвача.
Очевидно, як додано більше компонентів, було б непогано, якби була надійна система, яка могла б обробляти нові з невеликими модифікаціями, але я не знайомий з тим, як робити це для розробки.
Інша інформація: Двигун, який я використовую, - це двигун XNA, який називається IceCream .