Cocos2d の画像に推奨される制限はありますか? サイズが大きすぎたり、メモリが多すぎたりしますか? ゲームの速度低下を避けるために、次元または Kb でいくつかのルールはありますか? (背景画像、またはキャラクターのグラフィック(バッチノードを使用しても)?)
ご回答有難うございます
Cocos2d の画像に推奨される制限はありますか? サイズが大きすぎたり、メモリが多すぎたりしますか? ゲームの速度低下を避けるために、次元または Kb でいくつかのルールはありますか? (背景画像、またはキャラクターのグラフィック(バッチノードを使用しても)?)
ご回答有難うございます
まず第一に、メモリ使用量はパフォーマンスとはほとんど関係ありません。メモリ全体をテクスチャで埋めることができますが、ゲームは気にしません。違いが生じるのは、それらをレンダリングするときです。そして、テクスチャで埋めている画面領域の量、テクスチャのオーバーレイ、バッチ処理、回転、スケーリング、シェーディング、アルファ ブレンドの量だけが問題になります。これらは、テクスチャ レンダリング パフォーマンスの主な要因です。メモリ使用量は、非常に重要な役割を果たしません。
私が行ったcocos2d スプライト バッチ パフォーマンス テストと一般的なcocos2d パフォーマンス分析に興味があるかもしれません。どちらにもテスト プロジェクトが付属しています。
最大テクスチャ サイズについては、Learn Cocos2Dブック の表を参照してください。
iPhone および iPhone 3G デバイスには 24 MB のテクスチャ メモリ制限があることに注意してください。第 3 世代 (iPhone 3GS) 以降のデバイスには、その制限がなくなりました。また、デバイスに 256 MB のメモリがインストールされている場合でも、アプリで使用できるメモリは大幅に少なくなることにも注意してください。
たとえば、iPad (第 1 世代) では、100 MB を超えるメモリを使用しないことをお勧めします。使用可能な最大メモリは約 125 MB でピークに達し、メモリ警告は約 80 ~ 90 MB のメモリ使用量で表示され始めます。
iOS 5.1 では、Apple は iPad 2 の最大テクスチャ サイズも増やしました。最も安全で一般的に使用できるテクスチャ サイズは、Retina テクスチャでは 2048x2048、標準解像度テクスチャでは 1024x1024 です。
iPod touch デバイスは、同世代の iPhone モデルと実質的に同じですが、簡単には識別できないため、この表には含まれていません。たとえば、第 3 世代の iPod touch には 8 GB、16 GB、および 32 GB のフラッシュ メモリを搭載したデバイスがありますが、8 GB モデルは実際には第 2 世代のハードウェアです。
画像とテクスチャの寸法は、サポートしているデバイスによって異なります。古いデバイスは小さなレイヤーをサポートしていました。サイズは 2048x2048 だと思います。現在のデバイスにはそのような制限はないと思います。
大規模な画像の場合、大規模な画像を処理する際に最大のパフォーマンス向上が実証されているため、バッチ ノードを使用することをお勧めします。一般的には、可能な限りそれらを使用することをお勧めします。
ロードできる量については、デバイスによって異なります。新しい iPad には 1 GB のメモリが搭載されており、大きな画像用にさらに多くのメモリを使用できるように設計されています。第 1 世代の iPad にはこの量のメモリが 1/4 あり、私の経験では、約 100 MB のメモリが使用されるとアプリがクラッシュし始めます (Instruments を使用して確認)。
秘訣は、現在のアプリの操作に必要なだけのメモリのみを使用し、新しいシーンまたは画像/スプライト/テクスチャの新しいセットに移動するときにメモリを解放することです。たとえば、ビューポートに最も近いタイルのみがメモリに読み込まれる、非常に大きなタイル テクスチャを持つことができます。画面に表示されていないビューの部分をメモリから削除すると、技術的には無限に伸びる無限サイズのビューを持つことができます。
もちろん、大量のリソースを扱う場合は、アプリ デリゲートがメモリ警告に適切に応答するようにしてください。
私の知る限り、サイズが 1024x1024 のバッチ ノードは、テクスチャ メモリのみである約 4 MB のスペースを必要とします。また、アプリケーションの最大制限は 24 MB です。そのため、この 24 MB のスペースに到達するとゲームの速度が低下し、その後クラッシュします。遅さを避けるために、一度に最大 4 つのバッチ ノード、つまり 16 MB を使用しました。残りの 8 MB は、変数やその他のデータ用に残されました。より多くのバッチ ノードを使用する前に、メモリをクリーンアップし、未使用のバッチ ノードを削除していました.4s のメモリ制限についてはわかりませんが、iPhone 4 の場合、これが私が学んだことです。このロジックを念頭に置いて、私はゲームをスムーズに実行していました。