Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unityで大量のオブジェクト_を吹き飛ばしたい.pdf

akatsukinewgrad
August 04, 2022
150

 Unityで大量のオブジェクト_を吹き飛ばしたい.pdf

akatsukinewgrad

August 04, 2022
Tweet

Transcript

  1. Unityで大量のオブジェクト
 を吹き飛ばしたい
 光吉健汰

  2. 自己紹介
 • 光吉健汰
 • 22卒サーバーサイドエンジニア
 • 趣味:ゲーム
 ◦ FPS、格闘、パズル、ストラテジー、音ゲーなど 


    • そろそろ実家の猫に会いたい

  3. 研修で作成したゲーム「Flick It」の負荷改善のお話
 • フリック入力で、物体を回転させ、
 くっついているものを吹き飛ばすゲーム
 • いっぱいくっついていると、吹き飛ばす時の爽快感が 高まる
 • 大量のオブジェクト+物理演算なので、


    負荷が大きい
 今回のお話

  4. 方針
 計測、改善を繰り返し、負荷改善を図る
 計測を行い、原因を絞ってから改善をしよう
 →闇雲に改善を行っても、効果が少ない可能性がある
 


  5. 計測
 • 実機で動作させながら、プロファイラで負荷を確認
 Development Buildと 
 Autoconnect Profilerを 
 有効にする


    ゲームを起動すると、 
 Profilerウィンドウが 
 立ち上がる

  6. 原因特定
 • プロファイラから、どの部分で負荷が大きいかを探る
 ◦ Rendering:描画に関する処理 
 ◦ Scripts:スクリプトの処理 
 ◦

    Physics:物理演算の処理 

  7. 改善:描画負荷
 原因
 • ポストエフェクト
 • オブジェクトが多い
 解決策
 • ポストエフェクトを切る
 •

    くっついているオブジェクトの種類は少ない
 →GPUインスタンシングを使う

  8. 改善:物理演算負荷
 原因
 • Rigidbodyの使いすぎ
 解決策
 • Rigidbodyのついたオブジェクトを減らす
 ◦ 元々の趣旨に反しているが、配置を工夫することで気付きにくくする 


    • 処理のシンプルな物理演算を書く
 ◦ 今回の場合、くっついているオブジェクトは 
 遠心力の計算さえできれば良い 

  9. 改善:スクリプト処理
 原因の特定
 プロファイラからどの関数が重いか特定する
 Updateが重い→Updateで不必要な処理をしていないか確認する


  10. まとめ
 • 研修時に行なった負荷改善を紹介した
 • 負荷改善は、計測をしてから行う
 • モバイル端末では、思った以上にFPSが出ない。
 →必ず、端末で負荷を確認する。