Unreal Fest West '17 感想

今年もUnreal Fest Westに参加しました。
なので得た知識と感想を書いていきます。

資料などがアップされ次第リンクを貼る予定です。

今回、プライベートで参加したため、会社へ提出する資料を作成するためのスライド写真はほとんど撮影していません。

※注意
Twitterで呟いた内容をまとめますが、かなり急いでメモを取っていたため、誤字や間違いがあります。
正しい情報は後日資料で出るため、ここに書いてあることはあくまでも参考程度にとどめてください。

早速togetterにまとめられています
[UNREAL FEST WEST '17 #UE4Fest](https://togetter.com/li/1101150)

com04さんに圧倒的感謝！！！！

#Unreal Engine最新機能 アニメーション＋物理ショーケース！
星野 瑠美子
Epic Games Japan

今回はUE4.16以降に機能として追加される話。

##1.リグを使ったアニメーション　

UE4.16からエディタの中でリグが設定可能になります
エディタの中でアニメーションの作成と修正が行いやすくなります

◆これまで
DCCツールで作成→ＦＢＸでエクスポート→メッシュに適応
もしこの段階でおかしければ、ＤＣＣツールで直す必要がある(アニメーションも同様)

◆これから
ＤＣＣツールでなく、ＵＥ４でメッシュやアニメーションを修正できる。

重要！　ただしＤＣＣツールを削除することは推奨していない

・この機能はどこで使えるか
ゲームジャムとか、プロトタイピング、小規模の開発でさっと直したいときに使える

プロシージャルアニメーション、ランタイムリギングも可能になる。
UE4上でアニメーションを付けるときは、コントロールリグを使う。

※コントロールリグはシーケンサーツールのような見た目

コントロールリグで設定したアニメーションは「コントロールリグシーケンス」となる。既存のシーケンサーで作成したモノとは別物。
アニメーションブレンドすることも可。

コントホールリグはプライグインでの提供になるため、設定で有効化する必要がある
有効にすると、コントロールリグの設定ウィンドウが追加される

・今後の展開
コントロールリグシーケンスとアニメーションシーケンスの変換
ランタイムリギング対応
エディタ内でのリグ構築

##2.クロスパイプライン

◆いままで
APEXはオールインワンＳＤＫのため、今まででは外部ツールに戻らないと布の設定ができなかった。

NVidiaと共同で、低レベルクロスシミュレーション「NvVloth」というものを開発

◆これから
エディタ内でのクロスの挙動を作成することが可能に。

ペイントツールのようなもので布を塗ることで、自然な布の動きが可能
パラメーターの値をグラデーションで設定可能
クロスコンフィグで布の材質設定も可

・クロスツールは実験段階の機能。エディタの環境設定から有効

##イミディエイトモード物理

PhysXの新しいＡＰＩを使用した物理シミュレーションモード
クサリ、ロープなど揺れものを持つのに効果的

◆いままで
すべての物理がひとまとまりだった。そのため個別に設定するのが面倒。
揺れものに関するアニメーション設定は各ボーンに設定するので、揺れものは割と大変

◆これから（イミディエイトモード物理なら）
各キャラがキャラに関連する物理を設定することが出来るため、軽量化することが可能
揺れもののアニメーション設定も簡単に

リジットボディノート
イミディエイトモード物理により、個々のキャラクターの負荷がわかるようになる

AnimDyunamicsと比べて２倍速い
大量のラグドールの場合にも恩恵がある

##3.ロボリコール

・ロボリコールの物理

オキュラスタッチの操作で様々なことに対応しないといけない
持つ、投げる、殴る、跳ね返す、等々……

エンジンに機能を追加したことで、小規模なチームでも開発可能

PhysicalAnimationアニメーションと物理インタラクションがシームレスに統合されている

・キネマティックＣＣＤ
連続衝突判定
プレイヤーの手がはやく動いたときに、手が物体をすり抜けてしまうのは困るため、連続で衝突判定を発生させる

・ポーズスナップショット
ポーズスナップショットで自然に起き上がるようにブレンドしている

・状況に合わせてコンストレイント設定を切り替え

・スプリング補間ノード
動くオブジェクトにバネのような簡易物理起動
これを入れることにより、銃の重さが伝わるように

##4.ライブリンク

アニメーションデータを外からストリーム。
モーションキャプチャーのデータを外から流し込んだり、DCCツールから流し込んでゆれものとか確認できる

・なぜ必要？
モーションキャプチャーデータの流し込みなどをしたとき、ＤＣＣツールのアニメーションと、ランタイムの物理アニメ付きの結果の差が大きいために必要

ライブリンクシステムはアニメーションノード、シーケンサー、将来的にモーションキャプチャーのプラグインにも対応する予定

UE4とMayaのプラグインを有効にする必要がある。
UE4で使用する場合は、ライブリンクポーズノードに接続
あとはライブリンクウィンドウでライブリンクソース選択することで設定できる

##5.まとめ＆おまけ
イミディエイトモード物理
新クロスツール
リグを使ったアニメーション
ライブリンク

全て4.16以降に追加されるのでぜひ使ってね！

最後にThe Human RaceのトンネルシーンのVFXにて、絶賛開発中のナイアガラが使用されていることが発表

##感想
発表された新機能はどれも便利そうです。特に新クロスツール、イミディエイトモード物理は、絶妙に設定が面倒だった揺れものをかなり簡単に設定できそうなので、ぜひ試してみたいです。
終始機材トラブルが発生していましたが、星野さんの発表はかなりわかりやすかったです。

#モバイルゲームにもっとクオリティを！ UE4を使ったハイクオリティなモバイルゲーム制作について
中村 匡彦
Indie-us Games

資料がすでに公開されています
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">昨日のアンリアルフェスで使ったスライドを公開しました！動画部分だけ削っています。モバイル系やる人はぜひ参考に！<br>モバイルゲームにもっとクオリティを！UE4を使ったハイクオリティなモバイルゲーム制作について <a href="https://t.co/YBnFUmq24d">https://t.co/YBnFUmq24d</a> <a href="https://twitter.com/hashtag/UE4?src=hash">#UE4</a> <a href="https://twitter.com/hashtag/ue4fest?src=hash">#ue4fest</a></p>&mdash; alwei (@aizen76) <a href="https://twitter.com/aizen76/status/853437077773467648">2017年4月16日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

なので、ざっとまとめます。

##モバイルゲームもクオリティが必須となる時代

これまで同様のクオリティではこの先生き残れない

・Oceanhorn 2: Knights of th Lost Realm
・Blade2 The Return of the Evil
・リネージュ2レボリューション

極めて高クオリティのハイエンドゲームが続々登場しているため

##ハイエンドのモバイル開発

ハイエンドモバイルゲーム開発の難点

iOSはiPhone5S以降なら問題なく動くため、特にこれ、といった問題はほとんどない
問題はAndroidの方で、AndroidのバージョンとGPUにより使えるものが違う

OpenGL ESのバージョンにより、大きく表現力が変わる
特にOpenGL ES 3.1はDirectX 11に近い表現力が可能となるので重要

OpenGL ES 3.1はAndroid5.0以降の GPUは大抵動く
例外はSnapdragonチップセットのAdreno300バンダイシリーズ
しかし、これは格安タブレットやガラケー型、スマートウオッチとかの特殊なものしか使われてないので外しても問題ない

※今から開発を始めて１年後にリリースするとちょうどいい

描画の性能だけであればすでにDirectX11とも大差ない
絵作りによってはＰＳ４に近いクオリティも十分に可能

モバイルは常に進化し続けている。思っている以上にモバイル端末の性能は高い

##Vulkanについて
次世代OpenGLともよばれるグラフィックスＡＰＩ
OpenGLの設計をリセットしつつ、ハードウェアに近い性能を引き出す
OpenGL 4.5やOpenGL ES 3.2と同じくらい

現状ではごく一部のハイエンド端末のみなので、数年後の普及に期待

#4.15の新機能 ハイエンドモバイルプレビュー
ツールバーの設定からPreview Renderingをチェックを入れる

##フォワードレンダリング

モバイル時は強制的にフォワードレンダラーになる
現在モバイルディファードレンダラーも開発中
モバイルレンダリング設定から設定可能
Androidは対応したソースをビルドすると使える

##フォワードレンダリング特徴

Screen Space系のテクニックが使えない　
SSR, SSAO, COntact Shadows Gbufferへアクセスできない　
マテリアルでScene Textureがほどんと利用不可
MSAAが利用可能

##Mobile Temporal AAとMobile MSAA
Mobile Temporal AAとMobile MSAAの2種類が利用可能。何も設定しない場合は自動的にTemporal AAが動くようになっている

##トーンマッパー
UE4.15からトーンマッパーが変わり、物理ベースなポストプロセス設定が追加
これによりブルームをはじめとする発色の部分が大きく変わり、よりきれいな色が出せるHDR表示に対応したが、モバイルではさらに影響がある

モバイルのポストエフェクトはPCやPS4などと別のコードパスになっており、トーンマッパーの設定に強く依存する
ポストエフェクトを使うときはMobaile HDRを有効にする必要あり

##ハイエンドモバイルレンダリング最適化

・Mobile HDR 
ポストエフェクトや正しいライティングを行うために必須。
ただし、このオプションを切ると大幅にパフォーマンスがアップするので、ポストエフェクトやライティングがいらないゲームでは切る

・シェーダー複雑度
ＰＣでは軽いマテリアルでもモバイルではそうではないことがある
シェーダー複雑度をプレビューモードに切り替えてみると違いもはっきり。
まずはマテリアルが複雑になってないかチェック

・デバイスプロファイル
UE4はAndroidのGPUを自動的に取得して、それぞれのデバイスに対して固有のプロファイル情報を設定することが出来ます。
Low Middle Highと世代別に設定したり、ＧＰＵごとに個別の設定が可能

・コンフィグファイル　
DefaultDeviceProfiles.iniに記載
ＧＰＵ性能に応じてクオリティ設定できる

・コンテンツスケール
r.MobileContentScaleFactorに数値を渡すと解像度が変化
デバイスごとに起動時に解像度を設定するので、必要に応じて設定

・Material Quality Levelノード
デバイスプロファイルやコンソールコマンドで、r.MaterialQualityLevelに０～２を設定するとマテリアル上でクオリティスイッチができる
マテリアルでFeature Level Switchノードを使うと端末に合わせて設定できる

・モバイルでレンダリングする際の各種設定
Mobile HDRや頂点フォグの無効か、カスケードシャドウマップの最大数の設定や、モバイル用のＭＳＡＡを有効化することが可能
ＭＳＡＡはサンプルカウント数をあげるとよりきれいになるが、処理負荷も上昇

・モバイルのシェーダ削減
利用するシェーダーのみをコンパイルし、マテリアル最渦の削減を行う。最終的なパッケージサイズも減る。ロード時間の高速化と省メモリーに
全てキルト影周りの表現が貧弱になるので、一つ一つ慎重に選んで切る

・カスケードシャドウと変調シャドウ
モバイルでは変調シャドウのほうがいい

・マテリアルクオリティオーバーライド
デバイスレベルごとにマテリアルクオリティを上書き可能
マテリアルの出力を無視して、強制的にフルラフネス化したりすることができる

##その他の最適化
・Precomputed Visibility
プレイヤーが移動可能な範囲内にボリュームを配置し、ビルド時に最適なカリング用のオクルージョン情報を生成
事前に移動可能な範囲から確実にカメラに映るオブジェクトにのみを描画

・Cull Distance Volume
DrawCallを減らすことが目的
ボリューム内にあるオブジェクトをサイズと距離に応じてカリングする

カリングされてほしくないものには、Allow Cull Distance Volumeというチェックを外しておく

##その他機能

・自動LOD生成
・サードパーティデバッガーの統合
AndroidのMaliやAdrenoシリーズのGPUを直接プロファイリングできるように。
ギリギリまでチューニングしたい場合には必須

・DLC&パッチ
ブループリントのみで簡単に使える

・GPSロケーションサービス
これもブループリントのみで作れる

3DCGはアンリアルが最強
ただ、実機用ビルドをすると時間がかかるのでとてもめんどくさい

##感想
自分がUE4を知ったころにくらべると、かなりモバイル開発がしやすくなったなー、という印象です。まだまだ課題はたくさんあると思いますが、ハイエンドのアプリゲームならUE4の開発も選択肢に入るレベルになったと言えます。

#リアルタイム3DCGを医療の世界へ！
瀬尾 拡史
株式会社サイアメント 代表取締役

すみません、この時メシを食べていたので前半全く聞いておりません。
なので会場に入ったタイミングから聞いた話を書きます

##UDK Remote
リモート確認できるが、更新は2013年
タッチ、加速度計、ジャイロスコープしか取得できない
デバイスのカメラストリーム、コンパス、GPS、スタイラスを取得できない

エディタ上の画面がデバイス上に映らないので、タッチしたい場所を手探りで見つけるしかない
カメラ画像を開発中にリアルタイムで確認できないためAR系のアプリ開発はだいぶ大変

GPSとかのプラグインはMobileではなくBlueprintsの項目内にある
せっかくブループリントで簡単にできるのに実機しか検証できないのが難点

カメラストリーム地磁気センサーはＡＲアプリを作るにあたって必須

##タッチイベントやちょっとしたテクニック

モバイル端末のインプット情報で最も使用頻度が高いのはタッチ情報のはず

・UE4で取得できるタッチイベント
タッチした瞬間、離した瞬間などが取れる
スワイプ、タッチしたままホールドは自分で実装しないといけない

背景を特定の色や画像にするにはちょっとしたテクニックが必要
UnrealEngineでは、背景の色や画像をお手軽には指定できない

Alt＋他のキーボタンを押しながら取得するのが難しい
独自実装する必要がある

##良いところ
マテリアル作成が超簡単

UnrealEngineでもコードのマテリアルを作成することが可能
ノードベースと組み合わせることももちろん可能

デバッグは簡単
ただしモバイルはリモートに依存

綺麗なコードを心掛けるようになる

##感想
UE4の貴重なソリューション系のお話でした。医療でなぜUE4を使っているのかというのがよくわかるセッションでした。モバイルの足りない部分をかなりあげてくれたので、モバイルに何が簡単にできて何が一から実装する必要があるのか、というのがよくわかります。

ちなみに知り合いの参加者の方から、講演内容が「別次元の天才すぎ」「次元が違う」と聞いたので、最初から聞ければな……、と割と後悔しました。

#少人数開発でもクオリティを諦めない - エンジニア視点から見る少人数開発の極意
原 龍
historia Inc

##小規模で開発するには常に最適化をすること
作るものに応じた最適な完成度を目指すことが何より重要

最適な完成度を目指すために、

・何が必要なのか
・何が求められているのか
・実際にそれを必要としている人

に直接確認する
この相談は十分に時間取る。考え得る可能性の話、想像力も大事

「とりあえず雑に作ってみる」というのが重要。理解するまでたくさん、雑に作ったプロトタイプを量産する

##地雷の要因
雑に作ったことが忘れ去られる、とりあえずで使いまわしたアセットが残り続けて想定外の依存関係を生む

雑に作ってみるということを皆が理解することが大事
雑でもいいから見せることの重要性を理解する

Airtoneは早い段階からプロトタイプ量産している

##少人数UE4開発における悩み

カスタムビルドエンジンを使う必要がある……

###カスタムビルドエンジンにおけるメリットとデメリット
・メリット
プロジェクト固有の改造ができる、バグ修正ができる、など

・デメリット
動きが遅くなって身動きしにくくなる
エンジン更新に対するマージコストが高い
そもそも自分たちで新しいバグを発生させる可能性、など

###カスタムビルドエンジンへの移行予定日を決める
マージコストを極力減らせるように勧める
プレビュー版で公開された新機能の検証は捨てブランチで

重要：それでもできない部分はあきらめる！！！！

##ツール整備
他の音ゲーより作業が多いため、専用のチャートエディタを作って開発効率を上げよう
シーケンサーを専用チャートエディタとして改造
タイムライン上に構築された内容はViewport上にリアルタイム反映
演出トリガー用にアセット指定のイベントトリガーを新規に実装

これを使用して、約１００チャートを実装した

・あきらめた部分
エディット時の完璧な安定性
演出のリアルタイムプレビュー
各レーンの曲線がいびつなところが散見される

・今だから思う改良したかった点
サブトラック機能
評価基準の可視化

##プロシージャルメッシュ
プロシージャルメッシュを活用することで、アーティストが用意するには手間暇がかかる部分が削減できる

##音と連動した演出
背景がリズムよく上下に動く
各種アニメーショングラフィックスの速度がBPMに合わせて変動する

Wwiseからパラメータをコールバックで受け取るようにWwiseプラグインを作成
音のパラメータはマテリアルパラメータコレクションが大活躍
プロパティを設定する場所が集約されるため

##口パク

凹みtipsに載っていた情報をもとに実装
フォルマント解析

第一フォルマント、第二フォルマントの値から母音の推定が可能
ボリュームカーブを元にリップアニメーションが可能
解析された情報を可視化する仕組みを作る

可視化はとても大事

・あきらめた部分
完璧なリップシンク
Voice2LipコンバータをUE4に組み込む

##まとめ
最適な完成度
雑に作ってみる
カスタムビルドエンジンを使うメリット、デメリットを理解
出来るだけ移行時期を遅らせる
ツール整備、プロシージャル生成で全体コストを削減する

##感想
少人数に対する苦労と、効率よく開発するための試行錯誤がよく伝わるセッションでした。
とあるプロジェクトではAirtoneプロジェクトと同じ少人数でありながら、発表された地雷を全て頭から突っ込んで起爆させ、結局プロジェクト自体がクローズされたのを見たため、当時のディレクターにぜひ聞いてほしい内容でした。

#SWITCH & UNREAL ゲーム開発をもっとアンリアルに
河﨑 高之
Epic Games Japan 代表
 
篠山 範明
Epic Games Japan

任天堂 業務部 技術渉外グループ
光吉 勝 氏 

河崎さん曰く、息抜きセッションとのことなので、重大な発表は特にありませんでした。
そのため、大事なことだけまとめます。

##まとめ

・UE4のフリーのライセンスでもスイッチの開発機を入手できるようにただいま準備中
・EULA版ユーザーでは、UE4.16以降、スイッチの開発者であると確認でき次第提供されるとのこと
・スイッチのデバッグ。デバッグでニンテンドースイッチの押せばでる

##感想
早く個人の開発者でもニンテンドースイッチで開発できるようになって欲しい！！　
UE4で開発したいです任天堂先生！

#RoboRecallで使われている最新のVR開発テクニックをご紹介！
岡田 和也
Epic Games Japan

##RoboRecallのドキュメント
日本語版が公開
https://docs.unrealengine.com/latest/JPN/Modding/RoboRecall/index.html

##showdownデモの紹介
・フェイクシャドウの利用
・従来のビルボードを使った手法は相性が悪いため、３Dモデルを使った立体的なエフェクト

##バレットトレインデモの紹介
・物をつかめる範囲の調整
・投げたものに対して軌道アシスト
・テレポート移動の採用

##RoboRecall 新機能
・センサーの死角問題への対応
oculusセンサーの範囲外に出ると、マーカーが出るように

・移動場所を指定、テレポート後の向きを指定

##ユーザーが期待する動作と、それにこたえる実装

・物理による簡易インタラクション
星野さんのセッションで内容発表

・VRデザインとワークフロー
ヘッドトラッキングによるカメラ向き調整
上下も考慮した3次元的なゲームデザイン

VRにおいてスケール感は重要
モニタとVRHMDの見え方の違いを理解する

重要：モデルの最終チェックはVRで行うこと！

実際のレベルにモデルを配置して、VR上で確認

GoogleMapのジオメトリをスケール感のリファレンスに採用

##高速化
・アニメーションするフェイクシャドウ
単純な回転の場合、マテリアルで制御したほうが処理負荷が低い

・CapsuleShadowを用いた影表現

・窓を表現するには
ガラス、内装のモデル、反射等々、窓っぽく見える疑似的な表現に

##レギュレーションについて
アセット・仕様などを作成する際の指針

レギュレーションがないとき　初期から中期にかけて色々とマズい状況になる
指針があれば、無駄なく作業ができる

初期中期の段階でレギュレーションを制定するのがベスト
ベンチマークとなるレベルを作り、その結果をもとに策定

##チェックフロー
1週間ごとに、１つのレベルでQAがパフォーマンステスト

##疑似VR描画
ＰＣ上で疑似VR描画ができる。簡単にVR上の描画を確認できる。

・疑似VR描画のもう一つの利点
プロファイルを取るたびにHMDを着脱しなくていい
最終チェックは必ずHMDで

##最適化

・Instanced Stereoscopic Rendering
両目の映像を同時にレンダリング

・メッシュ結合
カリング効率に注意
処理負荷が逆に増える可能性が

・Precomputed Visibility Volumes
カリング領域の事前計算
動くオブジェクトは対象にしないなどの制限があるため、全てのプロジェクトで有能ではない

・BPのネイティブ化
事前にBPをC++(dll)に変換し、実行ファイルに埋め込む

・ネイティブ化における注意事項
全てのBPをネイティブ化すると、実行ファイルのサイズが肥大化するため、適切なBPのみネイティブ化しよう

・BPとC++の理想的な配分

Blueprint
高速なイテレーションが求められる部分（プロトタイプ、パラメータ）
ゲームデザイナ、アーティスト

C++
BPでは実装が難しい複雑な処理(システム部分、BaseClass)
プログラマ

・Tickイベント

本当に必要？
処理が繋がっていなくても、わずかな処理コストが発生

不要なら切る
必要でも発生タイミングを遅らせる

・オブジェクトのプール
Spawnする処理は重い、GCによるメモリ回収処理の負荷

・インタラクション用コンポーネントシステムの問題
50コンポーネントが一つ、これだと移動処理がボトルネックに(50回もアップデート処理が走る)
距離が離れている場合、インタラクション用コンポーネントを外す

##導入予定の機能

・Super Frustum Culling
・Monoscopic For Field Rendering
目から遠くなるほど視差は小さくなる
遠目は片目、近くは両目で描画を行う

##まとめ
改めてRoboRecallは知見の塊だということを再認識しました。本当に素晴らしいＭｏｄです。
もっとRoboRecallで実装されている部分について知りたいと思いました。（岡田さんに期待）

#Unreal Fest West '17　感想
今年も素晴らしいセッションでした。個人的にはＶＲ開発をしているので、RoboRecallのセッションは非常によかったです。知見の塊だということを改めて認識しました。
あと原さんの小規模ゲーム開発は、ディレクター以上の人達に聞いてほしい内容です。大体あの地雷を踏むので、よく聞いて回避し、効率よく開発してほしいです。

今年も関西に行ってよかったなー、という内容でした。
次回 East '17 は 10/8 パシフィコ横浜です！　また参加します！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Unreal Fest West &#39;17 無事に終了しました。<br><br>ご参加頂きました皆様と、ご協力頂きました関係者の皆様に感謝致します！<br><br>次回 East &#39;17 は 10/8 パシフィコ横浜です！ 絶対に来て下さいね！<a href="https://twitter.com/hashtag/ue4fest?src=hash">#ue4fest</a> <a href="https://t.co/bQvTeWBH2P">pic.twitter.com/bQvTeWBH2P</a></p>&mdash; Unreal Engine Japan (@UnrealEngineJP) <a href="https://twitter.com/UnrealEngineJP/status/853381039502249985">2017年4月15日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>