【UE】Fest Winter メモ②
『聖剣伝説3』スマートフォン版における UE4アプリ開発事例~Making of Mana~
CS版からの移植
開発時期から想定していたわけではない
アーティスト編
スマートフォン版での変更点
・レンダリング
フォワードレンダリングに変更
ライトやGバッファなどに関して機能の制限がかかる
・アンチエイリアシング
MobileMSAAに変更
猫でも分かるUE4のポストプロセスを使った演出・絵作り
・アウトライン表現
フォワードレンダリングによりGバッファが使えない
ポスト処理のみでの表現
深度比較をメイン
・フォグ表現
少しのフォグが全体を巻き込むほど
半透明フォグにも影響が起きる
MSAAによりMobileSeparateTranslucencyが使えない
ポスプロから背景マテリアルへ変更
エミッシブ、スペキュラ、AO等
影をCSMに変更
AmbientCubeMapが使用できない
SkyLightを調整して代用
・その他
ボーンが75以下にしなければ
マテリアルを分割しボーンを分散
座標系のマテリアルの処理がブロックノイズのような表示がされてしまう
CustomizedUV、FullPrecisionで対応
・KawaiiPhysics + AnimDynamics(揺れもの系)は変更なし
KawaiiPhysics 岡田さん制作の非公式物理プラグイン
GitHub - pafuhana1213/KawaiiPhysics: KawaiiPhysics : Simple fake Physics for UnrealEngine4
最適化
GPUについて
バトルエフェクトの軽量化
アセット調整等
ゲームオプションで品質を変更可能に
CPUについて
GPUよりネック
DrawCallsは1000~1200に
ハードウェアオクルージョンカリングがCSでは効いていた
ステージの最果てまで描画されてしまう
対策として
・距離カリング
・ソフトウェアオクルージョンカリング
・マージ、インスタンス化、HLOD、事前計算カリング
距離カリング
想定以上に物が非表示になってしまっていた
小さなアセットの集合体で構成されたものがあるため、一括設定が出来ない
ソフトウェアオクルージョンカリング
特定アセットのLODを設定することでカリング
マージ
ヒューマンエラーを考慮して遠景のものだけ
HLOD、事前計算カリング
メモリの都合上見送り
メモリについて
可能な限りアセットで対応
アセットリダクション
GCCツールではなくエンジンだけでほぼ対応
プログラマ編
開発環境
QA期間中
SmartBeatを導入
アプリサイズ制限の壁
4GiB未満に減らさないとパッケージングエラー
テクスチャ解像度を極限に下げた
DeviceProfiles.iniのTextureLODGroups
クオリティを戻すためにアセットを4GiB以内で取り扱うように調整
アプリ起動時と追加ダウンロードで必要なアセットを分ける
PrimaryAssetLavelによるChunkID指定で対応
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
特定のフロー追加時、または主導で追加アセットをダウンロード
iOS
Mobile Patch Utility
Andoroid
Google Play Asset Delivery
Android App Bundleで利用
ObbFilter
Chunk Downloader
見送り
4.27での更新内容を見る限り、今後利用としてよさそう
追加アセットの更新/破損をアプリが検知したらダウンロードを行う
アプリのバージョンとアセットのバージョンが不一致時
Android固有の対応
SavedGames エンジン機能拡張
OnlineUserCloudInterface経由
最適化
C++化やTickのEvent化
未開放EffectをPool化
処理負荷のスパイクが目立っていた
ラインタイムでのシェーダーコンパイル負荷
PSOキャッシュによる改善
収集中にクラッシュが起きるのでレベル分割などで分ける
PreCompileが2回目以降起動時でも起きた
ProgramBinaryCache