cocococos 2 dどうやってメモリを最適化しますか?

3612 ワード

どのようにメモリを最適化しますか?
メモリ最適化の原理
メモリを最適化するために、開発者はまず何が一番メモリを使うかを知るべきです.答えはテクスチャです.テクスチャはほとんど90%のアプリケーションメモリを占めます.したがって、アプリケーションのテクスチャメモリを最小化して使用すると、低メモリのためにアプリケーションが崩壊する恐れがあります.ここではCococos 2 d-xゲーム共通のメモリ最適化の原理指導を紹介します.
 
ボトルネックを認識して方案を探す
どのようなテクスチャがメモリを最も消費しますか?これらのテクスチャはどれぐらいのメモリを使いますか?もちろんこれは手動で計算する必要はありません.推測するだけです.道具はここで用意しました.アップルのツール「Allocation&Leaks」を使います.Xcodeで「Run」コマンドを長押し、「Profile」を選択してこの2つのツールを起動できます.以下の通りです
Allocationツールを使って、アプリケーションのメモリ使用を監視できます.Leaksツールを使ってメモリの漏洩状況を観察できます.また、いくつかのコードでゲームメモリに使用されている他の情報を取得することもできます.
1CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();このコードを呼び出すとDEBUGモードでゲームが実行されます.Xcodeコントロールウィンドウでフォーマットが整っているログ情報が表示されます.
1
2
3Cocos2d: cocos2d: "cc_fps_images"rc=5 id=3 256 x 32 @ 16 bpp => 16 KBCocos2d: cocos2d: "XXX/hd/actor.pvr.ccz"rc=1059 id=4 2048 x 2048 @ 32 bpp => 16384 KBCocos2d: cocos2d: CCTextureCache dumpDebugInfo: 2 textures, for16400 KB (16.02 MB)テクスチャの名前、参照カウント、ID、サイズ、およびピクセルごとのビット数が表示されます.最も重要なのはメモリの使用状況を表示することです.例えば「ccc」は16 KBのメモリを消費し、「actor.pvr.cz」は16 Mのメモリを消費しました.
極端な最適化は絶対にしないでください
これは共通の最適化規則である.最適化の過程では、いくつかのトレードオフを行うべきです.画像品質と画像メモリの使用は2段階の状態になる場合があります.くれぐれも過度に最適化しないでください.
メモリ最適化レベル
ここでcctos 2 d-xメモリの最適化を3段階に分けます.各等級によって説明が異なります.戦略も少し違います.
クライアントレベル
これは最も重要な最適化レベルです.Cocos 2 d-xエンジン最上階でゲームをコンパイルしますので、エンジン自体に最適化のオプションがあります.このレベルではほとんどの最適化ができます.簡単に言えば、テクスチャ、オーディオ、フォント、粒子のメモリを最適化できます.
  • まずテクスチャの最適化を見て、テクスチャメモリの使用を最適化するためには、テクスチャメモリの使用にどのような要因が一番大きいかを知る必要があります.主に3つの要因がテクスチャメモリに影響します.すなわちテクスチャフォーマット(圧縮か非圧縮か)、色の深さと大きさです.私たちはPVR形式のテクスチャを使ってメモリの使用を減らすことができます.テクスチャフォーマットはpvr.czがオススメです.テクスチャは色のビット数が多いほど画質が良いですが、メモリを消費します.したがって、RGB 8888の代わりに色の深さがRGB 4444のテクスチャを使用することができ、メモリ消費が半分になる.また、大きなテクスチャはメモリ関連の問題を引き起こします.中ぐらいの大きさのテクスチャを使ったほうがいいです.
  • オーディオ最適化は、3つの要因がオーディオファイルのメモリ使用に影響を与え、すなわちオーディオファイルのデータフォーマット、ビットレートおよびサンプリングレートである.AndroidプラットフォームとiOSプラットフォームはMP 3フォーマットをサポートしているので、MP 3データフォーマットのオーディオファイルを使用することを推奨します.背景音楽ファイルのサイズは800 KB以下であるべきです.一番簡単な方法は背景音楽の時間を減らしてから繰り返し再生することです.オーディオファイルのサンプリング率は96-288 kbpsがいいです.ビットレートは44 kHzで十分です.
  • フォントと粒子最適化は、ここで二つのヒントがあります.BMFontフォントを使ってゲームのスコアを表示する場合、最低数の文字をできるだけ使ってください.たとえば、単位の数字だけを表示したいなら、すべての文字を削除してもいいです.粒子は、粒子数を減らすことでメモリを低減することができる.
  • エンジンのレベル
    OpenGLIESとゲームエンジンの達人でないなら、この部分を省略してもいいです.Cocos 2 d-xはオープンソースのゲームエンジンですので、エンジン等級に何か最適化があれば、教えてください.任意の改良とコードを歓迎します.
    C++言語レベル
    このレベルでは、メモリリークコードがないことを推奨します.Cocos 2 d-x内蔵メモリ管理原則に従い、メモリ漏れをできるだけ避ける.
    ヒントとテクニック
  • フレーム分のゲームリソース
  • をロードする.
  • 描画呼び出しを低減し、「CCSpriteBatch Node」を使用します.
  • テクスチャをロードするときは、大きいものから小さいものまで順に
  • をロードする.
  • ピークメモリの使用を避ける
  • ロード画面を使ってゲームリソースをプリロードする
  • 空きリソースを解放する必要があるとき
  • メモリ警告を受けてキャッシュリソースを解放します.
  • テクスチャパッケージングを使用して、テクスチャのサイズ、フォーマット、色の深さなどを最適化する
  • .
  • JPGフォーマットを使う時は注意してください.
  • RGB 4444色深度16ビットテクスチャ
  • を使用してください.
  • POTテクスチャを使用しないでください.
  • .超大型テクスチャのロードを避ける
  • .
  • 推奨1024*1024 NPOT pvr.czテクスチャセットではなく、RAW PNGテクスチャ
  • を採用しています.
    おすすめの読書
    Steeffen Itterheim's cocococos 2 d memory optimization tutorils  Apple's developer guide for reducing memory usage