Это вопрос дизайна ... Я уверен, что это можно обобщить больше, но мне тяжело с этим. Меня интересует дизайн взаимодействия игровых объектов - вот мой пример (2D-пазл-платформер).
Скажем, игрок пытается пройти уровень. Есть много источников света, которые могут быть направлены в разные стороны. Вот пример того, как эти световые объекты могут взаимодействовать ...
- Один свет проецирует платформу, которая позволяет игроку преодолеть разрыв
- Один свет уменьшает коэффициенты трения всего, к чему он прикасается, другой увеличивает его
- Один источник света обнуляет эффекты всех источников света, что приводит к исчезновению платформы при включенном свете и обнулению модификаторов трения.
- И т.д...
Каков наилучший способ решения этой проблемы при использовании компонентной архитектуры? Компоненты для каждого основного объекта кажутся очевидными, так же как и чистый способ определения их воздействия на окружающую среду. Класс для «разрешения» взаимодействия (кажется, что это может быстро стать беспорядком)? Некоторое использование шаблона декоратора для создания объединенных объектов для тех, кто взаимодействует в данный момент времени? Структура данных, которая поддается этому?
Кроме того, подключение аудио к этим взаимодействиям? Кажется, что подключение аудио к системе было бы похоже на подключение любого другого свойства, например, видимости или движения / столкновения игрока.
Очевидно, что по мере добавления большего количества компонентов было бы неплохо, если бы существовала надежная система, которая могла бы обрабатывать новые с небольшими изменениями, но я не знаю, как это сделать.
Другая информация: Я использую движок XNA под названием IceCream .