【UE100日チャレンジ】ビヘイビアツリーで敵AIを作成!トランスフォーム操作によるギミック制作も
初学者がUnreal Engineによるゲーム制作に100日取り組んで、どこまでプロの開発者に近づけるのかという本企画。今回は第8弾となります。
前回に引き続き、『Unreal Engine 5で極めるゲーム開発』で学習を進めています。今回はAIやギミックなど、動きのある要素を作りました。
Unreal Engine企画第8弾!
Unreal Engine100日チャレンジに挑戦している、Neruです。
この企画は、Unreal Engineの初学者である筆者が、100日間の学習でどれだけのものを作れるのかというチャレンジ企画です。
初回の記事で、この企画の詳細と、筆者の経験値がどの程度なのかを説明しています。
前回は、関数、マクロ、インターフェースなど、様々な場所で使いまわせるプログラムについて学びました。その際、多くのバグにぶつかったため、それらをどう解消していったかをまとめています。
今回は、AIの作り方と、オブジェクトの動かし方について学び、こちらを追いかけてくる敵や、ブロックパズルなど、ゲームとして楽しめる要素を作成しました。
それぞれの要素について解説し、完成品もお見せするので、ぜひ参考にご覧ください。
今回学習したこと
今回学習したことは、ビヘイビアツリーとトランスフォームについてです。どちらも、ゲーム内の物体に動きが付けられる要素です。ゲームとして楽しいものが作れますし、触っていて面白みを感じられました。
ビヘイビアツリーとは?
ビヘイビアツリーとは、ゲーム内のキャラクターを動かすためのAIを作成するために便利なツールです。AIと聞くと複雑で専門的なイメージですが、ビヘイビアツリーはゲームデザイナー向けの機能になっており、視覚的、直感的にAIを作っていくことが可能です。
ツリーという名前のとおり、ビヘイビアツリーはツリー状の構造を持っており、根っこの部分から広がっていくようなイメージで設計します。
このツリー上の処理は、左から右、そして上から下に実行されます。そして、それぞれに条件を設定することで、複雑な動作も作ることができます。また、各処理はブループリントを使って、細かくプログラミングすることが可能です。
このように、視覚的にわかりやすく、かつ複雑な行動パターンを作りこめることが、このツールの強みです。
トランスフォームとは?
今回学んだもう一つの要素が、トランスフォームです。トランスフォームとは、オブジェクトの位置、回転、スケールを含んだ情報のことで、オブジェクトの見た目や位置をコントロールするものです。
トランスフォームは、UEを触って最初に操作するくらい基礎的なものです。Unreal Engineのビューポート画面で物体を動かすのは基本的な操作ですが、その際に操作しているのがこのトランスフォームです。
基本的な要素であるトランスフォームですが、使いこなすのはかなり難しいです。ただトランスフォームをしっかり理解して、ブループリントと連動させて扱うことで、より高度で複雑な動きが再現できます。
今回は、このトランスフォームを計算したり、合成することによって、物体に動きをつける方法について学びました。
ビヘイビアツリーでAIを作る!
ビヘイビアツリーの使い方、ユニットの動かし方、作成したビヘイビアツリーの仕組みについて解説します。
ビヘイビアツリーの使い方
ビヘイビアツリーは、コンテンツブラウザの追加ボタンから作成できます。「AI」の項目を選択すると以下の画像のような項目が表示されるので、「ビヘイビアツリー」を選べば、現在選択しているフォルダ内に追加されます。
ビヘイビアツリーは独自のエディタを持っており、ブループリントなどとは操作の方法が違いますが、直感的な操作が可能です。各ノードの下部分からドラック&ドロップすることで、ノードを設置できます。
新しいビヘイビアツリーには、「Root」というノードが最初から設置されているので、ここからノードをつなげていくことで一連の動作を作ります。
同じノードから、右と左に違うノードをつなげます。これはドラック&ドロップをすることで設計できます。ビヘイビアツリーでは、「左から右」、「上から下」が処理の順番の鉄則なので、どの順番で処理を行うかを考えながらノードを設置していきます。
黒色のノードは、コンポジットノードと言われ、単体では何の機能もありませんが、それより下の処理をどう実行するかを決めることができます。有色のノードは何らかの処理を示していて、キャラクターに動作をさせることができます。これらを組み合わせると、複雑な動きを実装できます。
ビヘイビアツリーの詳しい仕様を知りたい方は、株式会社ヒストリア様の以下のページを参照することをおすすめします。UE5のビヘイビアツリーについて、わかりやすくまとめられています。
敵の動きを作る!
今回ビヘイビアツリーを構築して作ったAIは、以下のようなものです。
AIの要件
- 1、ふだんは特定ポイントの巡回を繰り返す。
- 2、自機を見つけたら、一瞬静止したのち、走って追いかけてくる
- 3、自機を見失ったら、巡回に戻る
これらの動きを実装した様子を録画したのが、以下のポストの動画です。
#UnrealEngine100日チャレンジ 46日目✨
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) August 30, 2024
キャラクターAIについて学びました!
UEでは、ビヘイビアツリーという樹木図型のエディタでユニットを動かせます。
動画では、巡回中、敵が自キャラを認識すると追跡するというAIを実装しています。#ゲーム開発 #ゲーム制作 pic.twitter.com/YymWAGyeZV
動画を見ると、敵が自機を補足して追いかけてきているのがわかります。また、敵の動きに合わせてビヘイビアツリーも反応していることも確認できます(画面左)。
ビヘイビアツリーを別ウィンドウで開きながらゲームを実行することで、ゲーム画面を確認しながら、ビヘイビアツリーがどう動いているのかを直感的に把握することもできます。
Epic Games 公式サイト(https://dev.epicgames.com/documentation/ja-jp/unreal-engine/behavior-tree-in-unreal-engine---overview)より引用。ビヘイビアツリーの一例。