実際のコンポーネントベースのゲームオブジェクトシステム[終了]


43

成功の歴史を見てみましょう。コンポーネントベースのゲームオブジェクトシステムを使用して構築された人気のあるゲーム(およびゲームエンジン)はどれですか?各回答には以下を含める必要があります。

  1. ゲームタイトル(回答ごとに1つ)
  2. 著者/会社
  3. 開発時間(オプション)
  4. 事後分析へのリンク(オプション)
  5. docs / sourceコードへのリンク(オプション)

7
-1過去10年間に書かれたほとんどすべてのゲームは、どこかでコンポーネントシステムを使用し、他のどこかでコンポーネントシステムを使用しません。

5
あなたは間違っている。多くのエンジンはまだ静的階層を使用しています。そして、コンポーネントシステムを実際に使用するゲームとエンジンのドキュメント/事後分析/コードスニペットを収集して読むことは興味深いことです。
topright

4
エンジンが静的階層を使用しないとは言いませんでした。コンポーネントのみを使用するエンジンを検索するのと同じように、静的階層のみを使用するエンジンを検索するのは難しいと言いました。

2
あなたは間違っている。ゲームエンティティ(ゲームロジックの中心)、視覚効果、ゲームエンジン、およびエディターインフラストラクチャは、コンポーネントベースかそうでないかのどちらかです。
右上

2
@topright:ジョーが正しいか間違っているかに関係なく、平易で個人的な「あなたは間違っている」とコメントを2回続けて開始することは、あまり巧妙ではありませんよね?あなたのコメントは、これらの小さな言葉がなければ関連情報を見逃さないと思いますが、それらを省略すると、素敵で丁寧な会話に大きく貢献するでしょう。これを考慮してください:)
マイケルクレメント

回答:


19

Dungeon Siege by Gas Powered Games

Scott Bilasさんは、Dungeon Siegeに関する多くの情報をリリースしました。これには、コンポーネントベースのシステムなどが含まれていました。

Dungeon Siegeは2002年にリリースされました。


うわー、素晴らしいリンク。コンポーネントシステムに関する彼の講演は、コンポーネントベースのシステムの実装をよりよく理解するのに役立ちました。DSでも継続的な世界がどのように行われたかについてのきちんとした話。同様の手法が他の大規模な世界のゲームでまだ使用されているのだろうかと思います。私は、ほとんどの場合、リージョンまたはチャンク(Minecraft、ベセスダによるもの)に似たものを使用する傾向があると思います。
CodexArcanum

19

レジスタンス1-2(おそらく3)(2006-2008)insomniac Games

Terrance Cohenは、これらのゲームをGDCカナダ2010の高性能ゲームプレイトークのための彼のA Dynamic Component Architectureにリストしています。

これが最近のラチェット&クランクゲームに適用されたかどうかはわかりません。


そのプレゼンテーションの音声がGDC Vaultペイウォールの背後にあるかどうか知っていますか?スライドだけでもかなりクールですが、プレゼンテーションで回答されていると思われるいくつかの質問があります。

私はこのプレゼンテーションについて知りませんでした、どうもありがとう!
右上

13

Unity3Dはデフォルトでコンポーネントベースのシステムを使用します。テキストファイルと依存性注入からゲームエンティティを作成するのに最適です。

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

これらのコンポーネントは次のようになります

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}


8

Tony Hawk Pro Skater 3
開発者:Neversoft
年:2001
時間:約2年
Post Mortem:Evolve Your Hierarchy(おそらく最もリンクされたコンポーネントベースの記事)


1

私の知る限り、私が見た中で最高のプロジェクトはバーガーエンジンです。jstはコードをダウンロードして、それらがどの程度実装されているかを確認します。全体はxmlからのデータ駆動型であり、エンティティベースのアーキテクチャを非常によく使用しています。

http://code.google.com/p/burger-engine/source/browse/


2
-1は、「抽象」のつづりの間違いから静的なコンポーネントタイプの列挙、膨大な数の仮想関数、各コンポーネントへの28バイトの位置データのインクルードまで、コードは本当にアマチュアに見えます...これが最良の場合見た、他の場所を見てください。

コード全体がデータ駆動型であり、このタスクをこれほど簡単に実行できるオープンソースの実装は見つかりませんでした。良いコードへのリンクがある場合は、リンクを投稿してください。スペルミス、仮想ファンク-「コンポーネントベースのアーキテクチャ」に慣れていない人にとっては良いリソースです。これは、データ駆動型設計が実際にどのように機能するかについての貴重なイントロを提供する目的に役立ちます。
アヤッパ

2
Dunnoはコードについてですが、スペルミスを指摘することは、英語を母国語としない国のプログラマーも多いことを考えると、無効な議論です。
Rajavanya Subramaniyan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.