パラダイム
この回答が書かれた時点では、ここに掲載されている他の回答はすべて間違っています。
ドメイン駆動設計がゲームに適しているかどうかを尋ねる代わりに。「ドメインモデリング」がゲームに適しているかどうかを確認する必要があります。
ドメインモデリングはゲームに適していますか?
答えは、時々それは絶対に素晴らしいです。ただし、プラットフォーマーやFPSなどのリアルタイムゲーム(多くの種類のゲーム)を作成している場合は、できません。これらのシステムには必ずしも適していません。ただし、ドメインモデルパターンの実装が効果的なゲームがシステム内に存在する場合があります。
他の人がここで述べたように、コンポーネントエンティティフレームワークは非常に人気があり、それには正当な理由があります。ただし、ゲーム開発文化では、階層化アーキテクチャーが明らかに不足しているようです。繰り返しますが、これは正当な理由によるものです。人々が開発する予定のほとんどのゲームは、エンティティの状態を単に変化させ、緊急の結果をゲームにします。
すべてのソフトウェアは、お客様が書いているソフトウェアではありません。他のものとはかなり異なるものもあります。
ドメインモデリングが適切に機能するドメインの例としては、カードゲーム、ボードゲーム、およびイベント駆動型の他のタイプのシステムがあります。
Xフレームレートで動作するゲームで、コアドメインの概念としてタイムデルタによって決定される動きなどは、おそらくあまり適していません。この場合、「ドメイン」は非常に単純なので、ドメインモデリングは必要ありません。衝突検出、新しいエンティティのスポーン、既存のエンティティへの力の影響などは、ほとんどのゲームプレイをカバーする傾向があります。
ただし、物事が複雑になると、特定のタイプの動作と計算を処理するために、エンティティ内にドメインモデルを実装する開発者を見るようになります。
ゲームアーキテクチャのドメインモデルパターン
多くの場合、ゲームエンジン(Unity3Dなど)はコンポーネントエンティティ指向です。プラットフォーマーでは、キャラクターのエンティティがあり、その状態は絶えず変化して位置などを更新します。
ただし、よりイベント駆動型のゲームでは、コンポーネントエンティティフレームワークの役割は、ユーザーインターフェイスとして存在するだけの可能性が高くなります。階層化されたアーキテクチャになります。
UIはゲームの状態をユーザーに表示します。ユーザーはUIを操作して、サービスレイヤーでコマンドをトリガーします。サービス層はドメインオブジェクトと対話します。ドメインオブジェクトがドメインイベントを発生させました。イベントリスナーはイベントを聞いて、UIで変更をトリガーします。
UI>サービスレイヤー>ドメインモデル
要するに、サービスレイヤー実装を備えたモデルビューコントローラーになります。
このアーキテクチャーを使用すると、完全に単体テスト可能なゲームコア(ゲーム開発文化では珍しいものであり、それは示されています)とイベント駆動型インターフェースを備えています。
では、DDDとは何ですか?
ドメイン駆動設計は、具体的には、ドメインについて学ぶために使用される分析パターンに重点を置いた文化/動きであり、実際に正しいものを構築し、次に実装パターンを表すモデルレイヤーを実装するための力を与える実装パターンです言語のイディオムを使用したドメインモデルの概念。DDDは、複雑なドメインで動作するコミュニティから生まれたものであり、ドメインモデリングに焦点を当てて、アプリケーションの高度な複雑さを管理する方法を常に模索しています。
DDDは、単にコーディングを開始し、システムをいじって、後で何を構築したいかを理解することなどが目的である場合、うまく機能しません。ドメインが存在することを前提としています。ですから、あなたのゲームがどうなるか分からないのなら、それではうまくいきません。