Skip to main content
#ue4fest
UE4×Switchで
60FPSの(ネットワーク)対戦アクションを
なんとかして作る!
ガンホー・オンライン・エンターテイメント株式会社
チーフプログラマー 角田 高宏
チーフデザイナー 江原 崇将
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
角田 高宏
• チーフプログラマー
• 2013年 入社
• アーケード、コンシューマ、モバイル
と幅広くタイトルを経験
• グラフィックプログラムと最適化を担
当することが多い
• 『ニンジャラ』ではパフォーマンス最
適化を担当
江原 崇将
• チーフデザイナー
• 2016年 入社
• デザイナサポート、マテリアル検証
アセット管理、機材調整、PV撮影など
幅は広いが底は浅い。
• 『ニンジャラ』ではテクニカルアーテ
ィストとしての役割を担う
自己紹介
#ue4fest
対応ハード : Nintendo Switch
ジャンル : 対戦ニンジャガムアクション
最大8人のオンライン対戦に対応
基本プレイ無料
対応言語 : 日,英,仏,伊,独,西,中(簡体/繁体),韓
2020年6月25日からサービス開始
UE4 Version : 4.24.2
ニンジャラとは
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Nintendo Switch で
60fps で動作しています
今回はここにフォーカス
した話をします
ニンジャラとは
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• クライアント側の最適化全般について紹介します
• 個々の内容を深く掘り下げることはやりません
• ネットワークに関する話はしません
• 当日担当者には同席してもらえるようにするので、
質疑に関しては、答えられる範囲で対応します
• プロファイラーやデバッグツールの詳細や、
使い方についても、本発表内では触れません
発表内容について
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 要件
• 描画の基本設定
• UE4×Switchのパフォーマンスについて
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• システムとして求められたもの
• オンライン対戦アクションゲーム
• ニンジャでチャンバラアクション
• 最大8人で対戦、チーム戦もあるよ
• UE4 × Nintendo Switch
• バトル中は60fps死守
要件
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
バトル中は60fps死守!
要件
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
厳しくないか?
要件
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
実際どの程度動くのか?
要件
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Switch で ThirdPersonTemplate を動かしてみた
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• GPU負荷が大きい
• ポストプロセス
• Atmospheric Fog
• リフレクション
このあたりが高負荷
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ポストプロセスをもう少し細かく調査
• SSR,SSAO,TemporalAA,MotionBlur は単体でもかなり高負荷
• 720pだとそれぞれ 2ms 超
• 解像度やクオリティを落として、単体での使用ならあるいは…
• アーティストにこれらを使わない方向で打診
→ 結果、これらをバトル中は使わない方針に決定
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• DefaultLitマテリアル と UnLitマテリアル
• UE4のマテリアル
・ライティングするもの ( DefaultLit )
・ライティングしないもの ( UnLit )
乱暴に分けると、この2種類に分けられる
• Switch上でのパフォーマンスを比べてみた
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• DefaultLit と UnLit の比較 (720p)
• カメラとPlane,Directional Light を1つずつ配置
UE4×Switchのパフォーマンスについて
GPU 4.36 ms GPU 0.82 ms
DefaultLit UnLit
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• DefaultLit と UnLit の比較 (720p)
• ノーマルマップ有 / UnLitにシェーディングを追加
UE4×Switchのパフォーマンスについて
GPU 4.65 ms GPU 1.15 ms
DefaultLit UnLit +
Fake Shading
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• UnLitマテリアルのGPU負荷が圧倒的に低い
• UnLitマテリアルで賄える部分は
DefaultLitに比べて、GPU負荷をかなり抑えられそう
UE4×Switchのパフォーマンスについて
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
最終的に設定は次のような感じ
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Forward Rendering
• 単純にパフォーマンスが Forward の方が良かった
• Deferred でしか使えないポストエフェクト(SSR、SSAO等)
は負荷の点から使用しない方針にした
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 解像度
• コンソールモード 1080p~810p
• ハンドヘルドモード 720p~540p
の可変解像度(100%~75%)
UE4.19 から入っている DynamicResolution を使用
UIの解像度は100%固定
E3 2018、TGS 2018 版は、720p (コンソールモード)、480p (ハンドヘルドモード)
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Light
• Movable Light
• バトル中は未使用
• Stationary Light
• Directional Light 1本に限る
• ダイナミックシャドウを落とすのはこれ1本
• Static Light
• 上記以外のLight全て
• Static な Lightは「Actor Hidden In Game」 を有効にしておく
• ランタイムで影響チェックが行われ、CPU負荷の原因になる為
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ポストプロセス
• Bloom
• AutoExposure
• Color Grading
• FXAA
• Fog
• ExponentialHeightFog
• AtmosphericFog は負荷が大きかった
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• テクスチャフィルタ
• 拡縮、ミップマップ共にバイリニア
• 異方性フィルタは未使用
• 使用の有無で1ms ほど負荷に差
• Mask Material only in Early Z-pass を有効に
• Maskedマテリアルを多用している為
• Epicの篠山さんによる「Mask Material only in Early Z-pass」の解説
https://www.slideshare.net/EpicGamesJapan/mask-material-only-in-early-zpass
描画の基本設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
キャラクター
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• スペック
• 約11000ポリゴン
• 平均的な物で26ボーン
• パーツ数(10個くらい)
• LOD
• 3段階
• リムライト、レフライト、目専用、色変え等
• マテリアルは平均的な物で10個使用
• パフォーマンスの目安
• 1.0 ms / キャラ
アセットの最適化 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 問題になった点
ダイナミックシャドウの負荷
アセットの最適化 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ダイナミックシャドウの負荷
• シャドウの有無による比較
アセットの最適化 キャラクター
GPU 9.53 ms GPU 7.51 ms
ダイナミックシャドウ
あり
ダイナミックシャドウ
なし
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ダイナミックシャドウの負荷
• シャドウキャストするパーツ数による比較
アセットの最適化 キャラクター
GPU 9.53 ms GPU 7.95 ms
5パーツ 1パーツ(Bodyのみ)
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• キャラクターのダイナミックシャドウの負荷
• シャドウを落とすオブジェクト数が問題
• 専用の影モデルを用意
• ダイナミックシャドウを落とすオブジェクト数の削減
• 頂点数の削減
アセットの最適化 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 専用の影モデル
• 素体用(シルエット別にいくつか用意)+武器用 の2つで構成
• キャストシャドウするパーツ数を、最大 10個 → 2個 に削減
アセットの最適化 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 専用の影モデル
• Hidden Shadow + PoseableMeshComponent を使い、
ボーンのTransform情報を、影メッシュにコピーして使用
アセットの最適化 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 対策前後の負荷比較
この例では 1.5 ms 以上高速化
アセットの最適化 キャラクター
GPU 9.53 ms GPU 7.87 ms
Before After
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
背景
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 背景
アセットの最適化 背景
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 背景用のマテリアル
• DiffuseColor,MRE(Metaric,Roughness,Emissive を1テクスチャ
に格納),NormalMap のテクスチャ3枚を使った DefaultLit が基本
• 最適化の方針
• テクスチャアクセスを減らす
• MRE の変化量が小さすぎるものはパラメータへ置き換え
• 効果が小さいノーマルマップを削除
• 部分的にUnLitも併用
• 遠景や水表現など
アセットの最適化 背景
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• UnLitマテリアル
• 遠景のビル群
• 水面
アセットの最適化 背景
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• メッシュ
• 最適化の方針
• カリングを考慮して地面、遠景はステージ中央から放射状に分割
• 高さ方向に関しては、シビアに分割していない
アセットの最適化 背景
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• LOD
• 近景は最大4段階(基本は3段階)
• UE4標準のリダクション機能を使用
• 単にポリゴン数、頂点数の問題だけで無く、
表示距離 / 面積に応じた適切な頂点密度にすることが重要
頂点が密集しすぎると、マイクロポリゴンや OverDraw の原因にな
り、負荷が上がるため、頂点数が少ないメッシュでもLODを作る意
味はある
アセットの最適化 背景
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
パーティクル(エフェクト)
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• マテリアル
• ほぼ UnLit の不透明 or Masked で構成
• UnLitマテリアル内で陰影付けをやっているものもある
• ガムは UnLit なパーティクル
• 動的光源を使わない
• ライトを発生させていない
アセットの最適化 パーティクル
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• パーティクルLODを使ったニアクリップの制御
• LOD0 に何も設定しない事で、疑似的にLOD0 と LOD1 の
切り替わり距離を、ニアクリップとして扱っている
アセットの最適化 パーティクル
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
疑似透過表現
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• カメラ接近時のディザーによる疑似透過表現
アセットの最適化 疑似透過表現
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• カメラ接近時のディザーによる疑似透過表現
• キャラクターがカメラに接近した時に使用
• UnLit のディザー専用マテリアルに差し替え
• DefaultLit + ディザー は高負荷なため
UnLit なディザー専用のマテリアルに差し替えている
アセットの最適化 疑似透過表現
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ディザー(Mask)の負荷比較(720p)
アセットの最適化 疑似透過表現
DefaultLit 不透明
GPU 12.42 ms
DefaultLit + ディザー
GPU 19.41 ms
UnLit + ディザー
GPU 13.35 ms
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
透視表現
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 遮蔽物の向こう側のキャラが見える特殊表現
• 特定スキル発動時
アセットの最適化 透視表現
拡大
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 遮蔽物の向こう側のキャラが見える特殊表現
• Unlit のシンプルなマテリアル + VertexOffset で
カメラ方向へ頂点を引き寄せる方法で実現
• カスタムステンシル+ポストプロセスでの実装も
テストしたが負荷の面で断念
アセットの最適化 透視表現
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
UMG
アセットの最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 更新頻度の低いものは Invalidiation Box を使用
• ニンジャラのバトル中のUIの例
• Invalidation Box なし CPU 3~4 ms
• Invalidation Box あり CPU 1~1.5 ms
これくらい差が出る
アセットの最適化 UMG
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• アニメーションは可能ならマテリアルによる表現に変更
• パーツの Transform を変更するアニメーションは最小限に
• 階層を深くしない
• 階層が浅くても重ねると負荷が高いパーツもある
• 例) ScaleBox
• 汎用的なWidget BluePrint( WBP ) にして、その組み合わせで作りす
ぎると、想像以上に階層が深くなることがあるので注意
• 使い易さとパフォーマンスのトレードオフ
• Widget Reflector で状態を確認
アセットの最適化 UMG
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 階層による負荷増加の例
アセットの最適化 UMG
GPU 10.07ms
CPU 8.05ms
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
GPU 10.06ms
CPU 2.32ms
#ue4fest
• 構造による負荷
• 構造を見ただけでは正直よく分からない
• WBP1つ1つパフォーマンスを測り
負荷の高いWBPの構造を解析
• 負荷が高いパーツ、構造をデザイナーに
伝え、それを使わずに作れないか相談
アセットの最適化 UMG
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ゲーム概要、要件
• 描画の基本設定
• UE4×Switchのパフォーマンスについて
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
実装
最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
実装ルール
最適化 実装
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• バトルで使用するBPは、Tickの使用を禁止
• E3 2018, TGS 2018版のTickは全てC++のスクラッチ実装
• 当時は完全同期型の通信システムを採用しており、
標準のUE4には完全同期の通信システムがなかった
• 60fpsに近いパフォーマンスで動作していた
そこから、非同期型のシステムへ移行することになった為、
UE4の非同期通信の仕組みを取り入れる際、
パフォーマンスを担保するためにこのルールを適用
最適化 実装 実装ルール
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
リアクションのある配置物
最適化 実装
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• StaticMesh として配置
• リアクション時に SkeletalMesh へ切り替えてアニメーション再生
• 影は思い切ってオミット
• ダイナミックシャドウは高負荷な上、配置数、密度が読めなかった
最適化 実装 リアクションのある配置物
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
キャラクター
最適化 実装
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• カメラから遠いキャラの移動処理の頻度を下げる
• 35m 以上離れているキャラは 3フレームに1回
• SetRotation の呼び出し抑制
• 回転量の変化が一定閾値を超えない限り呼ばない
• SetActorLocation,SetActorRotation,SetActorTransform の呼び出し
は Overlap や ChildComponentTransform の更新処理が走り高負荷
最適化 実装 キャラクター
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
その他
最適化 実装
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Spawnのタイミングをフレーム分散
• ヒッチ対策
• Tickでの検索処理( FindFunction や Actorの検索等 )の排除
• 気づかずに使われているケースが割とある
• プロファイルをかけると負荷上位に来るので比較的見つけやすい
• オブジェクトをプールしておいて使い回す
• 配置物やアイテムの動的生成を抑制
• 使っていないUMGは徹底的に Collapsed に設定
• Hidden だと 裏で処理は回るので Collapsed
最適化 実装 その他
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ゲーム概要、要件
• 描画の基本設定
• UE4×Switchのパフォーマンスについて
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
ビルド設定
最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• メモリアロケーターに Binned2 を使用
• UE4.22から 標準は Binned3 だが、Binned2 に比べCPU負荷が高い
• UE4.22へ上げた直後は 2~3ms CPU負荷が増加
• UE4.24.2時点でも、1ms ほど負荷が高い
※ニンジャラのバトルシーンでの負荷
• メモリ使用量は Binned3 の方が少ない
• こちらで計測した結果だと、Binned3 の方が多いケースもあり
最適化 ビルド設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Binned3 → Binned2 にする方法
• ニンジャラではTarget.cs に以下のコードを記述
最適化 ビルド設定
if (Target.Platform == UnrealTargetPlatform.Switch)
{
GlobalDefinitions.Add("USE_MALLOC_BINNED3 = 0");
}
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• PGO (Profile-guided optimization) の使用
• 実際のコードの実行のされ方によって
最適化を行ってくれる仕組み
• UE4のSwitchビルドも対応している
• ニンジャラのバトルシーンでは 1~3ms CPUが高速化
最適化 ビルド設定
非常に強力!
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• PGOの注意点
• どれだけ最適化が出来るのか予測が難しい
• トレーニングラン時のプレイの仕方や、その時点でのコードに左右される
• PGOをあてにしたパフォーマンス設計は危険
• ニンジャラでは、PGO無しでも 16.666ms に収まる状態まで
CPUを最適化し、少し余裕を持たせるくらいの感覚で使用
• ビルド(リンク)時間が長い
• プロファイルデータ収集用に専用のビルドを行う必要がある
• UE4.23 だと +1時間
• UE4.24 だと +15分
※ CPUがCore i7-8700kのマシンでの時間
最適化 ビルド設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ニンジャラでのPGOの運用
• TestBuild でトレーニングラン(プロファイルの収集)
• プロファイルの書き出しにデバッグ用の機能を使ったため
• 本来は ShippingBuild でやるべき
• トレーニングランは人力
• 自動テストに組み込むのが理想
• 重点的に最適化したい箇所が明確な場合は、人力が有利かも
最適化 ビルド設定
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ゲーム概要、要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
エンジン改造
最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• カメラ位置と回転の取得の最適化
• APlayerCameraManager::GetCameraViewPoint の修正
• 上記の FMinimalViewInfo のメンバ FPostProcessSettings のコピーが高負荷
→ カメラ位置と回転を FMinimalViewInfo と分けてキャッシュ
• パーティクルシステムからの呼び出しが多数
• 全体の約50%
この修正で、1~2ms 高速化
最適化 エンジン改造
const FMinimalViewInfo CurrentPOV = GetCameraCachePOV();
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• TArrayをReserveするように対応
• ColorGrading の毎フレーム更新のスキップ
• VertexFog 時に VolumetricFog を参照しないように修正
• シェーダーに少し手を加えた
• AABB計算の最適化
• FKSphylElem,FKBoxElem の GetTransform() を使わずに、
キャッシュした Transform を使うように修正
最適化 エンジン改造
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
こんな感じで最適化を進めた結果
60fpsで動くようになりました
最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
なんとかできた!
最適化
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ゲーム概要、要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
対応しなかったもの
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Precomputed Visibility Volume
• 空中戦、空中移動が多く、壁側面も歩けるので、不向き
• 仕様上、カメラがオブジェクトの中にめり込む可能性があるため、
その場合 Visibility がおかしくなる
• UMG の RetainerBox
• UE4.24で Transform の補正処理にバグがあり使用を断念
• issue番号:UE-88093
対応しなかったもの
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• Instanced Static Mesh
• テストしてみたが、Switchでは1つ1つ描画する方が
パフォーマンスが良かった
• BPのネイティブ化
• 有効にすることで若干高速化することは検証済み
• ネイティブ化が原因のパッケージングエラーが出ることがあり、
安全を優先し無効化
• 既にパフォーマンス要件を満たせていたのも理由
対応しなかったもの
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• ゲーム概要、要件
• UE4×Switchのパフォーマンスについて
• 描画の基本設定
• 最適化
• アセット
• 実装
• ビルド設定
• エンジン改造
• 対応しなかったもの
• まとめ
アジェンダ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
まとめ
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• UE4×Switch の パフォーマンス
• 描画の基本設定
• 各種最適化
• アセット、実装、ビルド設定、エンジン改造
以上についてご紹介しました
一見広範囲に見えますが、作業自体はシンプルです
まとめ Switch×UE4 で 60fpsの対戦アクション実現のために
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 最適化作業のサイクル
1.負荷の調査
2.高負荷部分の原因を調べる
• 不要な処理、または軽量化の余地がありそう
→3へ
• 端折れない必要な処理だった
→1へ
3.負荷対策
• 不要なものならカット
• 最適化の検証 / 実行
これをひたすら繰り返す
まとめ Switch×UE4 で 60fpsの対戦アクション実現のために
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• 所感
• 実機での負荷確認は非常に重要
• 負荷調査のサイクルをどれだけ回せるかが最適化のキモ
• 継続して計測し続けることが大事
• 必要機能をきちんと取捨選択すれば Switch で十分高速に動作する
• デフォルト設定のまま使わない
• 最初に必要な機能や設定と不要なものとを切り分ける事が重要
• 一般的にパフォーマンスで気を付けるべき点は、UE4でも同じ
• エンジンが「いい感じ」にしてくれることは無い
• 機能として用意はされているが、「意識して」使う必要がある
まとめ Switch×UE4 で 60fpsの対戦アクション実現のために
#ue4fest
• WinterCrownWORKS 様
• ソレイユ株式会社 様
• 有限会社ウニコ 様
謝辞
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
以上で本発表は終了となります
本発表が皆様の一助となれば幸いです
ご清聴ありがとうございました
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.
#ue4fest
• UE4×Wwise×Nintendo Switch――『ニンジャラ』サウンド制作事例
https://www.gamebusiness.jp/article/2020/08/21/17500.html
• 質問等
• tsumita@gungho.jp 角田 高宏(プログラマー)
• tehara@gungho.jp 江原 崇将(デザイナー)
まで
付録
@2020 GungHo Online Entertainment, Inc. All Rights Reserved.