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

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

akatsukinewgrad
August 04, 2022
380

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

akatsukinewgrad

August 04, 2022
Tweet

Transcript

  1. Unityで大量のオブジェクト

    を吹き飛ばしたい

    光吉健汰

    View full-size slide

  2. 自己紹介

    ● 光吉健汰

    ● 22卒サーバーサイドエンジニア

    ● 趣味:ゲーム

    ○ FPS、格闘、パズル、ストラテジー、音ゲーなど 

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


    View full-size slide

  3. 研修で作成したゲーム「Flick It」の負荷改善のお話

    ● フリック入力で、物体を回転させ、

    くっついているものを吹き飛ばすゲーム

    ● いっぱいくっついていると、吹き飛ばす時の爽快感が
    高まる

    ● 大量のオブジェクト+物理演算なので、

    負荷が大きい

    今回のお話


    View full-size slide

  4. 方針

    計測、改善を繰り返し、負荷改善を図る

    計測を行い、原因を絞ってから改善をしよう

    →闇雲に改善を行っても、効果が少ない可能性がある


    View full-size slide

  5. 計測

    ● 実機で動作させながら、プロファイラで負荷を確認

    Development Buildと 

    Autoconnect Profilerを 

    有効にする

    ゲームを起動すると、 

    Profilerウィンドウが 

    立ち上がる


    View full-size slide

  6. 原因特定

    ● プロファイラから、どの部分で負荷が大きいかを探る

    ○ Rendering:描画に関する処理 

    ○ Scripts:スクリプトの処理 

    ○ Physics:物理演算の処理 


    View full-size slide

  7. 改善:描画負荷

    原因

    ● ポストエフェクト

    ● オブジェクトが多い

    解決策

    ● ポストエフェクトを切る

    ● くっついているオブジェクトの種類は少ない

    →GPUインスタンシングを使う


    View full-size slide

  8. 改善:物理演算負荷

    原因

    ● Rigidbodyの使いすぎ

    解決策

    ● Rigidbodyのついたオブジェクトを減らす

    ○ 元々の趣旨に反しているが、配置を工夫することで気付きにくくする 

    ● 処理のシンプルな物理演算を書く

    ○ 今回の場合、くっついているオブジェクトは 

    遠心力の計算さえできれば良い 


    View full-size slide

  9. 改善:スクリプト処理

    原因の特定

    プロファイラからどの関数が重いか特定する

    Updateが重い→Updateで不必要な処理をしていないか確認する


    View full-size slide

  10. まとめ

    ● 研修時に行なった負荷改善を紹介した

    ● 負荷改善は、計測をしてから行う

    ● モバイル端末では、思った以上にFPSが出ない。

    →必ず、端末で負荷を確認する。


    View full-size slide