Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

メモリ使用量の最適化

テクスチャ圧縮

テクスチャ圧縮を使うと、ゲームアーカイブ内のリソース(resource)のサイズを削減できるだけでなく、圧縮されたテクスチャによって必要な GPU メモリの量も削減できる場合があります。

動的な読み込み

ほとんどのゲームには、少なくとも一部に使用頻度の低いコンテンツがあります。メモリ使用量の観点では、そのようなコンテンツを常にメモリに読み込んでおくのは合理的ではなく、必要に応じて読み込みとアンロード(読み込んだデータの解放)を行うほうが適切です。当然ながら、これには、実行時のメモリを消費してすぐにアクセスできる状態にしておくことと、読み込み時間をかけて読み込むこととのトレードオフがあります。

Defold には、コンテンツを動的に読み込むための方法がいくつかあります。

コンポーネントカウンターの最適化

Defold はメモリの断片化を抑えるため、コレクション(collection)の作成時に、コンポーネント(component)とリソースのためのメモリを一度だけ割り当てます。割り当てられるメモリの量は、game.project 内の各種コンポーネントカウンターの設定によって決まります。プロファイラー を使ってコンポーネントとリソースの正確な使用状況を把握し、実際のコンポーネント数とリソース数に近い最大値を使うようにゲームを設定します。これにより、ゲームのメモリ使用量を削減できます(コンポーネントの最大数の最適化に関する情報を参照してください)。

GUI ノード数の最適化

GUI ファイル内のノードの最大数を必要な数だけに設定して、GUI ノード(GUI node)数を最適化します。GUI コンポーネントのプロパティCurrent Nodes フィールドには、その GUI コンポーネントが使用しているノード数が表示されます。

ヒープサイズ(HTML5)

Defold の HTML5 ゲームのヒープサイズ(heap size)は、game.projectheap_size フィールドで設定できます。ゲームのメモリ使用量を最適化し、ヒープサイズを最小限に設定してください。

小規模なゲームでは、ヒープサイズを 32 MB に抑えられます。規模の大きなゲームでは、64–128 MB を目指してください。たとえば、現在 58 MB で、それ以上の最適化が難しい場合は、深く考えすぎずに 64 MB に設定してかまいません。厳密な目標サイズはなく、ゲームによって異なります。より小さいサイズを目指し、できれば2の累乗の値を選んでください。

現在のヒープ使用量を確認するには、ゲームを起動して、最も「リソース消費の多い」レベルや場面をプレイしながらメモリ使用量を監視します。

if html5 then
    local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
    print(mem)
end

ブラウザーの開発者ツールを開き、コンソールに次のように入力することもできます。

HEAP8.length / 1024 / 1024

メモリ使用量が 32 MB のままであれば、良好です。そうでない場合は、エンジン本体と、サウンドやテクスチャなどの大きなアセットのサイズを最適化する手順に従ってください。