レッスン 7
目次
メモリ使用を頻繁にモニタリングすることは一般的にグッドプラクティスですが、多くのゲーム制作では具体的なCPUとメモリの予算が部門ごとに確保されています。例えばオーディオ部門向けにすべてのサウンドエンジンメモリ用に100MBの予算が確保されている場合、予算内に確実に収めるには大変な手間がかかります。ところがゲームはインタラクティブなため、メモリが予算を超えてしまうこともあります。例えばゲームでプロシージャル生成アセットを使用している場合、ゲームデザイン上、過剰なロードは避けられません。そこで自分のメモリ使用がチームのメモリ予算を超えないようにするため、上限を設定できます。
実際のゲーム制作では、まずは再生の上限などの機能を使ってサウンドスケープを管理するのが最も望ましく、そうすることでどのサウンドに優先的に余裕を持たせるかも決められます。Memory Allocation Size Limitは、最後の手段として使うことを意図したものです。 |
-
WAG UnityプロジェクトでEdit > Project Settings > Wwise Initializationに移動し、Memory Allocation Size Limitまで下にスクロールします。Memory Allocation Size Limitは、Wwiseの全体的なメモリ使用量を制限します。ほかのゲームエンジンと異なり、Wwiseはメモリ上限を超えてもクラッシュしません。代わりにProfilerにエラーが表示され、すでにメモリにロード済みのサウンドは引き続きアクセスが可能です。上限を設定し、上限に達した時の反応を見てみます。
-
Memory Allocation Size Limitで上限を35000000に設定します。
プロパティはバイト単位で定義されるため、35000000は上限が35000KB、つまり35MBであることを意味します。
-
リモートセッション(Profile Onlyモード)に接続し、UnityでPlayを押します。
Memory Allocation Sizeの上限が、WwiseでMemoryタブのカテゴリの上に表示されます。上限としてWwiseのInitialization設定で指定した35MBではなく、33.4MBと表示されているのはなぜでしょう。Wwiseのメモリは別の単位システムで示されます(MiBで示されますが、ユーザインターフェースではMBとして表示されます)。そのため実際に35MBの上限をWwiseで設定するには、MiBに変換してからWwiseのInitialization設定に入力する必要があります。例えばDesiredLimit * 1024 * 1024 = ActualLimitNumberなどの公式を利用できます。つまりWwiseで35MBの上限を設定するには、Memory Allocation Sizeの上限を35 * 1024 * 1024の積、すなわち36 700 160に設定する必要があります。
-
Memory Allocation Size Limitを36 700 160に設定します。
-
メニューを開き、Dungeonにテレポートします。
-
再生モードを終了し、Wwise Profilerを開きます。
複数のエラーが表示され、少なくとも1つは以下を提示しています:
Memory allocation failed: ______ bytes in category '______' - media?: no - device?: no - currently allocated ______ / 35000000 bytes
地下牢にテレポートした時にMemory Allocation Size Limitを超えたため、Profilerに、原因となったメモリカテゴリなどが表示されます。またゲームがフリーズまたはクラッシュしなかったことにも注目してください。サウンドスケープのいくつかの側面はロードされなかったため欠如している場合があるものの、すでにメモリにロードされていたサウンドは引き続き再生されます。ゲームは実行され続け、メモリ使用の安全網は維持されます。