2016/12/22(木)に開催された「【Unity道場16】パフォーマンス最適化のポイント」に参加しました。
たくさんの質問に答えていただいた講師の山村さんありがとうございました。
Tweetメモ
一般的なソフトウェアではこういう言葉がありますね、
「早すぎる最適化は悪の根源である」 #unity道場
— むろほし (@RyotaMurohoshi) 2016年12月22日
これに対して、講師の山村さんは「Unityにおけるゲーム開発においては」
「早すぎる最適化は...まぁ...アリじゃないか」 #unity道場
— むろほし (@RyotaMurohoshi) 2016年12月22日
だそうです。大きな手戻りを防ぐために、ポイントはしっかり抑えた方がよさそうですね。
自分が作っているプラットフォームに対応した、それぞれに適切な最適化が必要ですね。まずは計測!!!
実機ビルドの大切さー #unity道場
— むろほし (@RyotaMurohoshi) 2016年12月22日
プラットフォームに適したパフォーマンス
— むろほし (@RyotaMurohoshi) 2016年12月22日
大切!!!! #unity道場
自分が作っている・作る予定のゲームで一番関係ありそうなのが、これ。表示内容を更新するUIゲームオブジェクト群のCanvasコンポーネント。
Canvasまじか
— むろほし (@RyotaMurohoshi) 2016年12月22日
「UIの一部が可変な物に、可変なGameObjectにCanvasをつけるテク」#unity道場
個人的に一番クリティカルなネタは「Canvasネタ」でしたー
— むろほし (@RyotaMurohoshi) 2016年12月22日
* ダメージビュー
* HPバー
とかは計測してみようかな?#unity道場
Animator関連のネタも個人的には要チェック。
AnimatorのCullingMode
— むろほし (@RyotaMurohoshi) 2016年12月22日
こいつかな?https://t.co/dDtOat9kZ3
#unity道場
AnimatorのあるGameObject
— むろほし (@RyotaMurohoshi) 2016年12月22日
Componentのdisableとenable、
GameObjectのactiveとdeactive
その後の内部状態、違うのかー
#unity道場
Asset Bundleの構成も大事。Resouecesディレクトリが無駄にでかいのも影響しますね。
AssetBundleの場合、Assetの構成・設計が大切#unity道場
— むろほし (@RyotaMurohoshi) 2016年12月22日
無駄にアセットをロードしないことが大事なんだなー
— むろほし (@RyotaMurohoshi) 2016年12月22日
あたりまえだけど#unity道場
GameObjectのSetActiveも要注意
GameObject 非Activie化、
— むろほし (@RyotaMurohoshi) 2016年12月22日
* Collider
* Canvas
* Animator
内部的には、破壊に近い?#unity道場
GameObjectのActivieをon・off
— むろほし (@RyotaMurohoshi) 2016年12月22日
AnimatorのStateがまずい状態になるのか #unity道場
さいごに
最適化に関しては、やりすぎると読みづらいコード・トリッキーな構成になってしまうと思います。
また、プラットフォームやSDKのアップデートや改善により、あまり効果が無くなったり、逆効果になってしまうこともあるでしょう。
ただ、ゲームにおいてパフォーマンスの問題は非常に悩ましく大きな問題です。
問題にぶちあったったら、知識を実践し知恵にして、一つ一つ解決していきたいと思います。
当てずっぽうにやらず、この知識をしっかり実測しながら、または仕組みを理解しながら改善ですね。
おまけ
便利だなー
いやー便利だなー
— むろほし (@RyotaMurohoshi) 2016年12月22日
ミートアップアプリ、便利だなーhttps://t.co/VE4YVymfsy
#unity道場