ブラックボードはステートマシンとビヘイビアツリー間の共有メモリとして機能します。 遷移とBTの条件はブラックボードから読み取り、アクションはブラックボードに書き戻します。 この疎結合アーキテクチャにより、高レベルの状態制御と詳細な行動ロジックを組み合わせることができます。
コアライブラリはエンジン非依存、MITライセンスで、serdeとnalgebraのみに依存しています。あらゆるRustプロジェクトで使用できます。
名前付き遷移でステートを定義します。各遷移はブラックボードに対して条件を評価し、切り替えタイミングを決定します。ガード条件とフォールバックステートをサポート。
Sequence、Selector、Parallel、Inverter、Repeater、Succeeder、Failer、Delay、Action。シンプルな構成要素から複雑な意思決定を組み立てます。
Bool、Int、Float、String、Vec3を持つ共有キーバリューストア。ステートマシンとビヘイビアツリーの両方が同じブラックボードインスタンスを読み書きします。
遷移ガードとBT条件のための構成可能なAnd、Or、Not演算子。単純な比較から任意に複雑な条件を構築できます。
すべての型がSerializeとDeserializeを実装。AI設定をJSON、RON、またはserde互換フォーマットに保存できます。ホットリロード対応。
コアクレートにFyrox依存なし。serde + nalgebraのみ。Fyrox、Bevy、macroquad、純粋なRustサーバーやシミュレーションで使用可能。
FyroxEd用ビジュアルエディタ統合。AIを視覚的に設計し、ランタイムで検査し、完全な履歴でデバッグ。
3パネルレイアウト:左側にブラックボードパネル、中央にドラッグ&ドロップでステートと遷移を設計するグラフキャンバス、右側に条件を設定するステート詳細パネル。
すべてのブラックボードキー、型、現在の値を表示するライブパネル。ランタイムで値を編集し、AI行動の迅速なテストとデバッグが可能。
タイムスタンプ付きですべてのステート遷移をログ記録。遷移履歴を確認して、AIが特定の判断を下した理由を把握。エンティティやステート名でフィルタリング可能。
ステートに優先度レベルを持つ拡張ステートマシン。高優先度のステートが低優先度のステートを割り込み可能。警戒/戦闘AIパターンに最適。
すべてのエディタ操作はFyroxコマンドシステムを通じて実行されます。グラフ編集、接続変更、プロパティ変更のすべてを元に戻したりやり直したりできます。
FyroxEd内でプラグインとしてネイティブに動作。外部ツール不要。AIグラフはFyroxプロジェクトの一部として保存され、通常通りバージョン管理可能。
待機、巡回、追跡ステートを持つ基本的なステートマシン。ブラックボードが遷移を駆動します。
use fyrox_ai::{StateMachine, State, Transition, Blackboard, Condition}; use fyrox_ai::BlackboardValue::{Bool, Float}; // 共有ブラックボードを作成 let mut bb = Blackboard::new(); bb.set("player_visible", Bool(false)); bb.set("patrol_timer", Float(0.0)); // ステートを定義 let idle = State::new("Idle"); let patrol = State::new("Patrol"); let chase = State::new("Chase"); // ステートマシンを構築 let mut sm = StateMachine::builder() .state(idle) .state(patrol) .state(chase) .transition( Transition::new("Idle", "Patrol") .condition(Condition::gte("patrol_timer", Float(3.0))) ) .transition( Transition::new("Patrol", "Chase") .condition(Condition::eq("player_visible", Bool(true))) ) .transition( Transition::new("Chase", "Idle") .condition(Condition::eq("player_visible", Bool(false))) ) .initial("Idle") .build(); // 毎フレーム更新 sm.update(&bb); println!("現在のステート: {}", sm.current().name());
無料コアはランタイムに必要なすべてをカバーします。Proはビジュアルツールと高度な機能を追加します。
| 機能 | Free(MIT) | Pro |
|---|---|---|
| 遷移付きステートマシン | ✓ | ✓ |
| ビヘイビアツリー(9ノード) | ✓ | ✓ |
| ブラックボード(5つの値型) | ✓ | ✓ |
| 条件ロジック(And/Or/Not) | ✓ | ✓ |
| 完全なserdeシリアライゼーション | ✓ | ✓ |
| エンジン非依存(serde + nalgebraのみ) | ✓ | ✓ |
| ビジュアルステートグラフエディタ | — | ✓ |
| 3パネルレイアウト(ブラックボード、キャンバス、詳細) | — | ✓ |
| ブラックボードインスペクタパネル | — | ✓ |
| AiDebugLogger(遷移履歴) | — | ✓ |
| PriorityStateMachine | — | ✓ |
| エディタ内の完全な元に戻す/やり直し | — | ✓ |
Fyrox AIは、ステートマシンとビヘイビアツリーを使用してゲームAIを構築するためのRustライブラリです。遷移付きの構成可能なステートマシン、9種類のビヘイビアツリーノード(Sequence、Selector、Parallel、Inverter、Repeater、Succeeder、Failer、Delay、Action)、5つの値型を持つ共有ブラックボード(Bool、Int、Float、String、Vec3)、構成可能な条件ロジック(And/Or/Not)を提供します。Free版はMITライセンスでエンジン非依存です。
いいえ。無料のコアライブラリはserdeとnalgebraのみに依存しているため、Fyrox、Bevy、macroquad、ヘッドレスサーバーなど、あらゆるRustプロジェクトで使用できます。ProビジュアルエディタにはFyroxEdが必要ですが、コアAIロジックはどこでも動作します。
Fyrox AI ProはFyroxEd内に3パネルのビジュアルエディタを追加します:左側に変数を検査するブラックボードパネル、中央にドラッグ&ドロップでステートマシンを設計するグラフキャンバス、右側に遷移と条件を設定するステート詳細パネル。すべての変更は完全な元に戻す/やり直しをサポートします。
はい。両システムは条件評価にブラックボードを使用するため、ゲーム状態を共有できます。NPCのAIステートマシンがダイアログフラグをチェックし、ダイアログの条件ノードがAIの状態変数を読み取ることができます。これにより、会話の結果に基づいて行動を変えるNPCを構築できます。
ステートマシンは明確な状態(待機、巡回、追跡)を定義し、条件に基づく明示的な遷移を持ちます。ビヘイビアツリーは行動をツリー状に整理し、上から下へ評価します。Sequence、Selector、Parallelなどのノードで複雑な意思決定が可能です。Fyrox AIは両方を提供しています — 高レベルのモードにステートマシンを、各ステート内の詳細なロジックにビヘイビアツリーを使用できます。
MITライセンスの無料コアで始めましょう。必要に応じてProビジュアルエディタを追加できます。