ゲーム作りの合間に息抜きのゲーム作り パート7

ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)

本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。

——–本日!——– 『ゲーム作りの合間に息抜きのゲーム作り パート6』で作成したAIの振る舞いを変更せず、BPのみから、ビヘイビアツリー(以後、BT)とブラックボードを使う変更を行いました。

NPCBTTask_MoveはいろいろやってるうちにBTに用意されているMoveToを使うことになったので、破棄。 20160529221509

NPCキャラのBPのBeginPlayの後半を変更。 カプセルコンポーネントにいれているチームタグをNPC_AIControllerに送っているだけです。 20160529221608

NPC_AIControllerに送ったタグを変数にいれて、ブラックボードを使う宣言をして、ブラックボードにチームタグを書き込んで、ビヘイビアツリーを起動してます。 ブラックボードのチームタグはまだ使ってません。 今後どうするかは検討中。 NPCNPC_AI・ブラックボードの3つにタグの変数をたらい回しにしてるのがあまり気持ちよくない。 20160529221620

ビヘイビアツリーが起動されたら、シーケンスの左から処理をしていきます。 FlagSearchで全フラグを調べて、向かうFlagを決める。行く先が決まったら、MoveToで向かう、決まらなかったらずっと調べ続けるという流れです。 20160529221838

NPCBTTask_Searchの中でTargetFlagBTにセットした値をブラックボードのTargetFlag(Flagクラス)にいれてます。 20160529221859

BlackBoardKeyにTargetFlagをいれてます。 20160530001312

NPCBTTask_Searchの中身。 AIからタグと本体を持ってきてます。 処理の中身は前回と同じです。 20160529221704 20160529221740

全部のFlagをみて、行く先が見つかったら、Success! 目的地に向かいます。 行く先が見つからなかったら、3秒まってfailure! 目的地を探し続けます。 20160529221746

~今後~ ブラックボードに、変数をインスタンス全域で同期させるチェックがあったからここにFlagクラス情報を持たせて、レベル上を毎回全部チェックしなくていいようにできないかな。 ここの変数に持たせたクラスが参照だったら、レベルBPで最初に全部突っ込んでおいて、あとはここを見続けるだけでいいんだ。 そうでなかったら、フラグが変更されるたびにブラックボードの値を書き換えにいく。 レベルBPやアクターからブラックボードの数値を書き換えにいけるのかなぁ

NPCユニティちゃんが自動で生成されて、チームタグを召喚地点によって変化するようにしたいな。