Paradigme
Au moment où cette réponse a été écrite, les autres réponses affichées ici sont toutes fausses.
Au lieu de demander si la conception pilotée par domaine est bonne pour les jeux. Vous devez vous demander si la "modélisation de domaine" est bonne pour les jeux.
La modélisation de domaine est-elle bonne pour les jeux?
La réponse est: parfois, c'est absolument fabuleux. Cependant, si vous créez un jeu en temps réel tel qu'un jeu de plateforme ou FPS ou autre (BEAUCOUP DE NOMBREUX types de jeux), alors non. Ce n'est pas nécessairement bien adapté à ces systèmes. Cependant, il peut y avoir des systèmes dans ces jeux dans lesquels la mise en œuvre du modèle de modèle de domaine est efficace.
Comme d'autres l'ont mentionné ici, les cadres de composants-entités ont tendance à être très populaires, et pour cause. Cependant, dans la culture de développement de jeux, il semble y avoir un manque net d'architectures en couches. Encore une fois, c'est pour une bonne raison car la plupart des jeux que les gens vont développer ne font que muter l'état sur les entités et laisser les conséquences émergentes être le jeu.
TOUS LES LOGICIELS NE SONT PAS LES LOGICIELS QUE VOUS ÉCRIVEZ. Certains sont assez différents des autres.
Des exemples de domaines dans lesquels la modélisation de domaine fonctionne bien sont les jeux de cartes, les jeux de société et d'autres types de systèmes pilotés par les événements.
Les jeux qui fonctionnent à une fréquence d'images X avec des mouvements, etc. déterminés par des deltas temporels en tant que concepts de domaine de base ne sont probablement pas un bon choix. Dans ce cas, notre "domaine" est souvent si simple qu'il n'y a pas besoin de modélisation de domaine. La détection des collisions, l'apparition de nouvelles entités, l'influence des forces sur les entités existantes, etc. ont tendance à couvrir la plupart des gameplay.
Cependant, à mesure que les choses deviennent complexes, vous commencez à voir des développeurs implémenter des modèles de domaine au sein de leurs entités pour gérer certains types de comportement et de calcul.
Modèle de modèle de domaine dans les architectures de jeu
Votre moteur de jeu (par exemple, Unity3D) est souvent orienté entité-composant. Dans un jeu de plateforme, vous pouvez avoir une entité pour votre personnage et son état est constamment modifié pour mettre à jour la position, etc.
Cependant, dans un jeu plus axé sur les événements, il est plus probable que le rôle de l'infrastructure de composant-entité soit simplement d'exister en tant qu'interface utilisateur. Vous vous retrouvez avec une architecture en couches.
L'interface utilisateur rend l'état du jeu à l'utilisateur. L'utilisateur interagit avec l'interface utilisateur, déclenchant des commandes dans la couche de service. La couche de service interagit avec les objets de domaine. Les objets de domaine ont déclenché des événements de domaine. Les écouteurs d'événements entendent les événements et déclenchent des modifications dans l'interface utilisateur.
UI> Service Layer> Modèle de domaine
En bref, finissez avec model-view-controller avec une implémentation de la couche service.
En utilisant cette architecture, vous disposez d'un noyau de jeu entièrement testable par unité (une rareté dans la culture de développement de jeux, et cela se voit) avec une interface événementielle.
Ok maintenant, qu'est-ce que DDD?
La conception pilotée par le domaine est spécifiquement une culture / un mouvement mettant l'accent sur les modèles analytiques qui sont utilisés pour en savoir plus sur le domaine, afin que vous construisiez réellement la bonne chose, puis des modèles d'implémentation qui vous permettent d'implémenter une couche de modèle qui représente le concepts dans le modèle de domaine en utilisant l'idiome de votre langue. DDD est issu d'une communauté qui travaille avec des domaines complexes et est toujours à la recherche de moyens de gérer une complexité élevée dans leurs applications en se concentrant sur la modélisation de domaine.
DDD ne fonctionne pas si bien si votre objectif est de simplement commencer à coder, de jouer avec le système, puis de comprendre ce que vous voulez construire plus tard, etc. Il suppose qu'il existe plus ou moins un domaine. Donc, si vous n'avez aucune idée de ce que sera votre jeu .. Alors, ça ne marchera pas.