問題タブ [behavior-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xna - ゲーム AI - ビヘイビア ツリー
ゲーム用の堅牢な AI/スクリプト システムをどのように作成しますか?
1)すべての NPC/environment/entities に対して、個別の単一の動作ツリー (patrolBehavior、allyBehavior、vendorBehavior、doorBehavior など) を提供しますか? 画面に 500 ユニットある場合、ツリーを完全にパスする必要がありますか (ルートからノード/アクションへ)、またはすべてのユニットに対して 1 ノードの進行を行う必要がありますか?
2)私は update() 関数で AI ロジックを実行しています...しかし、一部のゲームには個別の AI スレッドがあると聞きましたが、何かアイデアはありますか?
3)ゲームをセクション/チャプターに分割する方法を考えています...単純な変数 (EVENT="Mission 3") を使用して、プレイヤーがどのように過ごしたかを示し、すべてを線形にしますか? そして、上のツリーで変数を利用しますか?
haskell - Haskell のビヘイビア ツリー
Haskell でツリーを実装するための戦略があると聞いたことがありますが、適切な動作ツリーの代替案に関する情報は見つかりませんでした。
私の目標: 状態を表すタプルが与えられた場合、タプルに基づいてそれぞれがビジー/エラー/完了/実行を返す動作ノードのツリーにそのタプルを供給するための最良のパターンは何ですか. 動作はタプルを変更することもあります (状態の変更を引き起こします)。
ネストされたノードは、親ノードの戦略に基づいて実行できます。たとえば、子ノードが「エラー」を返した場合、それ以上の子ノードは評価されません。もう 1 つの戦略は、エラー状態が返された場合でも、すべての子ノードを実行することです。
これが理にかなっていることを願っています!
artificial-intelligence - ビヘイビア ツリーのアクションのような状態
私がビヘイビアツリーで理解していることから、各ビヘイビアは、数回の反復で実行できる短い目標指向のアクションである必要があります。
たとえば、以下はビヘイビア ツリーのイメージです。
ここで、 Drive To Enemyの動作がツリー内で数回以上の反復を行うと仮定しましょう。そのため、各パスでDrive To Enemyが呼び出されます。これは、現在実行中の状態であるためです。
問題は、敵が近くにいる場合にEvade Enemyを呼び出したいことです。そして、Drive To Enemyが常に呼び出されることを考えると、 Evade Enemyを呼び出す機会はありません(おそらく、Avoid Enemy と呼ばれるべきです)。
- 現在実行中のアクションに関係なく、ツリーの各パスをトラバースする必要がありますか?
- 私はこれを正しい方法で行っていますか?
- そのような行動を処理する適切な方法は何ですか?
swift - これは迅速なサブクラス copy() で実行しても問題ありませんか?
スーパー コピーが実装され、SubClassType はスーパー クラス タイプにプロパティを追加せず、その機能を変更するだけであることに注意してください。ビヘイビア ツリーに NSCopying のサポートを追加していたときに、そのように入力したところ、文句を言う人 (コンパイラ) が私に腹を立てなかったことに驚いたからです。私はこの時点で精神的にツリー構造に深く入り込んでおり、まだテストする準備ができていませんが、それが機能するかどうかを確認したかったのです。私は問題を考えすぎていますか?
c++ - ブルー プリントを使用せずにビヘイビア ツリーを取得する
ビヘイビア ツリー クイック スタート ガイドに従って、すべてが簡単に機能するようになりました。
現在、コントローラーをブルー プリントから C++ に変換しようとしてFollower_AI_CON
いますが、ビヘイビア ツリーへの参照を取得できません (C++ のみを使用)。
の親クラスを持つブルー プリントを作成しAIController
、エディター内からビヘイビア ツリーを選択することで参照を取得できます (下の画像) が、ブルー プリントをそれ以外の目的で使用しないことを考えると、無駄に思えます。その小さなドロップダウンメニュー。
単純な作業のように見える作業に、イライラするほどの時間を費やしてきました。私は人々を信じ込ませるほど賢くないと思います!:D
私の最低限の .h / .cpp ファイルは次のようになります。
.h
.cpp
data-structures - 一連の行動ルールを保存する方法は?
プレイヤーがボットを作成し、その動作を定義するゲームを作成するというアイデアが頭の中にあります。その後、ボットはオープン ワールド (非常に単純化されたもの) に送られ、できるだけ長く生き残る必要があります。
現在、動作定義を格納する正しいデータ形式を見つけようとしています。何かアドバイス?
動作は、条件とアクションの単純なセットとして定義する必要があります。内部ノードが条件になり、葉がアクションを表すある種のツリー構造を考えていますが、実際に使用できるものを思いつくのに苦労しています。
どうもありがとう!