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