さて、最近はUEでゲームを作るぞ!と連呼してる私ですが、ズボラな性質なので、手を動かすより先にマーケットプレイスで色んなアセットを物色(サーベイ)したりしてます。
今調べてるのはAI関係のアセットです。
UE4でAIというと、NPC全般の挙動を指します。例えば、プレイヤーキャラに付いてくる仲間キャラ、村に住んでいる村人、そして敵キャラなどです。
というわけで、今回の記事ではマーケットプレイスで見つけたAI関係のアセットについてざっくりと紹介していきます。
UEに用意されているAI機能
まずそもそも論として、UEには標準でAI機能が用意されてます。
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/ArtificialIntelligence/
UEではAIを実装するのにビヘイビアツリーを使います。
ビヘイビアツリーでは「もし○○だったら△△する」みたいな条件分岐のツリーを作成出来て、NPCキャラはビヘイビアツリーに沿って行動します。
例えば、警備員のAIを実装するとしたら、普段は決められたルートを巡回してますが、敵(プレイヤーキャラ)を発見したら追跡して攻撃する。みたいなロジックを作れるでしょう。
FF12でガンビットを使いこなせるような人ならビヘイビアツリーも使いこなせるでしょう。
UEのAIが使える3つの機能についても紹介します。
これはUnityユーザーにもおなじみのナビメッシュのヤツです。
事前に生成しておいたナビメッシュに沿ってNPCを移動できます。例えば迷路に沿ってNPCが移動して出口まで向かうといった事も可能です。
動かないマップに対してはナビメッシュで対処できますが、動き回る障害物や歩き回ってる他のNPCはどうやって回避するの?というと、対障害物相対速度(RVO)やDetour群衆マネージャ機能で実現できるそうです。
また、Navigation Invokerを使えばランタイムでナビメッシュを生成する事も可能です。
さらに、NavLink機能を使えばナビメッシュが繋がってない所でも手動でリンクできます。例えばNPCが高所からジャンプして下に降りるといった事が実現できます。
②Environment Query System(EQS:環境クエリシステム)
NPCが環境に対してクエリできるシステムです。
何のこっちゃ?というと、例えばNPCが「おなかが空いたなあ」と思った時に、神様(ゲームシステム)に対して、「一番近くに存在する食べ物の場所を教えてください!」とお願い(クエリ)すると、その場所を教えてもらえるのでそこに移動できる。といった事が実現できます。
ちなみに2015年くらいからある機能ですが、未だに実験的機能のままです。
UE4のEQS(Environment Query System)が楽しい
NPCに聴覚や痛覚、視覚、触覚をもたせる事ができる機能です。
つまり、「何かが聞こえるぞ」とか「何かが見えたぞ」「何かに攻撃されたぞ」「何かにどつかれたぞ」といった時にトリガーが発行されて、それに対する反応を実装できます。
とまあ、このようにUEには元々便利なAI機能が実装されており、柔軟にAIを実装できる事が分かります。
「じゃあ何でマケプレには色んなAIアセットがあるんだろう?」という話ですが、UEのAI機能には問題があるっちゃあるからです。
まず、箱から出してすぐ使えるような敵AIとか味方AIが用意されてないっぽいので、自分でビヘイビアツリーの使い方を勉強してAIを実装する必要があります。
それがまあ面倒という話があります。
他にも、例えば味方のNPCに梯子の上まで付いてきて欲しい時に、どうやってNPCに梯子を上らせるのか?みたいなシチュエーションは標準機能だけでは解決できません。
どうするべきかググったら、梯子の下と上をNavLinkで繋げて、梯子の下までNPCが来たら、一旦ナビメッシュでの移動を止めて自力のロジックで梯子を上らせて…みたいな、まあ色々工夫すればできるという話ですがやっぱり面倒です。
How would you add ladders to navmesh based movement?
というわけで、マケプレのAIアセットに期待するのは、標準機能よりサクッと簡単に、かつ色んなシチュエーションに対処できるNPCが作れる機能という事になるでしょう。
鉄板のAIアセット「AI Behavior Toolkit」
https://www.unrealengine.com/marketplace/ja/product/ai-behavior-toolkit
マケプレには色んなAIアセットがありますが、やっぱり鉄板に見えるのはこのAI Behaviour Toolkitです。
評価数180で価格は100ドルです。
まず、箱から出してすぐ動作する市民NPCや味方NPC、敵NPCの例が色々用意されてます。
RPG的なNPC以外にも、シューターゲームの敵AIの例もあります。
他にも、飛行するAIの例や、NPC同士が会話、交流したり日常生活を送る例、パルクールの例ではNPCが障害物をジャンプしたり、登ったり、しゃがんだりして突破します。
ゾンビAIや水中を泳ぐ魚AIの例まであります。
先ほど問題になった、どうやってNPCに梯子を上らせるか?という話も、このアセットでは梯子を上る機能が用意されてます。
という訳で、このアセットを使うとUE標準よりもサクッと簡単に、かつ色んなシチュエーションに対応できるNPCが作れそうです。
他にも、マルチプレイヤーゲームもサポートされてます。
ALS(Advanced Locomotion System)の組み込み方についてのチュートリアル動画もあります↓
という訳で、NPCが作りたいならまずはこのアセットを試してみて、足りなければ標準機能や他のAIアセットにも手を出してみる…という流れが良いのではないでしょうか。
「GOAP NPC」
これはビヘイビアツリーとは違ったGOAPという方法でNPCのAIを実装できます。
評価数は35で価格はなんと無料です。
GOAP(Goal Oriented Action Planning:目標志向アクションプランニング)とは何か?というと、目標を与えると、その目標を達成するために、AIが知っている手段を組み合わせて計画を立てて行動してくれるみたいなヤツです。
例えば、おなかが空いたAIは、お腹を満たそう!という目標を立てます。
お腹を満たすためには何かを食べる必要があるので、じゃあプリンを食べよう!という行動を決めたとします。
しかし手元にプリンが無いので、プリンを手に入れる必要があります。プリンを手に入れるには買うとか作るとかしないといけません。じゃあプリンを作ろう!
プリンを作るにはレシピが分からないといけないので、レシピを調べよう!
レシピが分かったら材料を集めよう!
みたいな感じで、目標から逆算して行動計画を立てて実行してくれるものだそうです。
ビヘイビアツリーは複雑すぎるしメンテが大変だから、GOAPの方がいいよ!という話だそうです。
GOAPが実際のゲームで使われてる有名な例としては、例えばF.E.A.Rで使われてるそうです。
「UtilityAI with Replicated Weapon, Stat, and Status Effect Systems(武器、ステータス、エフェクトの各システムを再現したUtilityAI)」
これまたビヘイビアツリーとは異なるユーティリティAIという方法でAIを実装しています。
評価数は29で、これまた価格は無料というかオープンソースソフトウェアです。
ユーティリティAIでは、NPCは自分が一番満足度が高くなるような行動を取ります。
例えば、NPCに20万円あげるとします。服が好きなNPCは、20万円もらったら服を買うのに使うでしょうし、パソコンが好きなNPCはパソコンを買うのに使うでしょう。
なんかそんな感じでそれぞれのNPCに個性を持った行動を取らせる事が可能らしいです。
【UE4】Utility Based AI(プロジェクト付)
「Vis AI」
https://www.unrealengine.com/marketplace/ja/product/visai-companion-an-ai-framework
これは高度なAIが作れるアセットだそうです。
これまた最近永久無料化しました。評価数は21です。
このアセットが何がどうすごいのか、最初はサーパリ分かりませんでしたが、ドキュメントによると、これまでに挙げたビヘイビアツリーとGOAP、それからユーティリティAIを全て組み合わせて使えるから高度で柔軟なAIが作れるんだと、まあ要するにそういう話みたいです。
そういう感じで凄いらしいVisAIですが、あんまり使われてないみたいなので出回ってる情報が少ないです。
あと、無料とは言え、仲間NPCを作りたい時は「Vis AI -Companion-」という130ドルの別バージョンのアセットも必要になります。
しかももうすぐVer2.0が出るらしく、この無料アセットは2.0にはアプグレできないから2.0を買わないとメンテがされなくなる気がします。
他の目ぼしいAIアセット
DoN’s 3D Pathfinding for Flying AI
評価数:108 無料
キャラクターを指定した目的地に向かって移動させる事ができます。障害物などを適切に回避して移動経路を見つけてくれます。ナビメッシュでは地面に沿った経路探索を行いますが、このアセットでは3次元に対応してるので、空を飛ぶロボットなどでも実行できます。障害物が動的に移動する場合でも対応できます。
Smart AI
評価数:93 40ドル
AI Behavior Toolkitに次ぐ人気のAIアセットです。価格もお手頃。
近接戦闘、遠距離戦闘に対応していて、カバーアクションもしてくれます。高所からジャンプ、谷間をジャンプで飛び越える、壁をよじ登るみたいな機能も一応あります。砲台AIや動物AIもあります。スポナーもあります。マルチプレイヤー対応。
Universal Monster
評価数:24 120ドル
敵モンスターのAIに特化したアセットです。敵にフォーメーションを組ませたりできます。
Easy Survival RPG v3
評価数:244 300ドル
これはAIアセットでも何でもないですが、こういうゲームテンプレート系のアセットには割と敵などのNPCも用意されていますので例として挙げてみました。
NPC Manager System
評価数:19 100ドル
町の住民的なNPCを作れます。それぞれのNPCにタスクを設定できます。タスクでは特定の場所に行くとか、特定のルートを歩き回るとか設定できます。NPC同士を会話させる事も出来ます。プレイヤーとも会話できます。
Daily Life AI(日常生活AI)
評価数:14 20ドル
人間みたいに生活するAIを作れます。NPCは仕事をしたり、ヒマな時は椅子に座ったり壁にもたれたり、他のNPCとぷらぷらします。夜はベッドに行って寝ます。空腹になると食べ物を探します。
Animal Behavior Kit Pro(動物行動学キットPro)
評価数:47 100ドル
動物の生態系AIが作れます。動物は歩き回って食べ物や水を探したり、攻撃したり、仲間を探したり、夜は家に帰って寝ます。動物はグループを形成します。プレイヤーが動物を飼いならす仕組みもあります。動物は飢えや老衰で死にます。動物が死ぬとリスポーンします。
Ecosystem AI
評価数:12 20ドル
動物の生態系AIが作れます。それぞれの動物は水を探して飲んだり、食べ物を探して食べたり、狩りをしたり天敵から逃げたり、睡眠したり、繁殖したりします。
Chicken AI
評価数:2 10ドル
ニワトリの生活をシミュレートするAIです。ニワトリは食べる、飲む、休憩、卵を産む、逃げる、探索といった行動を行います。
Companion AI
評価数:5 30ドル
簡単に仲間AIを作れるアセット。AIの機能には、付いてくる、待機、攻撃、モノを取ってくる、があります。
NPC最適化系アセット
Open World AI Spawn System
評価数:74(一カ月間無料化) 15ドル
遠くのNPCを自動的に削除したり、近くに来たらリスポンする事で負荷を最適化してくれるアセットです。
20ドルのマルチプレイヤー対応版もあります。
World Director NPC – PRO. Now with multiplayer.(ワールドディレクターNPC – PRO. 今度はマルチプレイヤーで。)
評価数:19 140ドル
オープンワールドゲームなどで大量のNPCを出した時にFPSが下がらないように最適化してくれます。遠くのNPCはビヘイビアツリーが停止して歩くだけになったりする事で負荷を減らします。
100ドルの通常版や、40ドルのWorld Director Actorというバージョンもあります。
Population Control PRO – Populate your world.(人口管理 PRO – あなたの世界に人口を投入します)
評価数:16 100ドル
NPCのスポーンを管理できます。NPCが死んだらリスポーンしてくれます。このアセットはWorld Directorアセットとの連携が念頭に置かれています。
30ドルのライト版もあります。
Open World NPC Optimization with network support(オープンワールドNPCの最適化(ネットワーク対応))
評価数:15 40ドル
画面に映ってないNPCをカリングする事で最適化して負荷を減らすアセットです。
AI Optimizer
評価数:8 30ドル
遠くのNPCを非表示にする事で負荷を削減します。こういうのを普通に実装すると、大量のスポーンで処理落ちしがちなのですが、このアセットでは1フレームでのスポーン数を制限してちょっとずつ小分けでスポーンする事で負荷を抑えてるらしいです。
NPC Optimizator
評価数:4 35ドル
遠くのNPCの影を非表示にしたり、アニメーションやTickの頻度を下げたりして最適化してくれるアセットです。
AI付き単発生物系アセット
AI付きの生き物の3Dモデル系のアセットです。
AI Dinosaurs Pack
評価数:2 15ドル
歩き回る、狩り、つがいになるなどの基本的な振る舞いを備えた4種類の恐竜パックです。
Medhue Raccoon
評価数:1 20ドル
基本的な振る舞いが実装されたアライグマです。作者のMedhueさんはこれと同じようなノリで他にもチャウチャウ、フェネック、オウム、シロクマ、リャマ、コブラ、ラクダ、パイソン、アナコンダ、エイ、コウモリ、オオカミ、カラス、ペンギン、豚、イノシシ、リス、シャケ、クマ、ゴキブリ、ハエ、クモ、トンボ、ダチョウのアセットを出してます。
Fish
評価数:10 50ドル
サケとブルーギルとマグロのセットです。
作者のLiving Systemsさんは、これと同じようなノリで馬、鳥、小動物(ウサギ、リス、ネズミ)、イノシシ、アヒル、豚、オオカミのアセットも出してます。
Stoopid Zombies
評価数:32 13ドル
プロトタイピング用のシンプルなゾンビAIです。
ゾンビに襲われて死んだ人がゾンビになるサンプルとかもあります。
その他AIアセット
その他のAIアセット類です。せっかくなので網羅的にするためにあまりよく分かってないアセットも諸々掲載してみます。説明の文章は概要欄の文章を機械翻訳しました。
Enemy AI Constructor
評価数:24 40ドル
Enemy AI Constructorは、一人用ゲームの敵を作成することができる、高度にカスタマイズ可能なブループリントシステムです。
ProAI
評価数:18 45ドル
ProAIは、AIキャラクターと強力なスポーン・マネージャー・システムをベースにしています。一つのAIをマップに配置したり、強力なスポーンマネージャーを使用してAIのスポーンをコントロールすることができます。ProAIは非常に柔軟性があり、開発時間を大幅に短縮することができます。
Shooter Simplified AI
評価数:16 9ドル
簡単な統合でプロジェクトに貢献する簡易型シューターAI
Floating AI Movement(フローティングAIムーブメント)
評価数:14 20ドル
障害物回避、ダイナミックリパッシング、スプライン追従が可能なユニバーサルフローティングAI。(パス移動ができるようになりました!)
Advanced Insects System
評価数:11 50ドル
各種甲虫、ゴキブリ、アリ、クモの刺激に適したシステムです。
AI Enemies – Assault Soldier
評価数:9 45ドル
一般的なアサルトソルジャーの挙動を持つキャラクターNPC。ゲーム準備
Survival Combat and AI
評価数:8 25ドル
シンプルな戦闘とAIによるサバイバルゲーム。
Artificial Intelligence: Q-Learning(人工知能:Q-ラーニング)
評価数:8 9ドル
NPCやその他の自律型エージェントに、強化学習(人間やその他の動物の学習方法を模倣した、意思決定へのアルゴリズム的アプローチ)によって新しい行動を獲得する能力を与える。
AI Patrol & Action System
評価数:8 100ドル
AIパトロール&アクションシステムは、ゲームキャラクターの様々な行動やパトロールシステム、また多くの設定による様々なフォーメーションによる集団移動などを作成できる、非常に強力で柔軟なツールです。あなたのゲームをライブにしよう
Traffic AI System
評価数:8 50ドル
あなたのプロジェクトで交通に必要なものがすべて揃っています。信号機と8台の車両がすべて含まれています。
Action AI System feat. Stealth
評価数:8 20ドル
ステルス機能を備えたアクションゲームのAIシステムを簡単に実装できる
Mob Simplified AI
評価数:7 9ドル
簡単に統合できるプロジェクトのための簡素化されたAI
Easy Car AI
評価数:7 70ドル
このアセットパックを使えば、どんな車ベースのゲームでも簡単に開発することができます。ナブメッシュとスプラインに対応!
AI Shooting
評価数:7 10ドル
シューティングゲームのAI。射撃、カバーシーク、側面攻撃、パトロール、ランダムな性格(勇気、狙撃、カバー射撃など)などの動作を含む。
AI Melee
評価数:7 10ドル
AI Meleeシステムは、統合されたブループリントを使用して100%簡素化されました。
AI Spawn System
評価数:6 20ドル
AIスポーンシステム 4.18+
Advanced Flock System
評価数:5 50ドル
魚は、任意の複雑な衝突と任意のプリミティブオブジェクトに反応し、任意のポーンまたは文字に反応します。このプラグインはマルチスレッドに対応しています。
Advanced Fly Insects System
評価数:5 50ドル
昆虫は、任意のプリミティブなオブジェクトに複雑な衝突を起こし、任意のポーンやキャラクターに反応します。そして、アイドルポイントを見つけます。
Diverse AI(多様なAI)
評価数:5 35ドル
様々なコンテキストで飛行および歩行AIをサポートするAIフレームワーク、インスタンス編集可能な多数の変数を持つ完全にカスタマイズ可能なドラッグアンドドロップ/スポーンBP、クイックチェンジAIベースビヘイビア
Physical Boids – A Physics Based Flocking AI
評価数:5 14ドル
Physical Boids は、各ボイドが Unreal の物理エンジンに付着する群れ AI です。使いやすく、鳥や魚などの群れ型エージェントのシミュレーションに最適です。
Nav Mesh Vehicle AI
評価数:4 6ドル
エンジンのデフォルトナビゲーションシステムを使用した、シンプルで堅牢な車両AIの処理方法です。プレイヤーがコントロールする車両と同じ移動コードを使用して、任意の車両ポーンで直接動作します。マルチプレイヤーに対応。
General AI Framework
評価数:4 12ドル
General AI Frameworkは、UEゲーム用のAIを設計するための基本的なフレームワークです。このフレームワークは、異なるプロジェクトに簡単に適用することができ、同じフレームワークの下で異なるAIコントローラを作成することができます。
AI Pro Spawner
評価数:3 5ドル
これはシンプルで簡単なAIスポナーで、いくつかのオプション(ウェーブシステム、AIスポーン、AIリスポン、ゲーム内のAIの制限…)があります。
Advanced AI Spawn System
評価数:3 30ドル
アドバンスドAIスポーンシステム 4.18+
Artificial Intelligence: Emotions(人工知能:感情)
評価数:2 12ドル
人間や動物の感情を忠実に表現することで、NPCに生き生きとした行動や表情を与えることができます。
Squad & Team Combat AI(スクワッド&チーム戦闘AI)
評価数:2 10ドル
行動ツリーを使用しない、分隊やチームの戦闘AIソリューションです。AIはワールドジオメトリの中で自動的にカバーを見つけ、分隊長からどのターゲットと戦うかなどの命令を受け取ります。
Phase Ai
評価数:2 65ドル
使いやすいAiシステム、豊富な機能。近接戦闘に重点を置いていますが、あらゆる用途に使用できます。
AI Tools
評価数:2 100ドル
オープンワールドのシングルプレイヤー・ゲームにおいて、生活世界のシミュレーションを作成するためのAIツール。
Companion Components
評価数:2 20ドル
NPCコンパニオンとの交流を深めるためのBPセットです。
AI Optimization System
評価数:2 5ドル
オープンワールドとクローズドワールドで、スポーンボットを素早く設定し、負荷を軽減できるシンプルなシステムです。
Simple AI – Boid Flock Movement
評価数:2 20ドル
鳥/魚/ECTの群れ移動のためのシンプルな2次元AIシステム
Aircraft war game with AI
評価数:2 40ドル
AIによるシミュレーション飛行・航空機戦争ゲーム
Simple AI Combat Component(シンプルなAI戦闘コンポーネント)
評価数:1 5ドル
キャラクターとAIのためのモジュラーコンバットコンポーネント。
BASIC ENEMY AI
評価数:1 15ドル
BASIC ENEMY AI」パッケージには、さまざまな能力や振る舞いを持つAIが含まれています。このパックはマルチプレイヤー用に作られておらず、100%ブループリントであることに留意してください。
Stoopid Turrets
評価数:0 15ドル
プラグアンドプレイAIタレット、何も考えず、ただ撃つだけ 🙂
AI Turret Component(AIタレットコンポーネント)
評価数:0 20ドル
このコンポーネントにより、多くのタレットを素早く簡単に設置することができます。また、マルチプレイで動作させることも可能です。
Easy AI Toolkit
評価数:0 50ドル
Easy AI builder Toolkitは、プリセットやサンプルだけでなく、AIの作成プロセスを簡略化するための複雑なシステムを含んでいます。
Advanced AI Perception(高度なAI知覚)
評価数:0 15ドル
AdvancedAIPerceptionコンポーネントには、フィルタやレーティングを使用してターゲットを選択できるロジックが含まれています。