парадигма
На момент написания этого ответа все остальные ответы здесь были неправильными.
Вместо того, чтобы спрашивать, хорош ли доменно-управляемый дизайн для игр. Вы должны спросить, подходит ли «Моделирование домена» для игр.
Хорошо ли моделирование предметной области для игр?
Ответ: иногда это абсолютно невероятно. Однако, если вы создаете игру в реальном времени, такую как платформер или FPS или что-то еще (МНОГИЕ виды игр), то нет. Это не обязательно хорошо подходит для этих систем. Однако в этих играх могут существовать системы, в которых эффективна реализация модели модели предметной области.
Как уже упоминали другие, структуры компонент-сущность, как правило, очень популярны, и на то есть веские причины. Однако в культуре разработки игр, похоже, явно отсутствует многоуровневая архитектура. Опять же, на это есть веская причина, так как большинство игр, в которых люди будут разрабатывать, просто изменят состояние сущностей и позволят проявиться последствиям.
ВСЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - это НЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, КОТОРОЕ ВЫ ПИШИТЕ. Некоторые сильно отличаются от других.
Некоторыми примерами доменов, в которых хорошо работает моделирование доменов, являются карточные игры, настольные игры и другие типы систем, управляемых событиями.
Игры, которые работают с частотой кадров X с движением и т. Д., Определяемыми дельтами времени как понятиями основной области, вероятно, не очень подходят. В этом случае наш «домен» часто настолько прост, что нет необходимости в моделировании домена. Обнаружение столкновений, порождение новых объектов, влияние сил на существующие объекты и т. Д., Как правило, охватывают большую часть игрового процесса.
Однако, когда все становится сложным, вы начинаете видеть, как разработчики реализуют модели предметной области в своих сущностях для обработки определенных типов поведения и расчетов.
Модель предметной модели в игровой архитектуре
Ваш игровой движок (например, Unity3D) часто ориентирован на компонент-сущность. В платформере у вас может быть сущность для вашего персонажа, и его состояние постоянно изменяется, чтобы обновить позицию и т. Д.
Однако в более управляемой событиями игре более вероятно, что роль инфраструктуры компонент-сущность заключается в том, чтобы просто существовать как пользовательский интерфейс. Вы в конечном итоге с многоуровневой архитектурой.
Пользовательский интерфейс отображает состояние игры для пользователя. Пользователь взаимодействует с пользовательским интерфейсом, вызывая команды на уровне сервиса. Сервисный уровень взаимодействует с объектами домена. Доменные объекты подняли доменные события. Слушатели событий слышат события и вызывают изменения в пользовательском интерфейсе.
UI> Сервисный уровень> Модель домена
Короче говоря, в итоге получим модель-представление-контроллер с реализацией сервисного уровня.
Используя эту архитектуру, вы получаете полностью тестируемое игровое ядро (редкость в культуре разработки игр, и это видно) с интерфейсом, управляемым событиями.
Хорошо, теперь, что такое DDD?
Доменно-управляемый дизайн, в частности, представляет собой культуру / акцент на аналитических шаблонах, которые используются для изучения предметной области, так что вы на самом деле строите правильные вещи, а затем шаблоны реализации, которые дают вам возможность реализовать уровень модели, который представляет концепции в доменной модели с использованием идиомы вашего языка. DDD выходит из сообщества, которое работает со сложными доменами и всегда ищет способы управления высокой сложностью в своих приложениях, сосредоточившись на моделировании доменов.
DDD не очень хорошо справляется, если ваша цель - просто начать программирование, поэкспериментировать с системой, а затем выяснить, что вы хотите построить позже, и т. Д. Предполагается, что существует более или менее домен. Так что, если вы не знаете, какой будет ваша игра ... Тогда она не сработает.