タグ付けされた質問 「game-component」

5
ゲームオブジェクトのすべてのインスタンスにDrawableGameComponentを使用することの短所は何ですか?
私は多くの場所でDrawableGameComponentsを「レベル」や、キャラクターやタイルなどの代わりに使用する代わりに保存する必要があることを読みました(この男がここで言うように)。しかし、なぜそうなのか理解できません。私はこの投稿を読んで、それは私にとって非常に理にかなっていますが、これらは少数派です。 私は通常、このようなことにはあまり注意を払わないでしょうが、この場合、どうやらこれが進むべき道ではないと思われる大多数の人々が知りたいと思います。たぶん私は何かが欠けています。

2
通常、物理学またはグラフィックスコンポーネントは、コンポーネント指向システムでどのように構築されますか?
私は最後の48時間をオブジェクトコンポーネントシステムに目を通し、それを実装する準備が十分に整ったと感じています。基本のObjectクラスとComponentクラスを作成しましたが、実際のコンポーネントの作成を開始する必要があるため、少し混乱しています。HealthComponentまたは基本的に単なるプロパティのようなものでそれらを考えるとき、それは完全に理にかなっています。物理/グラフィックコンポーネントとしてより一般的なものである場合、少し混乱します。 これまでのところ、私のオブジェクトクラスは次のようになっています(変更が必要な場合は、まだ新しいことをお知らせください)。 typedef unsigned int ID; class GameObject { public: GameObject(ID id, Ogre::String name = ""); ~GameObject(); ID &getID(); Ogre::String &getName(); virtual void update() = 0; // Component Functions void addComponent(Component *component); void removeComponent(Ogre::String familyName); template<typename T> T* getComponent(Ogre::String familyName) { return dynamic_cast<T*>(m_components[familyName]); } protected: // Properties ID m_ID; Ogre::String …

4
XNA GameComponents間(またはゲーム内の任意のタイプのコンポーネント間)の通信を容易にするためにどのテクニックを使用する必要がありますか?
私は最初の「適切な」ゲームプロジェクトから始めています。必然的に、XNAのゲームコンポーネントがどのように通信するかを決定しようとするブロックにぶつかりました。 以前の(Java)GUIプログラミングイベントから、ハンドラーとリスナーは前に進んだように見えました。ですから、イベントの登録とそれらのイベントにサブスクライブしたクラスを受け入れ、それらを処理するハンドラーを備えた、ある種のイベントバスがあります。例(疑似コード): class SpriteManager Update(){ if(player.collidesWith(enemy) // create new 'PlayerCollisionEvent' } class HUDManager onPlayerCollisionEvent(){ // Update the HUD (reduce lives etc) } ただし、これを完全に達成するために必要なコード設定(C#で)はわかりません。イベントを追跡しているもの(ある種のバス?)とその構造は? ゲームサービスについても多く言及されているようです。これにより、メインのGame.csクラスにGameComponentを登録し、メインの 'Game'オブジェクトへの参照を持つコードの任意の場所からフェッチできます。SpriteBatchオブジェクトでこれを試しましたが、非常に簡単に見えます。しかし、これがイベントモデルほど柔軟ではないことがわかります。 たとえば、敵が死亡した場合を考えてみましょう。ゲームのスコアを更新したい。サービスを使用して、Game1で作成され、サービスとして追加されたStateManagerオブジェクトへの参照を取得し、 'score'を新しい値に設定できます。「onEnemyDeath」イベントはさまざまなクラスで別々に処理できますが、関連する「敵の死の検出」セクションの1行のコードで開始され、必要な各GameComponentを個別にキャストしてから何でも呼び出すよりも良いと思いますメソッドが必要です。 それとも、これらは他の戦略よりも劣っていますか? これは、ゲーム通信のパラダイムと同じくらい、私のC#知識が不十分であることの一部だと思いますが、この基本的なことを正しくしたいのですが。 更新 サービスを確認したことの方が詳細であると私は確信していません。これは、基本的に(私が理解しているところから)グローバル変数を渡すことです。 アップデート2 イベントの処理とサンプルコードのテストに関するこの基本的なチュートリアルを見てきたので、私が議論しているのはイベントが論理的な選択になると思われます。しかし、私が見たサンプルでそれを使用することはあまりできません。すべきでない明白な理由はありますか?

1
XNAでは、組み込みのゲームコンポーネントクラスを使用する必要がありますか?
私はWindow Phone 7のXNAゲームを始めたばかりです。Flashゲームの場合、AS3から移植する独自のフレームワークがありますが、XNAに組み込まれているゲームコンポーネントのものを見つけました。だから私はこれを使うべきですか?Entityクラスはゲームコンポーネント/描画可能ゲームコンポーネントを拡張する必要がありますか?私のAS3コードを移植するだけでより速くなると確信していますが、この組み込みのものにはいくつかの利点があると思いましたか? 更新:それらを使用しないことにしました。私が説明した方法で使用することを意図しているようには見えません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.