読者です 読者をやめる 読者になる 読者になる

Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

第5回 UE4ぷちコン作品を作りました

今回もUE4のゲームコンテストこと、UE4ぷちコン用の作品を作って応募しました。ぷちコンの詳細については以下から。

historia.co.jp

今回のテーマは愛(AI)ということで、それを題材にして作ったのが以下の作品です。
1080pの60fpsで録画しているのでぜひYouTube上で直接再生してみてください。

www.youtube.com

作成の経緯と再設計、再構築

実は今回もぷちコンに応募しようかなーと悩んでたのですが、どういった内容にすべきか全く思いつかず。4月11日(月)の段階までは何を作るべきかも考えつかない状態でしたが、「そうだ、AIを使うなら一度しっかりと作ってみたかったパートナーAIを題材にしてみて、そのAIとの愛の絆の話にしよう!」という半ば強引な思いつきで始めました。

そこからも色々と悩んだのですが、残り一週間未満で完成を目指すべくアセットはチュートリアルのサンプルと有料のものを組み合せて設計。
今回一番お世話になったのはフォーラムでも参考にさせていただている、Tom LoomanさんのC++サンプルゲームプロジェクトのものを多く使わせてもらっています。

Learning Resource Ongoing C++ Gameplay Example Series: Making a Survival Game

ただしこのプロジェクトはロジックがほぼ全てC++コードで記述されているので、ブループリントの部分は全て自分で作成せねばなりません。
まずはそれを再設計と再構築するだけで2日ほどかかっています。

f:id:alwei:20160418170335p:plain

今回作ったプレイヤーのブループリント全体図。
時間がなかったのでほとんど整理されていません。
まぁこの辺はちょっとUE4を勉強すればそんなに難しくはないと思います。

パートナーAIの作成

なにはともあれ、今回の目標はパートナーAIをしっかりと作るところです。
パートナーキャラクターとして今回は無料で誰でも使えるGrayちゃんを利用しています。

Grayちゃんモデルデータ | rarilog

標準でUE4のHumanoidリグに対応しているので、ほとんど何もせずにマーケットプレースなどのアニメーションを簡単にリターゲットできます。
リターゲットの際に既にほとんどのアニメーション処理をGrayマンで作成していたので、同じことをやらなくてもアニメーションブループリント自体をリターゲットする方法があるということを今回始めて知りました。

f:id:alwei:20160418171042p:plain

f:id:alwei:20160418171255p:plain

既にリターゲット可能なスケルトンを選択すると、リターゲットソースが使用しているアニメーションアセット、イベントグラフ、アニムグラフ含むアニメーションブループリントを全て一気にリターゲットし複製します。

f:id:alwei:20160418171606p:plain

これですぐに同じような構造のアニメーションブループリントが用意できます。もちろん要所ごとに処理は組み替えていく必要があります。

パートナーAIの要となる部分にはUE4の機能である、ビヘイビアツリーとEQS(環境クエリーシステム)を使用しています。

f:id:alwei:20160418172149p:plain

ビヘイビアツリー自体は思っていたよりも小さい規模になっており、多くの処理をタスクではなくサービスで行なわせています。行動制限にはデコレーターを利用し、動く時、動かない時を分岐させています。
タスク自体はフロー分岐の指定に利用し、サービス上で情報を常に収集するというような設計になっています。

f:id:alwei:20160418172629p:plain

EQSはゾンビをレベル上から検索し、テスト結果から最もスコアの高いゾンビを取得するようにしています。EQSはネット上にも情報が少ないので、これだけを見てもよくわからないかもしれません。

自分に最も近く、視覚的に見えている状態かを判断しているわけですね。
もっと厳密にやるのなら対象との向きをとって前方方向のみをスコア対象にしてあげる方がよいでしょう。ちょっとこの辺は手を抜いています。

あとは弾がある時はひたすらゾンビを検索し、条件に引っかかった対象に対して照準を合わせて撃ち続けるだけです。
とは言ってもゾンビはひたすら動き回るし、照準はアニメーションに依存して少しブレるようになっているので、絶対に当たるわけではありません。
この辺りはアニメーション側のおかげでリアリティがでています。

f:id:alwei:20160418173816p:plain

と、まぁ他にもプレイヤーが倒れた時に即時にリカバリーしにいったりと色々な機能がありますが、解説をしだすとキリがないのでこのくらいに。

どうでもいいですが、地味に髪は揺れてます。もうちょっとこだわりたかったところ。

Unreal Fest 2016 Osakaで会いましょう

もっと細かいところまで解説したいのですが、どれだけ書いてもキリがないので今回はここまで。
ちょうど来月にはUnreal Fest 2016 Osakaが開かれますが、そこでもまたUE4のAIの話をする予定です。

UNREAL FEST OSAKA 2016

入門的な内容となるので、あまり凝った内容までを話すことはできないかと思いますが、UE4のAIのことがもっと知りたいという方はぜひ来てください。既に募集はいっぱいなようなので、あとは当日キャンセル待ちしかないのが少し残念ですが…

また当日に気になることがあればぜひ話しかけてみてもらって「ここってどうなってるんですか?」みたいなこともいつでも受け付けていますので。ぜひぜひみなさんよろしくお願いします。