Paradigma
Zum Zeitpunkt der Erstellung dieser Antwort sind die anderen hier veröffentlichten Antworten alle falsch.
Anstatt zu fragen, ob Domain-Driven Design für Spiele gut ist oder nicht. Sie sollten sich fragen, ob "Domain Modeling" für Spiele geeignet ist.
Ist Domain-Modellierung gut für Spiele?
Die Antwort lautet: Manchmal ist es absolut fabelhaft. Wenn Sie jedoch ein Echtzeitspiel wie einen Plattformer oder FPS oder was auch immer erstellen (VIELE VIELE Arten von Spielen), dann nein. Es ist nicht unbedingt gut für diese Systeme geeignet. Es kann jedoch Systeme innerhalb dieser Spiele geben, in denen die Implementierung des Domänenmodellmusters effektiv ist.
Wie andere hier erwähnt haben, sind Komponenten-Entity-Frameworks aus gutem Grund sehr beliebt. In der Spielentwicklungskultur scheint es jedoch einen deutlichen Mangel an geschichteten Architekturen zu geben. Auch dies ist aus gutem Grund so, da die meisten Spiele, die Menschen entwickeln werden, nur einen mutierten Zustand auf Entitäten entwickeln und die aufkommenden Konsequenzen das Spiel sein lassen.
ALLE SOFTWARE IST NICHT DIE SOFTWARE, DIE SIE SCHREIBEN. Einige sind ganz anders als andere.
Einige Beispiele für Domänen, in denen die Domänenmodellierung gut funktioniert, sind Kartenspiele, Brettspiele und andere Arten von Systemen, die ereignisgesteuert sind.
Spiele, die mit einer X-Bildrate mit Bewegung usw. ausgeführt werden, die durch Zeitdeltas als Kerndomänenkonzepte bestimmt werden, passen wahrscheinlich nicht gut zusammen. In diesem Fall ist unsere "Domain" oft so einfach, dass keine Domain-Modellierung erforderlich ist. Kollisionserkennung, Laichen neuer Entitäten, Einfluss von Kräften auf vorhandene Entitäten usw. decken in der Regel das meiste Gameplay ab.
Wenn die Dinge jedoch komplexer werden, sehen Sie Entwickler, die Domänenmodelle in ihren Entitäten implementieren, um bestimmte Arten von Verhalten und Berechnungen zu handhaben.
Domänenmodellmuster in Spielarchitekturen
Ihre Spiel-Engine (z. B. Unity3D) ist häufig komponentenentitätsorientiert. In einem Plattformer haben Sie möglicherweise eine Entität für Ihren Charakter und sein Status wird ständig geändert, um die Position usw. zu aktualisieren.
In einem ereignisgesteuerten Spiel ist es jedoch wahrscheinlicher, dass die Rolle des Komponenten-Entitäts-Frameworks eher als Benutzeroberfläche existiert. Sie erhalten eine mehrschichtige Architektur.
Die Benutzeroberfläche gibt dem Benutzer den Spielstatus. Der Benutzer interagiert mit der Benutzeroberfläche und löst Befehle in der Serviceschicht aus. Die Serviceschicht interagiert mit Domänenobjekten. Domänenobjekte haben Domänenereignisse ausgelöst. Ereignis-Listener hören die Ereignisse und lösen Änderungen in der Benutzeroberfläche aus.
Benutzeroberfläche> Serviceschicht> Domänenmodell
Kurz gesagt, Sie erhalten einen Model-View-Controller mit einer Service-Layer-Implementierung.
Mit dieser Architektur verfügen Sie über einen vollständig auf Einheiten testbaren Spielkern (eine Seltenheit in der Spielentwicklungskultur, wie es zeigt) mit einer ereignisgesteuerten Oberfläche.
Ok, was ist DDD?
Domain-Driven Design ist speziell eine Kultur / Bewegung mit Schwerpunkt auf analytischen Mustern, die verwendet werden, um etwas über die Domain zu lernen, damit Sie tatsächlich das Richtige erstellen, und dann Implementierungsmuster, mit denen Sie eine Modellebene implementieren können, die das darstellt Konzepte im Domänenmodell unter Verwendung der Sprache Ihrer Sprache. DDD stammt aus einer Community, die mit komplizierten Domänen arbeitet und immer nach Möglichkeiten sucht, die hohe Komplexität ihrer Anwendungen zu verwalten, indem sie sich auf die Domänenmodellierung konzentriert.
DDD funktioniert nicht so gut, wenn Sie nur mit dem Codieren beginnen, mit dem System herumspielen und dann herausfinden möchten, was Sie später erstellen möchten usw. Es wird davon ausgegangen, dass mehr oder weniger eine Domäne vorhanden ist. Wenn Sie also keine Ahnung haben, wie Ihr Spiel aussehen wird, funktioniert es nicht.