複数のサブ質問を含む長い質問を前もってお詫びしますが、質問はタイトルに記載されているとおりです。以下は、質問のさまざまな側面の詳細な分割です。
cocos2d を使用して作成した私のユニバーサル ios ゲームには、4 つのカテゴリの画像があります。どれをスプライト シートに入れる必要があり、どれを個別の画像としてロードしたほうがよいかを判断したいと考えています。私の現在の推測では、ゲーム全体で実行されるキャラクター アニメーションのみが、スプライトシートとしてメモリに読み込まれる値を提供します。
- ゲーム プレイ全体で実行されるキャラクター アニメーション (ユーザーがメニューにいる場合を除く): これらについては、スプライトシートに画像を配置すると、実行時のメモリ使用量が削減されると想定しています (個々のファイルが 2 バイト境界の累乗にパディングされるため)。したがって、それらはスプライトシートの候補です。あれは正しいですか?
- 小さな画像 (約 200 個) は、ゲームのプレイ中にランダムに選択され、いつでも 0 ~ 4 個表示されます。これらについては、一度に多くても 4 枚しか使用されない場合に、200 枚の画像すべてをメモリにロードする価値があるかどうかはわかりません。そのため、画像として直接アクセスする方がよい場合があります。あれは正しいですか?
- 静的メニューでのみ使用されるボタンのようないくつか (約 20) の小さなメニュー要素: メニュー項目はメニュー表示中にのみ使用されるため、スプライトシートを介したメモリ アクセスの改善にはあまり価値がないと思います。あれは正しいですか?
- メニューやゲーム プレイ シーンなどの背景として使用されるいくつかの大きな画像。これらの画像のほとんどは、画面の解像度と同じ大きさです。画面の解像度は 1 つの画像の最大サイズとほぼ同じであるため (たとえば、iPad Retina の場合、4096 x 4096 の画像サイズと 2048 x 1536 の画面サイズ)、スプライトシートを最大で 1または 2 つの大きな画像が 1 つのスプライトシートに収まります。また、これらの大きなファイルはそれぞれ 1 つのシーンでのみ使用されるため、これらすべての大きな画像を事前にメモリにスプライトシートとしてロードすることは、不要なオーバーヘッドのように思えます。したがって、スプライトシートとして直接アクセスしてください。あれは正しいですか?
関連するよくある質問:
a) 異なるシーンで使用される画像を同じスプライトシートにパックすると、そのシーンで画像のサブセットのみが使用されている場合でも、それらをメモリにロードできます。それは悪い考えだと思います。正しい?
b) 古いデバイス (iPad 1 および iPhone 3gs) でのみ、ゲーム プレイにカクつきがあります。スプライトシートはそのような吃音を減らすのに役立ちますか?
c) スプライトシートは実行時のメモリ フットプリントのみにメリットがあり、アプリ アーカイブのディスク上のサイズにはあまりメリットがないと思います。たとえば、サイズが 11.8 MB の一連のファイルをスプライトシートに入れると 11 Mb になることに気付きました。これは、圧縮によるメリットはあまりありません。それは有効な仮定ですか?
上記の私の論理的根拠についてあなたの考えを教えてください。
ありがとう
アナンド