Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
by
akatsukinewgrad
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Unityで大量のオブジェクト を吹き飛ばしたい 光吉健汰
Slide 2
Slide 2 text
自己紹介 ● 光吉健汰 ● 22卒サーバーサイドエンジニア ● 趣味:ゲーム ○ FPS、格闘、パズル、ストラテジー、音ゲーなど ● そろそろ実家の猫に会いたい
Slide 3
Slide 3 text
研修で作成したゲーム「Flick It」の負荷改善のお話 ● フリック入力で、物体を回転させ、 くっついているものを吹き飛ばすゲーム ● いっぱいくっついていると、吹き飛ばす時の爽快感が 高まる ● 大量のオブジェクト+物理演算なので、 負荷が大きい 今回のお話
Slide 4
Slide 4 text
方針 計測、改善を繰り返し、負荷改善を図る 計測を行い、原因を絞ってから改善をしよう →闇雲に改善を行っても、効果が少ない可能性がある
Slide 5
Slide 5 text
計測 ● 実機で動作させながら、プロファイラで負荷を確認 Development Buildと Autoconnect Profilerを 有効にする ゲームを起動すると、 Profilerウィンドウが 立ち上がる
Slide 6
Slide 6 text
原因特定 ● プロファイラから、どの部分で負荷が大きいかを探る ○ Rendering:描画に関する処理 ○ Scripts:スクリプトの処理 ○ Physics:物理演算の処理
Slide 7
Slide 7 text
改善:描画負荷 原因 ● ポストエフェクト ● オブジェクトが多い 解決策 ● ポストエフェクトを切る ● くっついているオブジェクトの種類は少ない →GPUインスタンシングを使う
Slide 8
Slide 8 text
改善:物理演算負荷 原因 ● Rigidbodyの使いすぎ 解決策 ● Rigidbodyのついたオブジェクトを減らす ○ 元々の趣旨に反しているが、配置を工夫することで気付きにくくする ● 処理のシンプルな物理演算を書く ○ 今回の場合、くっついているオブジェクトは 遠心力の計算さえできれば良い
Slide 9
Slide 9 text
改善:スクリプト処理 原因の特定 プロファイラからどの関数が重いか特定する Updateが重い→Updateで不必要な処理をしていないか確認する
Slide 10
Slide 10 text
まとめ ● 研修時に行なった負荷改善を紹介した ● 負荷改善は、計測をしてから行う ● モバイル端末では、思った以上にFPSが出ない。 →必ず、端末で負荷を確認する。