このガイドは、モバイルゲーム開発する新しい開発者のためのもので、モバイルデバイス上でスムーズに実行する、誰もが圧倒されるような新しいモバイルゲーム、または既存のプロジェクトの移植のいずれかを計画しているか試作している開発者のためのものです。古い PC やネットブックをターゲットにして「モバイルゲーム」または「ブラウザーゲーム」を作る方々ためのレファレンスとしても有用だと思います。
最適化は広範囲に渡るトピックで、それはあなたのゲームに多くを依存します。このガイドは、段階的なガイドとしてよりもむしろ、スムーズに製品を保証するための手引きまたは参照として読んでいただけるとよいかもしれません。
ここでの情報は、初代 iPad、iPhone 3GS と第 3 世代 iPod Touch の上で使われている Apple A4 チップセットのレベルのハードウェアを前提としています。Android 側は、Nexus One、または Android 2.3 ジンジャーブレッドを実行する Android モバイルのほとんどを意味します。これらのデバイスは、平均すると 2010 年の初期にリリースされました。アプリケーションがよく出回っている市場では、これらのデバイスは旧式で、動作が遅いのですが、市場の大部分を占めるためサポートしなければなりません。
はるかに遅いものがあり、また、はるかに高速なモバイルがあります。モバイルデバイスの計算能力は、驚くべき速さで増加しています。モバイル GPU の新世代が前世代より 5 倍速くなると聞くことはあります。PC 産業と比較して、急速 です。
Apple のモバイルデバイスの技術仕様の概要については、iOS ハードウェアガイドガイドページを参照してください。
あなたが将来、一般的になるであろうモバイルデバイス用、または今現在のハイエンドデバイス用に開発したい場合あなたはより多くのことをさせられるようになります。未来のハイエンドデバイスを参照してください。
iPhone 3G、や iPod touch の第 1 世代、第 2 世代のような非常に性能の低い端末は性能が限られており、最適化のためにさらに多くのことに注意する必要があります。しかし、これらのデバイスをアップグレードしていない消費者が購入するアプリとなるかどうかについてはいくつかの疑問があります。あなたが無料アプリを作っている場合を除くと、古いハードウェアをサポートする価値がない可能性があります。
英国のコンピューターサイエンティスト、マイケル· A ·ジャクソンは、彼のプログラム最適化ルールのために、しばしば引合いに出されます:
プログラム最適化の第一法則:最適化するな。プログラム最適化の第二法則(上級者限定):まだするな。
彼の理論的根拠は、コンピューターがこれだけ高速になっていて、その性能が向上する早さを考えると、あなたのプログラムが快適に動くようになる可能性は十分にある、というものでした。それ以外にも、過度に最適化しようとすると、複雑になりすぎたり、自分自身に制限をかける事になったり、大量のバグを発生させるかもしれません。
ただし、モバイルゲームの開発となると他に考慮しなければいけない部分が出てきます。現在、市場に出回っているハードウェアには、普段私達が慣れているコンピューター(PC)に比べて非常に多くの制限があります。そのため、デバイス上で実行できないようなものを作成するリスクは、最初から最適化して複雑すぎるものを作成するリスクと釣り合います。
このガイドでは、我々は、軽々しく適用しそうになるような状況に対して、最適化が大いに役立つだろうな状況を指摘します。
アーティストはまた、プラットフォームの限界とそれを回避するために使用する方法を知っている必要があります。そうすれば、彼らは作業をやり直す必要もなく、報われる創造的な選択をすることができます。
ゲームデザインがアトモスフィアやライティングを呼び出してテクスチャへベイクする代わりに、描画する場合、アーティストに多くの責任があります。 何でもベイクできるときはいつでも、リアルタイムレンダリングの代わりに、アーティストはベイクするコンテンツを生成することができます。彼らは技術的な制限を無視して自由に作業することができます。
この 2 ページはゲームパフォーマンスの一般的な傾向の詳細を示し、あなたのゲームを最適化するベストの設計方法、または、あなたがすでに生産に入っているなら、物事を最適化する必要がありどのように直感的に把握できるかを説明します。
最適化がパフォーマンスの大きな向上に報われるか、あなたの時間を無駄するか、あなたが見分けるのに役立つため、プロファイリングは重要です。レンダリングは、別のチップ( GPU )上で処理される方法のため、フレームをレンダリングするのにかかる時間は、CPU にかかる時間プラス GPU にかかる時間ではなく、2 つでより長くなるものではありません。CPU がものごとを遅くしているならば、シェーダーを最適化することはフレームレートを上昇させないことを意味し、GPU がものごとを遅くしているならば、物理とスクリプトを最適化することはまったく助けになりません。
多くの場合、ゲームの異なる部分、異なる状況では異なった実行がされるので、ゲームの一部が原因でスクリプトに 100 ミリ秒のフレームが発生する可能性があると、レンダリングされている何かのためにゲームの他の部分では減速が発生する可能性があります。だから、少なくとも、あなたは、あなたのゲームを最適化しようとする場合、すべてのボトルネックがどこにあるかを知っている必要があります。
Unity の主なプロファイラーは、iOS や Android や Tizen をターゲットとするときに使用することができます。それを使用する方法についての基本的な手順については、プロファイラーを参照してください。
内部プロファイラーは 30 フレームごとにテキストを吐き出します。それはあなたが物事を遅くしているそのゲームの物理、スクリプトまたはレンダリングなど側面を把握しやすくしてくれ、あまり詳細には触れません。例えば、そのスクリプトまたはそのレンダラーが犯人です、と。
それを動作させる方法、動作の詳細については ビルトインプロファイラーでのパフォーマンス測定ページを参照してください。