脱Unity!? UE4でVR開発のここが変わった

157
#ue4fest 脱Unity!? UE4でVR開発のここが変わった 株式会社コロプラ

Transcript of 脱Unity!? UE4でVR開発のここが変わった

Page 1: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

脱Unity!?

UE4でVR開発のここが変わった

株式会社コロプラ

Page 2: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

はじめまして

Page 3: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

です

Page 4: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

コロプラといえば

Page 5: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VR

Page 6: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

2014年から様々なVRゲームを作ってきました

Page 7: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

2014年から様々なVRゲームを作ってきました。

Page 8: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

絵柄もポップなゲームが多い

Page 9: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

綺麗なグラフィックの

VRゲームを作りたい!!!!

Page 10: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

「Unreal Engine」というエンジンは

グラフィックが綺麗らしい

VRゲームで使っている会社も多いらしい

Page 11: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

使ってみよう

Page 12: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

本日話すこと

•Unityからの移植テスト

•背景制作

•アニメーション実装

•VR向けの最適化

•C++ vs Blueprint

•まとめ

Page 13: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

自己紹介エンジニア

加田 健志(カダ タケシ)

2015年コロプラ入社

サウンドや通信周りを担当することが多い

主な開発タイトル「TITAN SLAYER」「Dig 4 Destruction」「VR Tennis Online」など

Page 14: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Unityからの移植テスト

第一章

Page 15: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

今回の移植対象

Page 16: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ムービー

Page 17: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

TITAN SLAYERの紹介

• 2017年4月リリース(Steam/Oculus/Vive Port)

• 一人称アクションゲーム• Unity 5.5.0f3

• 剣・銃・弓を使って巨大なモンスターを倒す

• 体を目いっぱい使って戦う

Page 18: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

お客様の声

かんぜんにスクワットなので、翌日太もも筋肉痛になります。

回避は慣れないと大きく動くため、リアルに体力を使います。

夢中で戦ってたら太ももが筋肉痛になりました。

Page 19: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

移植開始

最初の方針

•Stage1のみ移植

•アセットの差し替えは最小限に

•いろいろなUE4の機能を使ってみる

目的

•グラフィックの向上

Page 20: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Page 21: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

さあはじめよう

Page 22: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

開発環境

CPU Intel Core i7

GPU NVIDIA GTX1060

メモリ 32GB/64GB

ストレージ SSD

VRヘッドセット Oculus Rift CV1 + Oculus TouchHTC Vive

+ライトマップ分散ビルド環境を構築

※複数のPCでビルドできますでしょうか?https://answers.unrealengine.com/questions/48568/index.html

Page 23: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

まずはサンプルプロジェクトを見てみる

Page 24: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

UE4はVRのサンプルが豊富

•MODING(MOD作成中)• ROBO RECALL

• VR FUNHOUSE

Page 25: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

UE4はVRのサンプルが豊富

•Learn(ラーニング)• Showdown VR Demo

Page 26: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

UE4のVRサンプルを見てみる•New Project -> Virtual Reality

Page 27: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

レベルを開く•Content/VirtualRealityBP/Maps/MotionControllerMap

Page 28: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

レベルを開く•Content/VirtualRealityBP/Maps/MotionControllerMap

Page 29: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VRモードでプレイ•VR Previewを選択

Page 30: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VRモードでプレイ

テレポート移動機能 ものつかみ機能

Page 31: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ほかにもサンプルが豊富

•エフェクト

•ライティング

•マテリアル

•水表現

•シーケンサー

Page 32: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

約1か月後

Page 33: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

移植完了!

Page 34: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

あれ?

•グラフィック上がった?

Page 35: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

背景制作

第二章

Page 36: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

自己紹介デザイナー

西村 博司(ニシムラ ヒロシ)

2015年コロプラ入社

背景アーティスト

前職でUE4に触れる機会があり今回は

サポートとして参加

主な開発タイトル「Dig 4 Destruction」「Fly to KUMA」など

Page 37: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

「背景」は作り直し!

クオリティ面で予想と違った!

▶近景にある背景モデルに質感がなくボケている

▶背景モデルはマージされ編集がやりづらい

Page 38: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

どうやって改善していくか

▶アンリアルは初めて

▶アンリアルの機能を使い背景作業を行いたい

▶アーティストでも簡単にクオリティを上げたい

Page 39: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

背景制作スタート

Page 40: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

編集しやすい環境作り

問題点

▶マージされた背景モデルでは編集が出来ない

Unreal機能

▶BSPツールを使いレベルデザインを作成ステージ土台を作る

▶モジュラーアセットに作り直してステージ構築

Page 41: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

BSPツール(ジオメトリブラシ)

▶レベル作成に使われる基本的なツール

Page 42: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

BSPツールでゲームプロトタイプ

▶配置後でも編集が可能

▶埋めたり削ったりして形状を作成

▶凝りすぎない程度にレベルを作成

Page 43: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

こんな感じで作成しました

Page 44: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステージの骨組みが出来た

▶イテレーションが早くゲームプロトタイプを検証

▶アーティスト作業が不要

Page 45: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

モジュラーアセットへ変更

▶マージされた背景モデルは編集がやりづらい

Page 46: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

モジュラーアセットとは

▶使い回しを前提にパーツ分けしたアセット

▶利便性を考えピボット位置やサイズのルールは決める

Page 47: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

モジュラーアセット作成工程

▶BSPで作成したレベルを元にパーツをリスト化

▶要素がわかる程度のダミーアセットを作成

BSP(ジオメトリブラシ) ダミーアセット 本アセット

Page 48: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

モジュラーアセット完成

Page 49: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステージ構築がやりやすい

▶少ないアセットの組み合わせでステージを作成

▶スナップ移動を使い効率よく配置

パーツを 合わせて 組み立てる

Page 50: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

質感のクオリティアップ

問題点

▶近景にある背景モデルの質感がなくボケている

Unreal機能

▶マテリアルエディタを使ってディテールテクスチャを使用

Page 51: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ディテールテクスチャとは

ディテールテクスチャ使用使っていないマテリアル

Page 52: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

マテリルエディタを使う

▶ノードベースで作れるマテリアル

例:単純なマテリアル 例:複雑なマテリアル

Page 53: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ディテールテクスチャの作成

▶パレットから「DetailTexturing」ノードを加えて作成

Page 54: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ディテールテクスチャの比較

Before After

Page 55: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

質感のクオリティアップ

▶簡単なマテリアルならアーティストでも作れる

▶ポイントを絞り目的にあったマテリアルを作成

Page 56: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

背景完成

Page 57: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Page 58: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

背景制作まとめ

▶BSPを使ってステージの骨組みを作成

▶モジュラーアセットで柔軟な背景構築

▶マテリアルを作成してクオリティアップ

アンリアルエンジンを使って解決!

Page 59: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

おまけ:VRエディタを使ってみた

▶実験的に実装されている「VRエディタ」が面白そう

Page 60: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

セッティング

▶エディタ設定「Enable VR Mode Auto-Entry」にチェック

▶ゴーグルを被るだけでVRエディタが起動

Page 61: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

レイアウト

▶「コンテンツブラウザ」よりアセットを配置

▶「複製」も簡単

Page 62: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ワールドスケール

▶シーン全体のスケールを変更

Page 63: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

移動方法

▶テレポート ▶手動

Page 64: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ゲームプレイ

▶編集後そのままゲームをチェック

Page 65: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VRエディタまとめ

▶編集内容を絞れば直感的に作業が行える

▶レベルエディタとVRエディタを使い分ける

VR空間で作る

背景制作は楽しい体験!

Page 66: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

アニメーション実装

第三章

Page 67: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

自己紹介

エンジニア

佐々木 尚人 (ササキ ナオト)

2016年に新卒としてコロプラに入社

TITAN SLAYERの開発を担当

主な担当範囲は

「描画周りの実装」と「ボスキャラ実装」

Page 68: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

アニメーションについて話す理由

Unityと比べて最も差異が

大きかったため

Page 69: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 70: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 71: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 72: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 73: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 74: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

最初の話

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 75: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Animator

もうちょっと遷移がごちゃついた図

ステートと遷移のルールに基づいてアニメーションを再生する

Page 76: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Animation Blueprint

Animation BlueprintもUnityと同等の機能を備えている

Page 77: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Animation Blueprint

アニメーションイベントの受け取りや変数の制御もAnimation Blueprint内で行うことができる

Page 78: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

AnimatorAnimation Blueprint ≠

アニメーション機能をざっくり比較すると…

Page 79: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

アニメーション機能をざっくり比較すると…

Animation Blueprint

Animator

+

Animator管理用スクリプト

Page 80: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

次に話すこと

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 81: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

完成イメージ図

完成した時のてつおモーションがどんな感じになるかのgif

待機→攻撃→ダメージ→待機→攻撃→待機

Page 82: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

敵キャラアニメーションで実現したいこと

思考

攻撃

ダメージ

アニメーション終了

ダメージイベントアニメーション

終了攻撃イベント

Page 83: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Unityアニメーションの設計

思考

攻撃

ダメージ

アニメーション終了

ダメージイベント

アニメーション終了

攻撃イベント

全てのステート

Page 84: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Unrealアニメーションの設計

ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 85: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの作り方の比較

Unreal Engineでの実装例

まとめ

Page 86: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステートマシンダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 87: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステート編集ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 88: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステート内部ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 89: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】ポーズ拡張

Page 90: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】ポーズ拡張

Page 91: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステートマシンダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 92: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステートマシンダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 93: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ステートダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 94: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

サブステートマシン あダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 95: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

制御用変数

Page 96: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

制御用変数

Page 97: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】Enumでのタイプ分け

Page 98: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】Enumでのタイプ分け

Page 99: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】Enumでのタイプ分け

Page 100: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

遷移(思考→攻撃)ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

Page 101: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

遷移(思考→攻撃)

Page 102: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

遷移(思考→攻撃)

Page 103: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

遷移(攻撃→思考)

Page 104: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ダメージ

サブステートマシン

思考

攻撃

思考&攻撃

アニメーションの残時間

0.05秒以下

遷移(攻撃→思考)

Page 105: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

【Tips】遷移条件を場合分け

Page 106: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

話の流れ

アニメーション機能の説明

アニメーションの設計の比較

Unreal Engineでの実装例

まとめ

Page 107: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Page 108: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

まとめ

•UnityとUnrealでは使い方のクセが大幅に違う

•UnrealのAnimationは高機能

移植の際は設計レベルでの見直しを!

Page 109: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VR向けの最適化

第四章

Page 110: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VR最適化って何だろう?

処理負荷軽減プレイヤー没入感向上

Page 111: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

処理負荷軽減

•フレームレートの低下 → 酔いを誘発

•90FPS

•問題が顕在化するのは開発終盤

パフォーマンスを最初から考慮した開発が大事

Page 112: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

UE4×処理負荷軽減

•Forward Shading

•カプセルシャドウ

Page 113: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Forward Shading

•UE4の標準はDeferred Shading

•処理負荷軽減のためForward Shadingに変更

•レンダリングパフォーマンスが20~30%アップ

Page 114: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Forward Shading Deferred Shading とは

•Forward Shading• 古典的な描画方法

• ライトが増えれば負荷が増える

•Deferred Shading• 近年主流の描画方法

• ライトが増えても負荷が増えない

• G Buffer

Page 115: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Forward Shading

Project Settings > Engine > Rendering

にある「Forward Shading」にチェックを入れてプロジェクトを開きなおす

Page 116: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Forward Shading

※Forward Shadingでは一部の機能が制限される

※UE4公式 VR でフォワード レンダリングを使用するhttps://docs.unrealengine.com/latest/JPN/Engine/Performance/ForwardRenderer/index.html

Page 117: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

カプセルシャドウ簡易的な影に切り替えるROBO RECALLでも使用

通常のシャドウ カプセルシャドウ

Page 118: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

カプセルシャドウの設定方法

Skeletal Mesh Editorを開くLightingの「Shadow Physics Asset」にPhysics Assetを設定

Physicsに設定されているものと同じでOK

カプセルシャドウ用の別Physics Assetを作成して影をカスタマイズ可能

Page 119: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

カプセルシャドウの設定方法

Skeletal Mesh Componentの詳細

→Lighting

・Capsule Direct Shadow

・Capsule Indirect Shadow

にチェック

※Lightingの項目は初期状態では畳まれている

UE4公式 カプセル シャドウの概要https://docs.unrealengine.com/latest/JPN/Engine/Rendering/LightingAndShadows/CapsuleShadows/Overview/index.html

Page 120: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

処理負荷軽減の結果

100体のキャラクターを出して検証

GPU処理時間[ms]

Deferred Sharding 22.29ms

Forward Sharding 19.10ms

Forward Sharding + カプセルシャドウ

11.00ms

大量のオブジェクトを表示する場合Forward Sharding & カプセルシャドウの設定は有効

Page 121: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

プレイヤー没入感向上

•キャラクターモデル

•VR内の手

•サウンド

Page 122: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VR用キャラクターモデルの作り方

近くに見えるものにコストを割く

「巨人と戦う」→ 顔よりも手先や足が近く見えやすい

•近づきやすい部分にポリゴン数を割く

•自分の手や武器もリッチに

•ボーン数は少なめに

プレイヤーの目線イメージ

Page 123: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

VR内の手

手モデルの表示位置を正確にしたい

•モーションコントローラの位置に

コントローラモデルを表示する

•実際の手の位置を比較

•Oculus Touch/Vive両方

※Engine Content/VREditor/Devices

にコントローラモデル

Page 124: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

サウンド

•聴覚から没入感を高める• 立体音響 ⇔ 2Dサウンド

• 環境音

• BGM

•Sound Cue

Page 125: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Sound Cue

•Sound Cue ≠ オーディオファイル

•オーディオ再生方法の制御

• ランダム再生

• In – Loop再生

• ピッチ変更再生

•オーディオエフェクトの制御

• 減衰

• リバーブ

Page 126: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Sound Cue ランダム再生

Page 127: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

アニメーション×Sound

フレームを指定してエフェクトやサウンドを制御できる

Page 128: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

アニメーション×Sound

足音が近づいてきている足音もランダムに再生されている

Page 129: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

最適化まとめ

•VRは処理負荷がシビア

• 開発序盤からフレームレートを意識した開発

• UE4の機能を使って負荷削減

•プレイヤーの没入感を削がないつくり

• 近くに見えるものにコストを割く

• 手の挙動は慎重に調整

• サウンドにもこだわる

Page 130: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

第五章

Page 131: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

UEを使うときにエンジニアが最初に気になること

C++で書くべきか

Blueprintで書くべきか

Page 132: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Page 133: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

なるほど、わからん

Page 134: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

しかし、UE4のチュートリアルはほぼブループリントで作られている

Page 135: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

うまく使い分けて仲良くなろう

Page 136: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

ブループリント C++

書き方 ノード コード

扱いやすさ 易しい 難しい

コンパイル速度 速い 遅い

差分比較 難しい 易しい

処理速度 遅い 速い

ナレッジ数 多い 少ない

Page 137: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

扱いやすさ•C++では簡単にNULLを踏んでEditorごと落ちる

•ポインタを扱うときには注意が必要

Page 138: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

コンパイル速度•ブループリントは変更部分だけのコンパイル

•C++はコンパイル前に全ファイルのヘッダ解析を行う

C++ vs Blueprint

Blueprint

C++

Page 139: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

差分比較•ブループリントでも差分が見られるが目Grep

Page 140: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

差分比較•ブループリントでも差分が見られるが目Grep

デバッグプリントがなくなっている

Page 141: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++ vs Blueprint

処理速度

ベクトル演算を10万回行うコードをC++とBlueprintで比較

処理時間

C++ 1mse以下

Blueprint 313msec

Page 142: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Blueprint ⇒ C++ 自動変換

• Project Settings->Packaging->Blurprints->Blueprint Nativization MethodをInclusiveに変更

• ビルド時にブループリントをC++に変換

• 処理速度が313msecから3msec

ブループリントのネイティブ化https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/TechnicalGuide/NativizingBlueprints/index.html

Page 143: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

結局どう使い分けるか?

Page 144: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

• 基礎となる部分はC++で実装

• C++を継承したブループリントをゲームに使用

• 安定した部分からC++に移行

AActor

AEnemyBase

BP_OrcBase

BP_OrcA BP_OrcB

C++

ブループリント

基本方針

Page 145: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

なぜこのような方針になったか

• C++のコンパイルが遅い→テスト実装はブループリント

安定してからC++化

• ブループリントの実行速度が遅い→複雑な計算はC++へ

→複雑な計算ノードは他人が見てもわかりづらい

• ブループリントで定義した変数・構造体はC++からはアクセスできない→極力C++で宣言

ブループリントからC++へ書き換えは大変

Page 146: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

BlueprintのC++への移植

•ブループリントの関数をC++で使うとき

•ノードを右クリックし「Goto Definition」

•C++での定義ファイルが表示

Page 147: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

Page 148: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

C++まとめ

• C++を使うには少しコツがいる

• モックやテストはブループリントで行い本番実装でC++へ

• 基底クラスだけはC++で作っておく→C++の実装は空でもいい

• ブループリントのC++変換機能も有効活用

Page 149: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

まとめ

第六章

Page 150: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

成果

Page 151: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

比較解説•キャラクターの質感アップ

• より恐怖を感じるように

Page 152: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

比較解説•キャラクターの質感アップ

• 金属もいい感じに

Page 153: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

比較解説•エフェクト表現がグーンとアップ

Page 154: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

比較解説•エフェクト表現がグーンとアップ

Page 155: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

まとめ移植を通して分かったUE4の強み

• 最初から用意されている機能が豊富

• エンジニアの手を借りずに実装可能

• ブループリント

Page 156: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

使おう

Page 157: 脱Unity!? UE4でVR開発のここが変わった

#ue4fest

ご清聴ありがとうございました