オープンソースのコンポーネントベースのゲームまたはエンジン?


15

コンポーネントベースのゲームデザインについていくつか読んだことがありますが、それをどのように実装しようとしているかを理解するのにまだ苦労しています。コンポーネントベースのゲームやゲームエンジンの良い例はありますか?

回答:


7

個人的には、良い例はないと思います。これは主に、ゲームの「コンポーネントベースのシステム」の定義があまりにも緩く定義されているため、ほとんど意味がないからです。

この回答の議論の一部が役立つ場合があります。Webゲームのアイテムにコンポーネントベースのシステムを実装する方法

ただし、全体として、アプローチは、あらゆる種類のGameObjectまたはActorを、すべての動作を処理する大きなクラスから、動作を実行するオブジェクトを保持するより単純なクラスに変更することです。これを自分で行い、ゲームに合ったさまざまなコンポーネントを作成することが、最善の方法だと思います。


聞こえます 優れたリソースを見つけようとすると、ほとんどすべての人が物事を説明するために異なる用語を使用していることがわかりました。基本構造の翻訳に半分の時間を費やすと、異なる実装を比較するのが難しくなりました。エンティティシステム、コンポーネントシステム、ゲームオブジェクト、テンプレート、アセンブリ、コンポーネントアセンブリなど
...-レニエンシー

2

ここにあなたが好きかもしれないいくつかのリソースがあります:この驚くべきスレッド
があります。ゲームエンジンそのものではありませんが、デザインと議論は素晴らしいです。非常によく似たトピック に関するStackOverflowに関する質問。

元の質問に答えるために、C#のElephantフレームワークはまさに​​あなたが望むものです。それは廃止されましたが、実装の参照のためにまだ存在しています。


1

このサイトは基本的な実装から始まります。

上記のほとんどは、T = Machineのこの記事に触発されたものです。

上記の2つのリンクに触発された基本的な実装に着手しました。コンポーネントシステムの純粋な理論から大きく逸脱したことは間違いありません。間違いなくバグがありますが、いくつかの簡単な例を探していると便利かもしれません。

Bricle(C#/ XNA)

現時点では、いくつかの基本的なエンティティの読み込み、イベントの処理などが行われています。探している主な場所は、Engine.EntitySystemフォルダーであり、おそらくエンティティが実際に作成されるPlayScreenです。

単純なタイプベースのコンポーネントストアを作成し、それを共通のEntityManagerの背後に隠すことは比較的簡単でした。

私が遭遇した最初の課題は、個々のシステムが複数のコンポーネントタイプ(物理コンポーネントとInputMoveableなど)を必要とする場合でした。リレーショナルデータベース言語を使用するには、JOINクエリを実行する方法を見つける必要がありました。そのために、一致するコンポーネントタイプクエリから構築されたエンティティに対して別のコレクションタイプを作成しました。各エンティティコレクションはOnEntityCreateイベントにフックし、一致するかどうかを確認します。まだいくつかのバグがあります。

2番目の課題は、実際に「ゲームオブジェクト」を作成することでした-それらをテンプレートと呼びました。T = Machineの仕様によると、ここではおそらくあまり純粋ではありませんが、うまくいくようです。テンプレートはコンポーネントのインスタンス化をグループ化し、エンティティの構成を容易にします(つまり、ボールは描画可能で物理的です)。

それが役立つことを願っています-エンティティ/コンポーネントシステムは、最初のハードルのいくつかを乗り越えるための挑戦になる可能性があります。


1

もう1つ、私は使用していませんが、コードを少し調べたのはArtemisです。よくコメントされ、かなり活発です。もともとはJavaフレームワークですが、C#/ XNAに移植されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.