今回は開発中のゲームをAndroidで動かそうとしていたのですが
いざ動かしてみるとおもすぎて全く動きませんでした・・・
そんなときに行うのがプロファイリングです。
Androidで動かすと重い!という方はぜひ読んでみてくださいね。
プロファイリングとは
基本的にゲーム開発は主にPC環境で行います。
そして実機と呼ばれるPS4,Xbox,Switchなどの据え置き機からiPhone,Androidといった携帯端末までにインストールなどをして実際の動作を確認したりします。
しかし、その際に実機だと非常に重くなってしまうことがよくあるのです。
今回の私のようにPCの開発環境ではサクサク動いていたのに実際Androidでは全く操作できないこともザラです(´・ω・`)
そんなときに処理のどこが重いのかを確認することができるのがプロファイリング機能です。
Unityでも標準で使える機能で非常に便利ですね。
ウィンドウの出し方
こちらの画像にあるように
Window→Analysis→Profiler(赤丸のところ)で専用のウィンドウを立ち上げることができます。
そして下記が自分が計測した時の画面になるのですが
ただ開いただけの状態だと自動で計測はされないため自分で各種設定する必要があります。
他のサイトを参考にしたけど…
実行中のゲームアプリを起動して、USBで接続されている携帯端末に対して行う、下記サイトで言っていることを参考させてもらいました。
ただこんな風にコマンドを入れる方法もあったのですがUnityにバンドルされているAndroidSDKで指定してみてもエラーが出るだけでうまくいきませんでした…
調べている内に機種がどうたらとか色々複雑になりそうだったのでひとまず別の方法がないか調査していました。
このサイトで参考にした方法はひとまずBuild画面から.apk出力時に「Development Build」にチェックを入れることです。
偶然見つけた別の方法
ふと、アプリを起動しっぱなしにしていると
どのアプリと接続するか、選択するウィンドウになぜか自分のAndroid(黄色の線)が現れていたのです!しかもIPアドレスはローカルネットワーク(wi-fi)を表す192.162~を表すものでした。
「まさか・・・ッ!」
と思って押してその項目を選択し、Recordボタンを押すとアプリの状況と連動してプロファイラーが動き出しました。
んーUnity様様ですね。めちゃ便利。これなら家のどこにてもプロファイリングできちゃいますね(しないけど)
プロファイリングで最適化(高速化)できた
この画面まで行ければ、あとはアプリ側の重いところまで行ってRecordボタンを押して、その処理がなんなのか調べます。
そしてその原因をネットで検索やら関数名などから推測して色々試していきます。
私の場合は「Graphics.PresentAndSync」という関数が凄い重そうだったのでグラフィック周りが重いと判断して、ポストエフェクトなどの画面効果周りを切り、背景Spriteのデフォルトマテリアルを使っていなかったものをデフォルトに変えていきました。すると全く動かせなかったゲームなんとか動くようになりました(まだ重いですけどね…)。
注意点
今回プロファイリング出来たのは私の環境が整っていた可能性があります。
ある程度どのような環境かだけ共有しておきたいと思います。
UnityのバージョンはUnity2019.2.12f1、UnityHubでインストールしているためAnrdoid系のコンポーネントはUnityHubで全てインストールしています。
開発ゲームのPR
また今回プロファイルするきっかけとなったゲームを現在絶賛開発中です。
YouTubeで開発ブログもしていますのでご興味のある方はぜひ見てみてくださいね。
最後に
今回はUnityでのAnrdoidをプロファイリングしたことを記事にしました。
当然iPhoneをする場合には同じ手間がかかるかもしれませんが、Unity様様なのでwi-fiにつなぐだけで出来たら嬉しいなぁって思っています。
正直、せっかくゲーム開発が楽ちんなUnityを使っているんですからハード周りをこねくりましたり、あまり泥臭いことはしたくないのが本音ですからね( ̄ー ̄)ニヤリ
ではこちらの記事が参考になれば幸いです。
ここまでお読みいただきありがとうございました。
コメント