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が出ない。
 →必ず、端末で負荷を確認する。