Unity3D battery usage research
Unityと消費電力Gotanda.unity #32017/11/29@mattak
View Slide
モチベーション位置ゲームなど…- 屋外- 充電できない環境で長時間遊ばれる- バッテリーくいすぎると不評=> Unityだとどんな感じか気になったので調査
実験端末:- iPhoneX (iOS 11.1)比較:- iOS Native- WebView- Unity
動作白表示するUnity- Canvas & Image
検証1.Native/WebView/Unity消費電力が大きいのは?
iOS Native
iOS Native (energy)
iOS Native (energy)΄΅%JTQMBZ ੨$16 ࢵىಈ࣌ͷΈ
iOS Native (cpu)
iOS Native (cpu)$16ىಈ࣌ͷΈ
WebView
WebView (energy)
WebView (energy)ॳظ$16 ࢵ͕एׯ΄΅%JTQMBZ ੨
WebView (cpu)
LocalでのHTML表示だったので、通信して表示みる
WebView (energy) - 通信表示
WebView (energy) - 通信表示/FUXPSL ᒵͱ0WFSIFBE Ͱిྗ͘͏
IUUQTEFWFMPQFSBQQMFDPNMJCSBSZDPOUFOUEPDVNFOUBUJPO1FSGPSNBODF$PODFQUVBM&OFSHZ(VJEFJ04&OFSHZBOE/FUXPSLJOHIUNMOverhead?Networking Variable Effect on Energy(developer.apple.com)ネットワーク状態に関連してバッテリーが影響を受ける- 例1: 3G/LTEは WiFiよりも電池くう (10h -> 11h)- 例2: network throughputが悪いと待機時間画のびる- 例3: 散発的な通信 は電池食う (通信すると待機状態になる)
WebView (energy) - 通信表示௨৴ػ ௨৴։࢝ ᒵ
Unity
Unity (energy)
Χϥϑϧ
Unity (energy)%JTQMBZ ੨(16 ͕ʑ$16 ࢵৗʹ
Unity (energy)௨৴։࢝ ᒵ௨৴ػ
Network?UnityAnalyticsが有効になっていた!
外してみたが変わらず…
一旦諦めてCPUの状態をみる
Unity (cpu)
Unity (cpu)ཪͰͣͬͱήʔϜϧʔϓ͕ճ͍ͬͯΔ
検証2.画面表示を黒にするのは効果あるのか?
バッテリーセーバー機能- 画面が下をむくと自動的に黒
動作黒表示するUnity- Canvas & Image
Unity (battery) - 白画面
Unity (battery) - 黒画面
Unity (battery) - 黒画面%JTQMBZ ੨͕ݮͬͯΔʂ
Native iOSでも同様に黒にしてみる
Native iOS (battery) - 黒画面
Native iOS (battery) - 黒画面΄΅όοςϦʔফඅͳ͠
よく観察すると、最近のOSは頻繁に黒画面になる- ロックスクリーンが黒っぽい- 数秒で輝度が下がる- …
ちなみに、電源ボタン押して画面ロックしてみると
Unity (battery) - バックグラウンド
Unity (battery) - バックグラウンドͦͷؒ$16(16ͳͲΖΖࢭ·Δ
白画面 >> 黒画面 >> ロックスクリーン
検証3.FPSを下げるのは効果あるのか?
V Sync Count => Dont SyncApplication.targetFrameRate = 1
Unity (fps) - fps1 (黒画面)
Unity (fps) - fps1 (黒画面)'14
Unity (battery) - fps1 (黒画面)
Unity (battery) - fps1 (黒画面)(16 ͕΄΅ಈ͍ͯͳ͍/FUXPSL ᒵͱ0WFSIFBE ͕େ/FUXPSL ᒵ͑͞མͪண͚΄΅$16 ࢵͷΈ
Unity (cpu) - fps1 (黒画面)
Unity (cpu) - fps1 (黒画面)ฏۉ΄΅΄΅ಈ͍ͯͳ͍
高FPS > 低FPS (CPU/GPUへのインパクト)
結論検証1. 消費電力が大きいのは?- Native <= WebView << Unity検証2. 黒画面効果ある?- YES. ただ画面ロックのほうが更に効果ある検証3. FPS下げるの効果ある?- YES. GPUとCPU使用率が下がる
結論ネットワーク- 散発リクエストしちゃだめ- Overheadは地味に電力くう- Unityは裏で定期的に通信してる画面- 黒っぽくしよう- 画面ロックしようFPS- 下げよう