[解決済み】コンポーネントベースのゲームエンジン設計【クローズド
質問
ゲームエンジンの設計(特に2Dゲームエンジンに焦点を当てていますが、3Dゲームにも適用できます)について調べていて、どのように進めるかについていくつかの情報に興味を持っています。 多くのエンジンが、従来の深いオブジェクトの階層構造から、最近ではコンポーネントベースのデザインに移行していると聞いています。
この種のデザインがどのように実装されることが多いかについて、何か良いリンク先をご存知ですか? 私が見たのは 階層を進化させる しかし、この2つのモデルの間で考えを切り替えるには、少し努力が必要であることがわかりました。
これに関する良いリンクや情報があれば、書籍でも構いませんが、ここでのリンクや詳細な回答が望ましいと思います。
解決方法は?
2013-01-07 更新 : コンポーネントベースのゲームエンジンと、(私の意見では)優れたリアクティブ・プログラミングのアプローチをうまく組み合わせたものを見たい場合は、次のものを見てください。 V-Playエンジン . これは、QTsを非常にうまく統合しています。 QMLプロパティバインディング 機能を提供します。
うちの大学でもゲームでCBSEの研究をしていて、何年もかけて資料を集めました。
ゲームにおけるCBSEの文献。
- ゲームエンジンアーキテクチャ
- ゲームプログラミングの珠玉の技4:ゲーム・エンティティを管理するシステム ゲーム
- ゲーム・プログラミング・ジェムズ 5: コンポーネント・ベースのオブジェクト管理
- ゲームプログラミングジェムズ5:汎用コンポーネントライブラリ
- ゲームプログラミングジェムズ6:ゲームオブジェクトコンポーネントシステム
- ゲームエンジンの設計とJavaによる実装 (ドイツ語)
オブジェクト指向のゲーム開発
C#で作られたコンポーネントベースのゲームエンジンの非常に優れた、きれいな例として Elephant ゲーム フレームワーク .
コンポーネントとは何かということを本当に知りたい方は、こちらをお読みください。コンポーネントベースのソフトウェア工学を読んでください。 そこでは、コンポーネントを以下のように定義しています。
<ブロッククオートA ソフトウェア・コンポーネント は、コンポーネントモデルに準拠し、構成基準に従って変更することなく独立して配備および構成できるソフトウェア要素です。
A コンポーネントモデル 特定のインタラクションを定義する および構成基準について説明する。A コンポーネントモデル実装 は、モデルに準拠したコンポーネントの実行をサポートするために必要な、実行可能なソフトウェア要素の専用セットです。
A ソフトウェアコンポーネントインフラストラクチャ は、相互作用するソフトウェアコンポーネントのセットで、これらのコンポーネントとインターフェースを使用して構築されたソフトウェアシステムまたはサブシステムが、明確に定義された性能仕様を満たすことを保証するために設計されたものです。
2年間の経験で感じたこと オブジェクト指向プログラミングは、単に行き詰まっただけです。コンポーネントがどんどん小さくなり、無駄なオーバーヘッドを多く含んだコンポーネントに詰め込まれた関数のようになっていくのを見ながら、私の警告を思い出してください。使用方法 関数型反応プログラミング の代わりに。また、私の新しいブログ記事(書いているうちにこの質問にたどり着きました :) を見てください。 私がコンポーネントベースのゲームエンジンアーキテクチャからFRPに切り替えた理由 .
ゲーム用紙のCBSE。
- コンポーネントベースのゲーム開発 - 高騰するコストと拡大する納期への解決策?
- 柔軟で拡張性の高いコンピュータゲームのためのアーキテクチャ (404)
- ゲームのためのソフトウェアアーキテクチャ
- ゲーム開発のための汎用的なフレームワーク (ウェブアーカイブ)
- 依存性注入を用いたゲームオブジェクトのスマートコンポジション
ゲームのCBSEのWebリンク(関連性によって並べ替え)。
- コンポーネントベースオブジェクト Wiki (空のwiki)
- ヒエラルキーを進化させる
- ゲームオブジェクトの構造。継承と集約
- データ駆動型ゲームオブジェクトシステム (PDF)
- データ駆動型ゲームオブジェクトシステム(PPT)
- Flash用コンポーネントベースプロトタイピングツール
- ゲームオブジェクト・コンポーネント・アーキテクチャの理論と実践 (404)
- MMOの未来はエンティティシステムで決まる
- ogre3d.orgのフォーラム。コンポーネントベースオブジェクト
- gamedev.net。アウトボードコンポーネントベースのエンティティシステムアーキテクチャ
- gamedev.net。エンティティシステムに関する質問
- Brainfoldエンティティシステムブログ (ウェブアーカイブ)
関連
-
[解決済み】Redisにするタイミングは?MongoDBにするタイミングは?[クローズド]
-
[解決済み】ドメイン駆動型設計。ドメインサービス、アプリケーションサービス
-
[解決済み】コンポーネントベースのゲームエンジン設計【クローズド
-
[解決済み】「Layer」と「Tier」の違いは何ですか?
-
[解決済み】オブジェクト指向のプロジェクトはどのように設計するのですか?[クローズド]
-
[解決済み】マイクロサービスアーキテクチャでGraphQLを使用するタイミングと方法
-
[解決済み】「コルーチン」と「スレッド」の違い?
-
[解決済み】なぜLinuxはモノリシックカーネルと呼ばれるのですか?
-
[解決済み] UUIDを使わざるを得ないデザインとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] (関数型)リアクティブプログラミングとは?
-
[解決済み】Redisにするタイミングは?MongoDBにするタイミングは?[クローズド]
-
[解決済み】コンポーネントベースのゲームエンジン設計【クローズド
-
[解決済み】「Layer」と「Tier」の違いは何ですか?
-
[解決済み】オブジェクト指向のプロジェクトはどのように設計するのですか?[クローズド]
-
[解決済み】マイクロサービスアーキテクチャでGraphQLを使用するタイミングと方法
-
[解決済み】「コルーチン」と「スレッド」の違い?
-
[解決済み】なぜLinuxはモノリシックカーネルと呼ばれるのですか?
-
[解決済み] UUIDを使わざるを得ないデザインとは?