最適化をしよう!
最適化案5:解像度を下げる
単純にこちらはゲームの解像度を下げます。
クオリティに対してハードの性能が追いついていないので当然ですね^^;
対応方法
他にも良い方法があるかもしれませんが下記のコードを
ゲーム開始時に呼び出せば解像度を下げることが出来ます。
private void Awake() { Screen.SetResolution(800, 450, false); }
解像度を下げると軽くなる理由
こちら描画の流れを知っているとわかりやすいのですが
一般的な描画エンジンでは「ポリゴンの形状確定(前述のポリゴン描画)」→「画面のピクセル(画面の画素の描画)」で成り立っています。
この「ピクセルの描画」というのがフラグメントシェーダ、ピクセルシェーダと呼ばれ画面の解像度だけ実行される処理になります。
たとえばHD解像度では画面全体に処理した場合、「1280×720=921600」、92万回以上もの処理をすることになります。
そして私のAndroidは不釣り合いにもフルHDと呼ばれる「1920×1080=2073600」、207万回以上の処理をしていたことになります。

実はこれが処理が重くなる主な原因だったんですよね(泣)
みなさんも注意してくださいね!
解像度を下げて画面は汚くならないの?
残念ながら当然画質は落ちます…
ただゲームがカクカクで操作できないというのはゲームとしては論外です。
いくらキレイでも操作できなければただの絵画になってしまいますのでゲームである以上どこが一番重要か見極める力も重要です。
私の場合は一旦ざっくり削って800×450(16:9)まで落としちゃいました。
ちなみにPS4の最新ゲームなども
実は最新PS4ゲームなんかも実は1280×720なんかで実際は動いていたりします。
なので携帯ゲームで同程度以上使うなんでおこがましいと感じてしまうのが本音ですね…
なぜ1280×720でも最新タイトルがキレイかというと
完成した画面を高画質化する「チェッカーボードレンダリング」といった技術を使って4K画面なんかも対応していたりするようですね。
番外編:将来はWEBベースだから最適化は要らない説
「これからはウェブベースのゲーム(Amazon Web Serviceなどを用いた)が処理するから最適化なんていらないんじゃないの?」って言う方もいるかも知れません。
ただ自分はそうは思えません。
その理由はサーバー側が処理するため、その分サーバーの月額費用が上がることが容易に想像できるためです。
一つのアプリが重いということは「1アプリの重さ×ユーザー数=サーバー負荷」となるため物によってはサーバー利用ができないことやサーバーの月額費用が莫大な費用が必要になると思われます。
少しの手間でサーバー運用費をガクッ下げられるならウハウハですね。
まあただの妄想ですが…
軽いアプリに越したことはないので興味のある方はぜひ最適化してみてくださいね。
活動内容のPR
下記が本サイトでの活動内容となります。
終わりに
いかがでしたでしょうか。
今回はあくまで経験則のため間違いもあるかもしれませんが、このテクニックを使って皆さんのアプリも軽く慣れば幸いです。
私は今までUnityを使って本格的な開発をしたことがなかったので
この問題のおかげでシェーダーの書き方、プロファイルの使い方、最適化の方法まで知ることができかなり有益な試練でした(笑)
時間がかかったのも事実ですが、その分成長も出来てよかったです(^o^)
では長くなってしまいましたがここまでお読みいただきありがとうございました。



コメント