プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【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

 

 

 

unrealengine.jp