SlideShare a Scribd company logo
1 of 46
フリーランス ゲームクリエイター
中村 匡彦
はじめてのAI~
愛のあるAIを作ろう
Unreal Fest 2016 大阪
自己紹介
名前 : 中村 匡彦
ネット上では主にalweiという名前で活動中。
Twitterでは『@aizen76』でやっています。
元々はゲームプログラマー。2年前から独立してフリーに。
関西圏を中心にUE4コミュニティの拡大させるために活動中。
自己紹介
著書
Unreal Engine 4
ブループリント
逆引きリファレンス
翔泳社様より絶賛発売中
技術ライターみたいなこともやります。
比較的いつでもお仕事募集中です。
今回のお題は『AI』
UE4のAI機能群
ビヘイビ
アツリー
ブラック
ボード
AI
Controller
ナビゲー
ション
メッシュ
EQS
AI
Components
この他にもまだあります
AIの概略図
AI
Controller
ビヘイビアツリー
&
ブラックボード
キャラクター これらはそれぞれ
別物として機能
キャラクター
UE4上では『Character』クラスのことを指します。
『Pawn』クラスでもOKですがここでは『Character』に。
AIとしては見た目やコリジョン部分を担当します。
アニメーションはスケルタルメッシュにお任せ。
基本的にロジックは実装しません。
ここにAIの仕組みを乗せていくことになります。
AI Controller
AIの心臓部です。
AIに対する指示系統全般を担当。
『Character』に所有させることによって、AIとして機能。
ナビゲーションメッシュの機能もここに。
ビヘイビアツリーの起動もAI Controllerから行います。
全てのAI機能のまとめ役。
ビヘイビアツリー & ブラックボード
『ビヘイビアツリー』
AI自体の行動ロジックを決める仕組み。
ノードツリー形式にAIがどう思考するか可視化。
『ブラックボード』
AIの記憶領域(メモリー)。
AI内で各種情報を共有する際に利用されます。
この二つはお互い密接に関連性があります。
AIのセットアップ
まずはそれぞれのアセットを新規作成。
AI Controllerやビヘイビアツリーを作成しておく。
詳しい手順は公式ドキュメントにあります。
『ビヘイビアツリーのクイックスタート ガイド』
https://docs.unrealengine.com/latest/JPN/Engine/AI/BehaviorTree
s/QuickStart/index.html
ナビゲーションメッシュ
AIにレベル上のメッシュのどこが通過可能かを教える仕組み。
UE4では『Nav Mesh Bounds Volume』というアクターを
配置すると自動的に生成。
『P』キーを押すと緑色で可視化。
あとは『Move To』ノードなどを
使用するだけで利用可能。
ビヘイビアツリーの仕組み
ルートノードから始まり、必ず左側から実行し、右側へ。
ひとつ実行が終わると親ノードに戻り、次の子ノードを辿る。
実行順序を変えることはできません。
ナビゲーションメッシュを
使用しなくてもビヘイビアツリーを
利用すること自体は可能です。
ビヘイビアツリーノード
ルート
ビヘイビアツリーで最初に実行される親ノード。
何かをするわけではないですが、
ビヘイビアツリーを実行するために
なくてはならないノード。
すべてはここから。
コンポジット
各ノード間を繋ぎ合わせるために利用可能な唯一のノード。
最も重要とされるのが
『Sequence』と『Selector』
のふたつのノード。
このノードによりフローの
分岐が可能となる。
タスク
AI自体が実行する作業をまとめたノード(紫色)。
主にAIはタスクを自作して、
それらを繋ぎ合わせていくことで
制御を行うことになります。
作業が完了、もしくは失敗と判断
した場合、次のタスクへ移行。
デコレーター
各ノードにくっ付けて利用可能となるノード(青色)。
条件を設定することが可能で、
必要に応じて子ノードの実行を
強制的に停止したり、
キャンセルすることができる。
サービス
デコレーターと同じくノードにくっ付けます(緑色)。
タスクとは別作業を並列に何か
してほしいという場合に利用。
AIの状況を監視したい等のケース
によく利用されます。
標準ノードはほとんどない。
まずはコンポジットとタスク!
何はともあれ、まずはコンポジットとタスクを理解しましょう!
このふたつのノードさえ理解していれば、
とりあえずなんとなくでもビヘイビアツリーは使えます。
不便だなと感じてきたらデコレーターとサービスも併用し、
『あ、こりゃ便利や!』と思ったらそれで十分です。
フロー制御(Sequence)
Sequenceノードを使うとタスクを左から順番に実行します。
ひとつでも失敗が発生すると
実行を停止して親ノードに
処理を戻します。
全てのタスクが成功を返すと
Sequenceも成功を返します。
フロー制御(Selector)
Selectorも左から順にタスクを実行しますが判定が違います。
こちらはひとつでも成功
すると親ノードに処理を
戻してしまいます。
全てのタスクが失敗すると、
Selectorも失敗を返します。
タスクの成功・失敗の判断
分岐に利用するタスクの成功と失敗の判断は、
『BTTask_Blueprint_Base』クラスにある『Finish Execute』
というノードを使用して判断します。
引数ピン『Success』により、
成功・失敗を判断し、タスク実行を
終了して次のタスクへ移行します。
フロー制御まとめ
『Sequence』
・子ノード全てが成功を返す→Sequenceも成功を返す
・子ノードいずれかが失敗を返す→Sequenceも失敗を返す
『Selector』
・子ノード全てが失敗を返す→Selectorも失敗を返す
・子ノードいずれかが成功を返す→Selectorも成功を返す
変数共有の仕組み(ブラックボード)
各ブループリント内でタスク、サービスなどで変数を
利用する場合には『ブラックボード』を使用します。
変数共有の仕組み(ブラックボード)
『Set~』『Get~』を使って『Key』に指定した変数を作成し、
そこに値を代入、取得すればAI内での変数共有が可能に。
AI作成の実践
AI Components
AI Components
コンポーネントとしてAI用のものが用意されています。
・Pawn Sensingコンポーネント
・Pawn Noise Emitterコンポーネント
・AI Perceptionコンポーネント
・AI Perception Stimuli Sourceコンポーネント
Pawn Sensingコンポーネント
AIにSense(感覚)を与える
ことができるコンポーネント。
『視覚』と『聴覚』を感じる
ことが可能となり、
範囲内にいるアクターを
自動的に検知できるように。
Pawn Sensingコンポーネント
『OnSeePawn』&『OnHearNoise』イベントで通知。
Pawn Noise Emitterコンポーネント
『Make Noise』で音を実際に発生させる。
『OnHearNoise』イベントでAIが音を検知可能。
AI Perceptionコンポーネント
Pawn SensingコンポーネントはSense(感覚)で、
AI PerceptionコンポーネントはPerception(知覚)を検知。
知覚はより複雑な感覚検知が可能となる。
AI Perception Stimuli Sourceコンポーネントを使うと
登録するSense Classを指定することができる。
AI Perceptionコンポーネント
オリジナルの感覚クラスが作成可能で汎用性重視。
デフォルトで用意されている『AI Sight Config』クラスでは
敵、味方、それ以外を見分けることが可能。
更に視界に入ったアクターだけではなく見失った場合でも
そのアクターを通知することができる。
AI Perceptionコンポーネント
Pawn Sensingコンポーネントと比べて、直感的ではない。
使い方もドキュメントは存在せず、ソースコードを読んで
理解できる人でないと
使いこなすのは難しい。
Epic Gamesが拡張前提の設計で
作っているようなので今後に期待大。
Environment Query System
EQS(環境クエリーシステム)
レベル上から情報を収集し、必要な情報をAIへと
回答(クエリー)を与えてくれるシステム。
例えば、広いマップ上のどこへ移動するのが最適か?
敵に囲まれた時、どこへ逃げるのが最適か?
なるべく弱ってて、なるべく近くにいるのはどの敵か?
簡単に情報を収集してスコア形式で受け取ることが可能。
EQS(環境クエリーシステム)
プレイヤーから逃げるのに、最適な位置を探しだすEQSの例。
距離やトレース情報、
内積による角度計算を行い、
その位置へは到達可能かを
EQSが判断してスコア化する。
スコアが最も高いものを利用する。
EQSの視覚化
『EQSTestingPawn』を作成して配置するとスコアを可視化可能。
EQSの要素(ジェネレータ)
アイテムと呼ばれる、位置やアクターを生成するモノ。
ジェネレータが生成した、アイテムをスコア付けして、
最も高いものをビヘイビアツリー上で受けとることが可能。
EQSにおいて最も重要な部分。
実際にスコアをつけるためのテスト基準。
このテストで最も良いスコアをだしたアイテムが
結果としてビヘイビアツリーへと返る。
距離や内積やトレースなどの標準のテストがあり。
テスト次第でAIが賢くなったりバカっぽくなったりする。
EQSの要素(テスト)
EQSの要素(コンテキスト)
ジェネレータやテストで基準となる何か。
例えばプレイヤーを基準に動きたいという場合には、
プレイヤーをコンテキストとしてAIに与えて、
プレイヤー位置などをEQSの判断材料とすることが可能。
コンテキストはアクターとして取得できれば何でもOKです。
ゲームプレイデバッガー
ゲームプレイデバッガー
実行中に『’』キーを押すとAIのデバッグ機能が起動。
※英語キーボードのみ。
日本語キーボードは
コンソールコマンド
『EnableGDT』を
プレイ中に入力すると
ゲームプレイデバッガー
が起動します。
ゲームプレイデバッガー
ビヘイビアツリーやEQSのスコアやナビゲーション情報など、
あらゆるものを視覚化。
リアルタイムに確認可能なので、
実行しながらAIの動作検証が
可能となっています。
一部エディタの環境設定が必要。
まとめ
UE4のAI機能を軽くみてきました。
実はまだ他にもAIの機能があります。(群集AIとか)
UE4のAIは今もまだ発展途上という感じですが、
一部は既にかなり実用的なものばかりです。
ぜひこれらのAI機能を使って可愛いAIを作ってあげてください!
ご静聴いただき、
ありがとうございました!

More Related Content

What's hot

目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
 

What's hot (20)

目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
UE4.25 Update - Unreal Insights -
UE4.25 Update - Unreal Insights -UE4.25 Update - Unreal Insights -
UE4.25 Update - Unreal Insights -
 
猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~
UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~ UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~
UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
大規模CSゲームにおけるライトマス運用
大規模CSゲームにおけるライトマス運用大規模CSゲームにおけるライトマス運用
大規模CSゲームにおけるライトマス運用
 
UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎
 
UE4モバイルブートキャンプ
UE4モバイルブートキャンプUE4モバイルブートキャンプ
UE4モバイルブートキャンプ
 
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引きカリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 

Similar to はじめてのAI~ 愛のあるAIを作ろう (6)

第1回UE4名古屋勉強会
第1回UE4名古屋勉強会第1回UE4名古屋勉強会
第1回UE4名古屋勉強会
 
絵心がなくてもわかる UE4絵作りのコツ
絵心がなくてもわかるUE4絵作りのコツ絵心がなくてもわかるUE4絵作りのコツ
絵心がなくてもわかる UE4絵作りのコツ
 
第5回ue4ハンズオンセミナー
第5回ue4ハンズオンセミナー第5回ue4ハンズオンセミナー
第5回ue4ハンズオンセミナー
 
UE4とUnrealC++について
UE4とUnrealC++についてUE4とUnrealC++について
UE4とUnrealC++について
 
あんりあるフレンズ ~あなた、アンリアルがとくいなけものなんだね~
あんりあるフレンズ ~あなた、アンリアルがとくいなけものなんだね~あんりあるフレンズ ~あなた、アンリアルがとくいなけものなんだね~
あんりあるフレンズ ~あなた、アンリアルがとくいなけものなんだね~
 
同人ゲームサークルが単独でコンソール機向けにゲームを出すコト
同人ゲームサークルが単独でコンソール機向けにゲームを出すコト同人ゲームサークルが単独でコンソール機向けにゲームを出すコト
同人ゲームサークルが単独でコンソール機向けにゲームを出すコト
 

More from Masahiko Nakamura

More from Masahiko Nakamura (20)

UE4のコンポジット機能をもっと深く使ってみた
UE4のコンポジット機能をもっと深く使ってみたUE4のコンポジット機能をもっと深く使ってみた
UE4のコンポジット機能をもっと深く使ってみた
 
映像制作者向け UE4で作る映像制作ワークショップ
映像制作者向け UE4で作る映像制作ワークショップ映像制作者向け UE4で作る映像制作ワークショップ
映像制作者向け UE4で作る映像制作ワークショップ
 
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則についてUE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
 
ゲームエンジンを活用して同人ゲームを完成させるノウハウについて
ゲームエンジンを活用して同人ゲームを完成させるノウハウについてゲームエンジンを活用して同人ゲームを完成させるノウハウについて
ゲームエンジンを活用して同人ゲームを完成させるノウハウについて
 
UE4でパノラマVRをやってみよう
UE4でパノラマVRをやってみようUE4でパノラマVRをやってみよう
UE4でパノラマVRをやってみよう
 
モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作についてモバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
 
GGJ2017 事前勉強会 UE4編
GGJ2017 事前勉強会 UE4編GGJ2017 事前勉強会 UE4編
GGJ2017 事前勉強会 UE4編
 
拳と筋肉とバーチャリアリズム
拳と筋肉とバーチャリアリズム拳と筋肉とバーチャリアリズム
拳と筋肉とバーチャリアリズム
 
ブループリントマニアックス
ブループリントマニアックスブループリントマニアックス
ブループリントマニアックス
 
UE4映像制作ハンズオン@大阪
UE4映像制作ハンズオン@大阪UE4映像制作ハンズオン@大阪
UE4映像制作ハンズオン@大阪
 
Unreal engine 4でのリアルタイムセルルック3DCGアニメーション
Unreal engine 4でのリアルタイムセルルック3DCGアニメーションUnreal engine 4でのリアルタイムセルルック3DCGアニメーション
Unreal engine 4でのリアルタイムセルルック3DCGアニメーション
 
ブループリント+ビジュアルスクリプトと仲良くやる方法
ブループリント+ビジュアルスクリプトと仲良くやる方法ブループリント+ビジュアルスクリプトと仲良くやる方法
ブループリント+ビジュアルスクリプトと仲良くやる方法
 
ゲームジャムでの チーム制作における 大事なこと
ゲームジャムでのチーム制作における大事なことゲームジャムでのチーム制作における大事なこと
ゲームジャムでの チーム制作における 大事なこと
 
Bullet TrainとOculus Touchの衝撃
Bullet TrainとOculus Touchの衝撃Bullet TrainとOculus Touchの衝撃
Bullet TrainとOculus Touchの衝撃
 
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについてC++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
 
Powerful of blueprint visual scripting
Powerful of blueprint visual scriptingPowerful of blueprint visual scripting
Powerful of blueprint visual scripting
 
Unity5とUE4の比較
Unity5とUE4の比較Unity5とUE4の比較
Unity5とUE4の比較
 
50分でわかるブループリントについて
50分でわかるブループリントについて50分でわかるブループリントについて
50分でわかるブループリントについて
 
第一回 関西UE4ハンズオンセミナー
第一回 関西UE4ハンズオンセミナー第一回 関西UE4ハンズオンセミナー
第一回 関西UE4ハンズオンセミナー
 
ゲーム開発環境の自動化
ゲーム開発環境の自動化ゲーム開発環境の自動化
ゲーム開発環境の自動化
 

はじめてのAI~ 愛のあるAIを作ろう