ぶろぐれ
プログラミング情報・ITニュースやぷろぐれの配信情報などを随時更新しています。
Markdown展開
2013年3月26日火曜日
ゲームをドメイン駆動で設計するということ
とりわけゲームという分野は、「面白さ」を第一として考えるがゆえに、 アプリケーションをどのように設計していくか、ということについての話題が薄いように感じられます。 実際問題として、アプリケーションがどのような設計であろうと、また、如何に保守しにくい状態であっても、 面白さこそすべてである以上、設計手法に話題が上らないのも当然といえるでしょう。 ではゲームでドメイン駆動設計を行うメリットとは何か? それにはまずドメイン駆動設計でゲームを組み立てる例を取って考えましょう。 例えばシューティングゲームにおいてドメイン駆動設計に基づいて組み立ててみると、おおよそ以下のようになるのかと思います。 - __ゲームアプリケーション__ - タイトルサービス - __ゲームエンティティ__ - __ゲームワールド__ - __プレイヤー__ - 弾 - 敵 - オプションサービス プレイヤーに注目して考えると、プレイヤーはまずゲーム内での戦いの舞台である__ゲームワールド__に属しています。 そして、ゲームワールドはゲームエンティティに属しています。 ここでのゲームワールドは、文字通り架空の世界となり、プレイヤーが動いたり弾を撃ちあったり、といった世界を表現します。 一方、ゲームエンティティはその世界を如何に面白くゲームとして表現するかがその存在意義です。 つまり、ゲームの進行に合わせて、ステージクリアとなればワールドを取り換えたり、あるいはポーズをかけたりといったことを行います。 ドメイン駆動設計に基づいてゲームを設計すると、自ずとドメインの役割は明確に区切られます。 これによって、ゲームの変更が容易になるのです。 例えば、敵の数を増やしたい、となった時はワールド__のみ__を変更すればいいし、 ステージのクリア条件を調整したい、となった時はゲームエンティティ__のみ__を変更すればよいということになります。 勿論、このようなオブジェクトをどの粒度にするかはアプリケーションの規模によって適切に調整する必要がありますが、 ゲームにおいてもこのような設計手法を適用可能であるということは重要なことと思います。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿