コンポーネントベースのゲームアーキテクチャに関するWeb上で多くの記事を読んでいるので、このアーキテクチャをテストするためのシンプルなシステムを実装することに決めました。コンポーネントベースのゲームエンジンでコンポーネントを特定する
私は一般的なゲームノードを実装しました。これは、コンポーネントの基本的なリストと、そのようなコンポーネントの追加と削除のためのいくつかの方法だけです。私はまた、それらの間のコミュニケーションを促進するために、特定のノードに属するメッセージのリストを持っています。
この例では、銃を所有しているボット(ちょうど基本的な「ガンガン」と統計情報が異なる派生型があります)があり、それらはお互いに射撃し、その結果をコンソールに出力します。そのうちの1人が相手を射撃するたびに、MSG_SHOTコードと被害額を引数としてメッセージが後者のリストに掲載されます。これは問題なくOKです。
しかし、私はいくつかの銃に「スコープ」を追加して、そのダメージを2倍にすることに決めました。しかし、実際に反復することなく、その子供の1つが範囲であるかどうかを武器が確認する方法を見つけることはできませんでした。いくつかの基本的な解決策がありますが、私は一般的なものを目指しています(スコープフィールドを銃に追加するのではなく、スコープがない場合はnullのままにしておきます)。銃にさまざまな影響を与える無数の銃器をつけたいのであればどうでしょうか?私はそれらを私の銃の部品の「シュート」方法にどのように影響させることができるでしょうか?
「射撃」が呼び出されたときに、すべての銃の子供を反復して、射撃に影響を与えることができるかどうかを確認する必要がありますか?私は、コンポーネント名に頼ることが良いとは思わない。たぶん私は、スコープが利用可能なときに特定の効果を望むかもしれませんが、特定の種類のスコープに対してはファンシーなものを必要とします。あなたが持っている詳細と:(
ノードのツリーを特定の型で検索し、最初の結果を返す単純なクエリ関数を追加しました。そうでない場合はnullを返しました。これまでかなりうまくいきます。それ以外のメッセージシステムは正常に動作しているようです。ノードのメッセージ送信機能は、そのプロジェクトの受信者が存在する場合は結果ジェネリックオブジェクトを返し、そうでない場合はnullを返します。この解釈に重大な問題はありますか? –