Instanced Static Meshを活用してゲームパフォーマンスを向上
今回は、ゲームステージに設置している各スタティックメッシュをインスタンス化して、ゲーム容量を削減した方法を備忘録にします。
※作業環境:UEバージョン5.3.2
備忘録
作業中に何か不具合が発生するかもしれません。
実施する際はバックアップを取っておいたほうが安心です。
「Draw Primitive calls」の確認
まずは処理量の確認をしていきます。
「Cmd」横の欄に「stat rhi」と入力して「Enter」キーを押します。
すると以下のようにデータの統計が表示されます。
この中に表示されている「Draw Primitive calls」の数値を削減していきます。
CPUからGPUに対して描画指示を出すものらしいので、この値が小さいほどゲームパフォーマンスは上がるみたいです。
統計を消したいときは「Cmd」横の欄に「stat rhi」と入力して決定すると消えます。(他にも良い方法あるかも)
コマンドの再入力方法は、下の記事でも紹介しています。
操作手順
それではInstanced Static Meshをやっていきたいと思います。
ちなみにInstanced Static Meshとは、同じスタティックメッシュを複数回描画する際にパフォーマンスを最適化する技術みたいです。
別々に処理するんじゃなくて、同じなら処理流用しようみたいな感じだと思います。
まとめたいスタティックメッシュを選択します。
選択したらツールバーの「Actor」の「Merge Actors」の「Batch」を選択します。
処理完了後、レベル上に新しくActorが作成されています。
統計を確認すると「Draw Primitive calls」の数値が削減されているはずです。
さらに容量を減らすためにマテリアルをマージする方法
今回は実施していませんが、複数のマテリアルを1つのマテリアルに統合して、容量を削減する方法もあります。
いつか使うかもしれないので、やり方だけまとめておきます。
マージしたいマテリアルを持つスタティックメッシュを選択します。
選択したらツールバーの「Actor」の「Merge Actors」の「Merge Actors Settings…」を選択します。
設定を一部変更して、「Merge Actors」を選択して保存します。
※今回は未実施なので、設定の変更はしていません。
終わり
モバイルゲーム制作でヒッチが起きたので、その対策で試してみましたが、私の問題には効果ありませんでした。
ちなみに、パッケージ化したデータを実機に転送する流れでアプリインストールしたらヒッチは改善されました。
iPhone実機なら、まずiOS用にパッケージ化を行い、作成されたipaファイルを実機に転送してアプリインストールする流れです。
おそらくパッケージ化の段階で最適化されたのだと思います。(たぶん。。。)
以下の記事で紹介していますので、ご参考に確認してみてください。
他の記事を探す
他の記事も気になる方は、以下の記事の目次を確認ください。