既存のFOSSコンポーネントベースのフレームワークはありますか?[閉まっている]


25

コンポーネントベースのゲームプログラミングパラダイムは、はるかに人気が高まっています。再利用可能なコンポーネントフレームワークを提供するプロジェクトはありますか?どの言語でも、私はそれを気にしないと思います。私自身のプロジェクトのためではなく、ただ興味があります。

具体的には、基本Entityクラス、基本Componentクラス、およびおそらくいくつかの標準コンポーネントを含むプロジェクトがありますか?ホイールを再発明したくない場合、またはGraphicsComponentDirect3Dでスプライトを実行したい場合は、ゲームを開始するのがはるかに簡単になりますが、既に何十回も実行されていることがわかります。

すばやくグーグルでRusherが表示されます。誰もがこれを聞いたことがありますか?人気のあるものがない場合は、なぜですか?このようなものを再利用可能にするのは難しすぎますか?私自身の実装では、フレームワークに押し込められるボイラープレートがたくさん見つかりました。


4
あなたが最初に書くべきです!:)
リケット

1
まあ、私は自分のプロジェクトのためにC#で書いた。たぶん私たちは貢献できるでしょうか?
テセレックス

私は完全にそのC#プロジェクトに取り組んでいます。ええ、標準的なものがどのように機能するかについては大きなコンセンサスはありませんが、XNA(あなたのボートを浮かぶもの)に焦点を当てることができるかもしれません。多くの巨人がそれを行うための最良の方法を宣言していないからといって、私たちが試行/実験できないというわけではありません。
マイケルコールマン

コンポーネントベースの設計は、より多くのプログラマよりもプロジェクトマネージャーを引き付けるかもしれないので
M. Utku ALTINKAYA

回答:


45

人気のあるものがない場合は、なぜですか?

そのようなフレームワークがどのように機能するかについてコンセンサスに似たものは何もないからです。

Gamedev.netのスレッドで、人々がコンポーネントベースのゲームシステムについて話すとき、3つの異なる要因に基づいて、実際に彼らがどのように機能するかについて少なくとも8つの可能な順列があると判断しました:

機内対機外 -コンポーネントはエンティティに集約されるべきですか、それともサブシステムの一部であり、エンティティIDによってのみ関連付けられるべきですか?

静的構成と動的構成 -エンティティは、既知のインターフェイスを介してコードで通信できるコンポーネントの既知のセット(例:1物理、1アニメーション、1 AIなど)で構成されるか、エンティティに任意の量のコンポーネントを追加できますそれら(関心のある他のコンポーネントを見つけるための関連戦略とともに)

コンポーネントのデータ対エンティティのデータ -データは、主にその上で動作するコンポーネントによって保持されるべきですか?または、すべてのコンポーネントからアクセス可能な共有スペースのエンティティにデータを保存する必要がありますか?

さらに、コンポーネントの通信方法(共有データ経由?関数ポインター経由?信号/スロット経由?まったくない?)についてのさらなる質問があります。 -作成時に定義されたエンティティの順序?トポロジカルな種類のコンポーネントの相互依存性に基づいて?)など

これらの選択はそれぞれ完全に任意であり、1つのシステムでできることはすべて他のシステムで実行できます。しかし、コーディングの方法はそれぞれの場合でかなり異なります。そして、人々はどちらの方法が自分に最適かについて強い意見を持っているようです。

現在、人々はコンポーネントがオブジェクト指向の代わりになっているという考え(それはそうではない)にまだあまりにも追いついており、ゲームが伝統的に作られた方法からの大きな変化であると想像しています(これもそうではありませんでした) -人々は長い間、エンティティのさまざまなサブシステムを除外してきました)、それで多くの誇張があり、あまり合意がありません。たぶん数年後には物事は落ち着き、人々は1つか2つのかなり標準的なアプローチに落ち着くでしょう。


1
私はこの答えが古いことを感謝していますが、今では間違っています。人気のあるフレームワークがあり、トピックに関する議論はほとんど残っていません。ゲームを作成するとき、上記の質問のほとんどは重要ではありません。コードの設計に影響を与えないか、1つのアプローチが他のアプローチではない場合に高速で再利用可能です。実際には、多くの人気のあるフレームワークがあります-他の回答の1つにリンクされているwikiは良い出発点です(私たちの束は、実際の出荷されたゲーム+フレームワークを見つけやすくするためにそれを維持します)
Adam

1
@Adam:ダーウィンの進化試合で勝ったアプローチの詳細に関するリンクが欲しいです。詳細を言うとき、インボードとアウトボードについては聞きたくありません。ハッシュマップ、ベクトル、アロケーター、プライベート、パブリック、ループ、const ... LOWレベルの詳細については聞きたいです。
v.oddou 14

@ v.oddou誰かがすでに回答としてwikiへのリンクを投稿しています(以下を参照)。詳細が必要ですか?ソースコードがいっぱいです
アダム14

10

これらすべての例を集めているウィキがあります:

http://entity-systems.wikidot.com/

...異なるアプローチの違いの説明とともに。


AshとArtemis(どちらもwikiにあります)は人気があり、どちらも趣味のゲーム開発者とともに商用ゲーム開発に使用されています。
アダム

4

このアーキテクチャに関連して見つけたこれらのフレームワークを確認してください...

www.burgerengine.com

PushButtonEngine

Arthemisフレームワーク-https ://github.com/artemis-esf/artemis-framework/tree/master/src/com/artemis

Unity Apiをご覧ください。コンポーネントベースのアーキテクチャに関する多くのものを見つけることができます。(私がさらに見つけたらすぐにリストを更新します...)

更新:

      https://code.google.com/p/spartanframework/

これは、エンティティシステムについて良い方法で説明しています... http://piemaster.net/2011/07/entity-component-primer/


2

Flash用のプッシュボタンエンジンがあります:http : //pushbuttonengine.com/

C ++ / Python用のPanda3Dがあります:panda3d dot com(n00bとして投稿ごとに1つのURLしか許可されていません)

もっとたくさんあると思う:)

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