このガイドは、新しいモバイルゲームの企画やプロトタイプの作成に困っていたり、または既存のプロジェクトをモバイルデバイス上に実装してスムーズに実行しようと苦労している、モバイルゲームの開発にまだ慣れていない開発者のためのものです。このガイドは、また、古い PC やネットブックをターゲットにした「モバイルゲーム」または「ブラウザーゲーム」を作るすべての人たちに参考となる資料です。
最適化は広範囲に渡るトピックで、最適化の方法はゲームによります。ですから、このガイドは、スムーズな開発の手順を説明するガイドとしてよりもむしろ、入門や参考として読んでいただくことを目的としています。
ここでの情報は、初代 iPad、iPhone 3GS と第 3 世代目の iPod Touch の上で使われている Apple A4 チップセットのレベルのハードウェアを前提としています。Android 側は、Nexus One、または Android 2.3 Gingerbread を実行する Android モバイルのほとんどを意味します。これらのデバイスは、平均すると 2010 年の初期にリリースされました。アプリケーションがよく出回っている市場では、これらのデバイスは旧式で動作が遅いのですが、市場の大部分を占めるためサポートすべきでしょう。
Apple モバイルデバイスの技術的仕様の概要は、 iOS ハードウェアガイド を参照してください。iPhone 3G のような非常に性能の低いモバイルデバイスや iPod Touch の第 1 世代、第 2 世代は性能が極端に限られており、最適化のためにさらに多くのことに注意する必要があります。ただし、これらのデバイスをアップグレードしない消費者がそのアプリを購入するかは疑問です。ですから、無料アプリを作っているのでない限り、古いハードウェアをサポートする価値はないかもしれません。
世の中には、はるかに遅いモバイルも、はるかに速いモバイルもあります。モバイルデバイスの計算能力は、驚くべき速さで増加しています。モバイル GPU の新世代が前世代より 5 倍速くなると聞くことはあります。その進化は PC 産業と比較して、信じられないほど 高速 です。
英国のコンピューター科学者、マイケル A. ジャクソンのプログラムの最適化ルールは多くの人に引用され紹介されています。
「プログラム最適化の最初のルールは、最適化するな。2 番目のルールは (上級者に限る) まだ最適化するな。」
彼の理論的根拠は、コンピューターがこれだけ高速になっていて、その性能が向上する早さを考えると、何かをプログラムしたら、そのプログラムはたいてい、十分速く動くであろう、というものでした。さらに、過度に最適化しようとすると、かえって複雑にしすぎたり制限が生じてしまったり、不具合を発生させてしまうかもしれません。
ただし、モバイルゲームの開発となると他に考慮しなければいけない部分が出てきます。現在、市場に出回っているハードウェアには、普段私達が慣れているコンピューター(PC)に比べて非常に多くの制限があります。そのため、デバイス上で実行できないようなものを作成するリスクは、最初から最適化して複雑すぎるものを作成するリスクと釣り合います。
このガイドを通じて、最適化が大いに役立つ状況、対して、最適化がただ根拠なく行われる状況を指摘します。
アーティストもまた、プラットフォームの限界とそれを回避するための方法を知っている必要があります。そうすれば、彼らは作業をやり直す必要もなく、報われる創造的な選択をすることができます。
以下の 2 つはゲームパフォーマンスの一般的な傾向を詳述し、ゲームを最適化するために最も適切な方法を説明します。また、すでにゲームを作成中である場合は、最も最適化を必要としているのは何かを直感的に把握する方法を説明します。
どのように最適化すればパフォーマンスの大きな向上につながるか、時間の無駄になるかを見極めるのに、プロファイリングは重要な役割を果たします。別のチップ (GPU) でのレンダリングの処理方法のために、フレームのレンダリングにかかる時間は、単純に CPU の消費時間と GPU の消費時間を足したものではありません。2 つを足したよりも長くなります。
もし CPU が処理を遅くしているならば、シェーダーを最適化してもフレームレートを上げることはまったくできません。また、GPU が処理を遅くしているならば、物理演算とスクリプトを最適化してもまったく助けになりません。
多くの場合、ゲームの異なる部分、異なる状況ではパフォーマンスも異なります。つまり、スクリプトのせいでゲームのある部分に全部で 100 ミリ秒のフレームが発生する場合もあるし、また、他の部分では、何かをレンダリングするために同じような減速が発生する場合があります。少なくとも、ゲームを最適化しようとする場合、すべてのボトルネックがどこにあるかを知っておく必要があります。
Unity の主なプロファイラーは、iOS、Android、Tizen をターゲットとするときに使用できます。それを使用方の基本については、プロファイラーを参照してください。
Andriod と iOS には両方とも、ビルトインの内部プロファイラーがあり、30 フレームごとにテキストを吐き出します。それによって、どの側面 (物理演算、スクリプト、レンダリングなど) がゲームを遅くしているかが把握しやすくなります。ただし、あまり詳細な分析ではありません (例えば、どのスクリプトやレンダラーが原因になっているかを指摘しません)。
プロファイラーの仕組みや使用法に関する詳細は ビルトインプロファイラー を参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.