C88-敵AI
のバックアップの現在との差分(No.4)
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
バックアップ
を表示
C88-敵AI
へ行く。
概要
Blackboard
Service
HandgunCheckService、MissileCheckService
AttackShortService、AttackLongService
BoostUseService
Task
AvoidMissile
AvoidHandgun
近距離
仕様
ビヘイビアツリー
遠距離
難易度調整
感想
概要
†
敵の挙動。
ビヘイビアツリー
で構築。
大抵の障害物や壁のチェックは「LineTrace By Channel」や「CupsuleTrace By Channel」でやってる
EQS使おうとしたけど、一回試して上手く動かなかったので断念
マスター予定日当日に調整してたのもあって、途中からかなり雑に。
ServiceとTaskはどれも大きいBPになったので今回はスクリーンショット割愛……需要あれば作ります
▲
▼
Blackboard
†
AIControllerの「Event Tick」からBlackboardに相手のactorと射程範囲チェックを設定
Serviceでやっても良かった。
▲
▼
Service
†
▲
▼
HandgunCheckService、MissileCheckService
†
ハンドガン、ミサイルで撃たれているかをチェックするサービス。
「Get All Actors with Interface」等でリストを全部取得。
actorの所属グループを観て敵が発射したものを収集
一番近い弾を避ける対象の弾としてBlackboardに保存
弾と自身の射線上に障害物(背景)がある場合は除外する
弾と自身の射線上に障害物(背景)がある場合は除外する(「LineTraceByChannel」でテスト)
▲
▼
AttackShortService、AttackLongService
†
近距離、遠距離用攻撃サービス
「Event Receive Activation」でアクティブになったタイミングで、短距離、遠距離武器の発射ボタンを押し始める
「Event Receive Deactivation」でサービスを抜けるタイミングで、短距離、遠距離武器の発射ボタンを離す
▲
▼
BoostUseService
†
ブーストボタン押しサービス
「Event Receive Activation」でアクティブになったタイミングで、ブーストボタンを押す
「Event Receive Deactivation」でサービスを抜けるタイミングで、ブーストボタンを離す
「Event Recieve Tick」でブーストゲージが指定以下になったらブーストボタンを離す。一定以上回復したら再度押す。
▲
▼
Task
†
▲
▼
AvoidMissile
†
ミサイル回避挙動。大抵迂回して飛んでくるので横に避けつつ、通り過ぎると反転まではしないので前進して回避する。
自身から見て、敵との方向から垂直方向(左右)に回避する
自身の右方向と左方向に避ける際、回避すべきミサイルから遠い方に回避
合わせて正面へ向かう
ハンドガンで撃たれてたら前進は控えめに
▲
▼
AvoidHandgun
†
ハンドガン回避挙動。左右に避けるのが一番。
自身から見て、敵との方向から垂直方向(左右)に回避する
左右の壁との距離を計測。どっちかの壁が近ければ、広い方に避ける。
壁が近い方に避けると身動きが取れなくなる
両方と壁が近い場合はどうしようもないのでどっちかに。
左右どっちも広ければ、左右の移動先から相手へ攻撃できる方へ避ける
▲
▼
近距離
†
▲
▼
仕様
†
近距離範囲内
ハンドガンで撃たれているかをチェックする
ミサイルで撃たれているかをチェックする
近距離用の攻撃セットを実行
移動行動
ミサイルで撃たれていればミサイル用の回避行動をとる。+ブースト使用。
ハンドガンで撃たれていればハンドガン用の回避行動をとる。+ブースト使用。
遠距離よりもゲージギリギリまでブースト使いつつ避ける。
相手を狙いつつ現状維持行動
相手に近づく
▲
▼
ビヘイビアツリー
†
Blackboardの「Is Short Length」(近距離範囲内か)がtrueなら入る
サービスとして近距離範囲内では常時動かしたい処理を回す。
「HandgunCheckService」ハンドガンで撃たれているかチェック
「MissileCheckService」ミサイルで撃たれているかチェック
「AttackShortService」近距離用の攻撃
優先順位として、
ダメージの大きいミサイル回避
ハンドガン回避
ここに来ると狙われていないので適当な平行移動
左右に回避したら敵を狙えなければMoveToで近づく
最後ここまで来てスルーすると近距離行動以外のノードに行ってしまうので、ここで終わらせる。強制的にSuccessを返す。
▲
▼
遠距離
†
近距離とほぼ一緒。近距離用の動作が遠距離になったり、パラメーターが一部違うだけ。
▲
▼
難易度調整
†
ミッションによって難易度付け。簡素な実装だけ入れた。
1 - チュートリアル、2,3 - 弱い、4, 5, 6 - 普通
ハンドガン、「弱い」以下の場合は一定間隔でランダムに射撃を止めたりする
ミサイル、「チュートリアル」の場合は近距離に入った際に射撃を止める
▲
▼
感想
†
明らかに時間不足による調整不足感が……
もうちょっと地形を考慮したりする戦い方をしたかった