2009-04-13 7 views
0

最近、Irricht 3D Engineを学び始めました。私はすでにすべてのチュートリアルを終えており、簡単なゲームを作る準備ができています。だからここにいくつかの背景があります:既存の3Dエンジンでゲームを構築する最良の方法

私は、シーングラフモデルに基づく3Dエンジンであるirrichtを持っています。メッシュをロードしてテクスチャを表示する方法を知っていて、ユーザーからの入力を処理するための構造化されたクラスを提供しています。GUIを簡単に構築する方法を教えてくれます。これは、キャンパー、ライト、フォグなどを定義するための簡単な方法を提供し、もっと便利な方法を提供します。

しかし、エンジンが提供していないものは、エンティティを定義する方法ですゲーム内ではのロジックの間に関係があります。 (例えば、ボールが壁に当たった場合、壁をいくつかに分割したい)。

だから、これはゲームロジックを表すインフラストラクチャを敷設する私の仕事です。私はすでにそれをしていると私はいくつかのデータモデルを抽象的なオブジェクトとどのようにそれらがお互いに関連している(私はロジックの関係ではなく、空間的関係を話している)すべてのロジックを処理し、ゲーム内のすべてのエンティティを表している。

今ここで私の質問です。 データモデルをエンジンに接続する最良の方法は何ですか?これは技術的な質問ではなく、設計の質問です。

心に留めておくべきいくつかのポイント:

  • 私のデータモデルを エンジンの上に構築されていません。それは何も知らない。 しかし、それはインターフェイス を通してアクセス可能です。
  • データモデル の何かが変更された場合、 全体シーングラフを再度作成するのではなく、 の適切な部分のみを作成します。
  • 私のデータモデルは、 の階級を中心に のの方法で通信できるエンティティの階層です。

私はMVCパターンについて考えていますが、ゲームを作った経験がある人なら誰でも意見を聞きたいと思います。

+0

質問を編集してより明確にしました。 – user88637

答えて

1

シーングラフのオブジェクト(エンティティ)は、ローカルとワールドの両方の変換(変換、拡大縮小など)を適用できます。ローカル変換は、親オブジェクトの座標系に対する子オブジェクトの変換です。

たとえば、客室に机と机があるとします。デスクのローカル変換は、部屋の座標系に相対的です。机の中のペンは、机の座標系に局所的な変換を行うことができます。つまり、机を翻訳すると、机からシーングラフを再構築することになります(これは、机とペンの世界の変形につながります)。

ヨーヨーのようなシーングラフを持っているのであれば:

ルーム - >デスク - >ペン

これは、あなたが変換(W-世界、L-ローカル変換)を計算する方法である:

Wroom = Lroom

Wdesk = Wroom Ldesk = Lroom Ldesk

WPEN = Wdesk Lpen = Lroom Ldesk Lpen

MVCパターンについては、モデルとビューを既に持っています。それは純粋なMVCに行くのは少し残酷であることが判明するかもしれませんが。ゲーム開発では、コントローラは通常、ビューで終了します。

関連する問題