Paradigma
En el momento en que se escribió esta respuesta, las otras respuestas publicadas aquí son todas incorrectas.
En lugar de preguntar si el diseño impulsado por dominio es bueno o no para los juegos. Debes preguntar si el "modelado de dominio" es bueno o no para los juegos.
¿El modelado de dominio es bueno para los juegos?
La respuesta es: a veces es absolutamente fabuloso. Sin embargo, si está creando un juego en tiempo real, como un juego de plataformas o FPS o lo que sea (MUCHOS MUCHOS tipos de juegos), entonces no. No es necesariamente adecuado para esos sistemas. Sin embargo, puede haber sistemas dentro de esos juegos en los que la implementación del patrón del modelo de dominio sea efectiva.
Como otros han mencionado aquí, los marcos de entidades componentes tienden a ser muy populares, y por una buena razón. Sin embargo, en la cultura de desarrollo de juegos parece existir una clara falta de arquitecturas en capas. Nuevamente, esto es por una buena razón, ya que la mayoría de los juegos que las personas van a desarrollar solo mutan el estado de las entidades y dejan que las consecuencias emergentes sean el juego.
TODO EL SOFTWARE NO ES EL SOFTWARE QUE ESCRIBE. Algunos son bastante diferentes de otros.
Algunos ejemplos de dominios en los que el modelado de dominios funciona bien son los juegos de cartas, los juegos de mesa y otros tipos de sistemas basados en eventos.
Los juegos que se ejecutan a una velocidad de fotogramas X con movimiento, etc., determinados por deltas de tiempo como conceptos básicos del dominio, probablemente no encajen bien. En este caso, nuestro "dominio" es a menudo tan simple que no hay necesidad de modelar dominios. La detección de colisiones, el desove de nuevas entidades, la influencia de las fuerzas en las entidades existentes, etc. tienden a cubrir la mayoría de los juegos.
Sin embargo, a medida que las cosas se vuelven complejas, comienza a ver desarrolladores que implementan modelos de dominio dentro de sus entidades para manejar ciertos tipos de comportamiento y cálculo.
Patrón de modelo de dominio en arquitecturas de juegos
Su motor de juego (por ejemplo, Unity3D) a menudo está orientado a entidades de componentes. En un juego de plataformas, puedes tener una entidad para tu personaje y su estado cambia constantemente para actualizar la posición, etc.
Sin embargo, en un juego más orientado a eventos, es más probable que el rol del marco de la entidad componente sea más que solo existir como la interfaz de usuario. Terminas con una arquitectura en capas.
La interfaz de usuario muestra el estado del juego al usuario. El usuario interactúa con la interfaz de usuario, activando comandos en la capa de servicio. La capa de servicio interactúa con los objetos del dominio. Los objetos de dominio generaron eventos de dominio. Los oyentes de eventos escuchan los eventos y desencadenan cambios en la interfaz de usuario.
UI> Capa de servicio> Modelo de dominio
En resumen, termine con model-view-controller con una implementación de capa de servicio.
Usando esta arquitectura, tienes un núcleo de juego completamente comprobable por unidad (una rareza en la cultura de desarrollo de juegos, y se nota) con una interfaz impulsada por eventos.
Ok ahora, ¿qué es DDD?
El diseño impulsado por el dominio específicamente es una cultura / movimiento de énfasis en los patrones analíticos que se utilizan para aprender sobre el dominio, de modo que realmente está construyendo lo correcto, y luego los patrones de implementación que le permiten implementar una capa de modelo que representa el conceptos en el modelo de dominio utilizando el idioma de su idioma. DDD proviene de una comunidad que trabaja con dominios complicados y siempre está buscando formas de administrar la alta complejidad en sus aplicaciones centrándose en el modelado de dominios.
DDD no funciona tan bien si su objetivo es simplemente comenzar a codificar, jugar con el sistema y luego descubrir lo que desea construir más tarde, etc. Supone que existe más o menos un dominio. Entonces, si no tienes idea de cuál será tu juego ... Entonces, no va a funcionar.