Open8

Wwise101学習メモ

suneo3476suneo3476

#wwise

コースの教材をインストールする

URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=quick_start_from_silence_to_sound

  • 「soundbanks フォルダ」
    • ゲームに実装されたサウンドが入っているフォルダ
    • 中にはゲームが参照するファイルが入っている
      • これを「オーディオリソース」と呼ぶ
    • プラットフォーム(Mac, Windows)専用のものが存在する
    • フォルダを消すとCubeデモが無音になる
suneo3476suneo3476

レッスン 1:クイックスタート - サイレンスからサウンドへ

URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=quick_start_from_silence_to_sound

Wwiseの起動

  • Wwiseプロジェクト
    • 複数のサブフォルダが入ったフォルダ

ゲームのプロファイリング

  • 「Remote Platform」ボタン
    • Wwise Sound Engine を使うゲームに Connect する時に押す
  • 「キャプチャー」
    • リアルタイムなレコーディングプロセスのこと
    • ゲームプレイに関連した情報がゲームからWwiseに送られてくる

注意: ゲームに接続中に、一部のWwiseパラメーターは調整できない

  • 「Game Call」
    • Wwiseが受け取ったメッセージのこと
  • 「Event」
    • Wwise Game Callの一種
    • ゲームエンジンがWwiseオーディオエンジンに送ることで、ゲームで何かが起こったことを示す
    • 多くの場合、サウンドをトリガーしたり、プロパティを変更したり、サウンドを停止したりするのに使う
    • Event につけられた名称で用途を識別する
  • 「Game Object Name列」
    • ゲームのどの物に対しメッセージが関連付けられているかを明確にする

Eventの作成

  • 「GameCall」
    • プログラマーが予め追加しているプログラムコードのこと
    • プログラムコードはWwiseに何が起こったのかのメッセージを伝える
  • 「Event」
    • 入ってくるゲームコールをWwiseが受け取るために作成する
    • Game Callを受け取るために設計されたWwise上のオブジェクトの種類
    • Game Callがボールで、Eventがグローブのようなもの
    • WwiseがGame Callを受け取るには、全く同じ名前のEventが必要
  • 「work units」
    • プロジェクトの特別なセクションやエレメントに関連した情報を内包する
    • プロジェクトを管理するのに役立つ
    • 独自のwork unitを作成して後から統合できる
    • 実体はXMLファイル
  • 「オブジェクト」
    • Wwiseで作成する全てのものの呼び方
    • Wwiseのインターフェース上のオブジェクトは、小さい四角のアイコンで表示される
    • work unitを最上位とする階層内に存在する
    • 全てのオブジェクト名の参照は小文字で行われるので、大文字・小文字の区別はない
  • Project Explorerのアイコンバー
    • 選択されたオブジェクトに内包できるオブジェクトの種類を表す
  • イベントを介したワークフロー
    • サウンドデザイナーがWwise上でEventを作成する
    • サウンドデザイナーはEvent名をプログラマーに伝える
    • プログラマーは同名のGame Callがゲームエンジンから送られるようにプログラムする

サウンドのインポート

  • 「サウンド」
    • 通常Dsigner LayoutのProject ExplorerのAudioタブで管理される
    • Actor-Mixer Hierarchy内に保存する
  • 「Sound SFX」オブジェクト
    • 任意のオーディオファイルを再生したい場合に使用する
    • 関連付けられたオーディオファイルがないと、赤字で表示される
    • オーディオファイルに直接対応しているのではない
    • オーディオファイルが再生するチャンネルを示す
    • WAVファイルは波形ファイルとしてインポートされる
  • オブジェクトの色
    • オブジェクトに関連付けられたファイルが変換処理で最適化されたかどうかを示している
    • 通常はSoundBank生成の時に変換が行われる
    • 白色は既に変換されているという意味
    • 青色は変換が行われていないという意味
  • Transport Controlビュー
    • スペースバー: 再生のショートカット

Actionの適用

  • EventとSound SFXオブジェクトの関連付け
    • WwiseがEventを受け取った時に行うActionsを指定する
    • Sound SFXをEditorにドラッグ&ドロップした場合は、自動でPlayアクションを作成する
    • 関連付けると、Sound SFXの再生だけでなく、EventのシミュレーションもWwise上で行えるようになる

ゲームへのサウンドインテグレーション

SoundBankへのEvent追加

  • 「SoundBanks」
    • ゲームの再生時(ランタイム)に使われるオーディオアセットとコードの集合体
    • Wwiseを使用するゲームは、最低1つのSoundBnankを持つ
    • EventはSoundBankのパーツになる

SoundBankの作成

  • 目的のプラットフォームと言語向けのSoundBankを生成できる
  • 生成したいSoundBank、Platform、Languageを選択できる
  • ゲームファイル構成の保存パスを定義しなければならない(通常プログラマーから指定があることが多い)
    • UserSettingsに上書き設定がある
suneo3476suneo3476

#wwise

レッスン 2:Soundscapeのデザイン

URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=designing_soundscape

プロジェクトにおけるサウンドの追加

  • サウンドの追加
    • オーディオをWork UnitにインポートするだけでSound SFXオブジェクトをWwiseに自動作成させることもできる
    • Audio File Importerでは、インポートしたファイルを入れるオブジェクトの種類を指定できる(今回はSound SFX)

単一のサウンドを複数の用途に使用する

  • 特になし

オブジェクトのプロパティ調整

  • Pitch(ピッチ)
    • 音楽用語の「セント(Cents)」を使用する
    • ピアノで隣接する鍵盤同士のピッチの違いを100セントと定義する
    • 音楽のオクターブには1200セントの違いがある
    • Wwiseでは -2400 から 2400 まで合計4オクターブにわたり調整できる

Source Editorの使用

  • Contents Editor
    • オーディオソースアイコンをダブルクリックするとSource Editorが開く
  • Source Editor
    • Trim Endをドラッグ&ドロップすると音を停める位置を変えられる

単一Eventへの複数アクションの適用

  • 一つのイベントに複数のオブジェクトを追加してActionを作成すると、別の設定をしない限りは同時に実行される
  • ヘッダ部分を右クリックしてConfigure Columns...を開き、必要なパラメータを一覧に表示することができる

ランダマイゼーション(ランダム化)機能の使用

  • オーディオはプレイヤーの行動に対して聴覚的なフィードバックを与えて没入感につなげる
  • ランダム性のある現象に同じオーディオを繰り返し使うと不自然に聞こえてしまう
  • Random Containerというオーディオストラクチャでこれを解決する

オーディオファイルフォルダのインポート

  • フォルダをインポートするとフォルダ自体もオブジェクトとしてインポートされる
  • Project ExplorerでRandom Containerを選択して繰り返し再生すると、複数の録音からランダムに1つ再生される
  • Project Explorerのオブジェクトの左にあるチェックボックス
    • 「インクルージョン」/「エクスクルージョン」の設定
    • オブジェクトのサウンドスケープへの加入と除外の設定ができる

ランダマイゼーションの操作

  • 「Avoid repeating last」
    • 最後に再生した任意の数を再生しないようにする

サウンドのグラニュラ化

  • グラニュラ化
    • 単一の音源を断片に分解し、それらを加工・配置・再生することで豊かなバリエーションを生み出す技術のこと

シーケンスの作成

  • Playlistパネルで実際に再生されたサウンドを確認できる

Silicenceの使用

  • ピン留め機能
    • Editorに対して選択されたオブジェクトをロックする
  • Synth Oneシンセサイザー
    • 一からサウンドを生成して利用するサウンドソースタイプのひとつ
suneo3476suneo3476

レッスン3:Game Syncを理解する

URL: URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=understanding_game_syncs

  • 「Game Sync」オブジェクト
    • ゲーム内の様々な状況をWwiseに通知する
    • この演習では3種類のGame Syncオブジェクトを学ぶ

スイッチの使用

  • 「Switch Group」オブジェクト
    • Eventオブジェクトと同様、ゲームエンジンからの情報を受ける側となる
    • ゲームエンジンプログラマーはSwitch Groupと同じ名前を使う必要がある

Switch Groupでのオプション設定

  • 特になし

Switch Containerの作成

  • 「Switch Container」オブジェクト
    • 状況に応じて再生する対象を変えるサウンドを格納する

SwitchersとSwitch Containersの接続

  • 予定している状態に関連づけられるサウンドがないとき
    • 仮にPlaceholder(仮音)をアサインできる。
    • 後でサウンドを変更したい時にプログラマーを困らせることがなくなる。

Switch Containerでの地面シミュレーション

  • 特になし

Game Parametersの使用

  • 「Game Parameter」
    • Game Syncタイプの一つ。
    • RTPC(Real Time Parameter Control)と呼ばれる。
    • ゲームプレイ中の数値情報に有効。
  • ゲームプレイ中のHPをサウンドでプレイヤーにフィードバックし、プレイを支援する。

Game Parameterの作成

  • 「Game Parameter」オブジェクト
    • ゲームコールで数値を受け取る。

Game ParametersでObject Propertiesを変更

  • RTPCタブ(Sound Property Editor)

グラフビューにおけるGame Parameterの調整

  • 特になし

Transport ControlでRTPC値の調整

  • 特になし

Statesの活用

  • 「State」
    • Game Syncの一種
    • ゲームのグローバルイベントに反応してゲームのオーディオを一括して変化させたい時に使う
    • 例:プレイヤーの意識のあり/なしの区別、水の上/下の区別

新しいState Groupの作成

  • 「State Group」
    • この中で「State」を定義する
    • State GroupやStateオブジェクトの名前はゲームエンジンプログラマーに伝える必要がある

State Transitionの作成

  • Stateのユースケース
    • ボートに乗るゲームでプレイヤーが水に落ちた時に、ゲームのほぼ全ての音にローパスフィルターを適用する
    • プレイヤーの耳から水が出きったところで、サウンドの全ての周波数帯域が聴こえるようにする
  • State Transition
    • State間で遷移する際のパラメータを定義する
    • 例:Alive(生存)からDefeated(敗北)までのトランジションが5秒間に亘ることを定義する

State変更値の設定

  • StateごとにParametersにOffsetを指定する方法
    • Sound SFXのProperty EditorでStatesタブを開く
    • Add State Groupで作成したState Groupを選択する
    • Statesの項目ごとにOffsetを設定するコントロールが現れる

Transport Controlを使用したState Transitionのシミュレーション

  • Transport ControlでStatesをクリックしてStatesを操作することで、State Transitionのシミュレーションが可能

ボイスのボリューム計算を表示する

  • 音量に影響する様々なことを継続的に把握することは難しい

ビューを分割表示する

  • RTPCとStateは両方を同時に見える方が役に立つ。
    • RTPC:Game Parameterを入力としてサウンドパラメータを変化させる設定
    • State:各Stateの状態に応じてサウンドパラメータにオフセットを与える設定

Voice Profilerの使用

  • サウンドのボリュームが設定内容によってどのように制御されているのかをリアルタイムで見ることが可能。
    • Layout > Voice Profiler[F11]
    • Project > Profiler Settings で Voice Inspector Data を選択しておく必要がある
  • 「Voice Inspector」
    • 「Voice Explorer」で選択したサウンドの情報が表示される
    • 「drivers(ドライバー)」: 右側のペインに選択したサウンドのボリュームに作用しているWwise機能のリスト

CubeデモへのGame Syncインテグレーション

  • Capture LogのDisplay Options
    • キャプチャするログの種類を絞ることができる
    • ゲームをプレイしながらSwitchのゲームコールを目で確認することが可能
suneo3476suneo3476

レッスン4:スペースの作成

URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=creating_space

  • オーディオエンジニアはボリュームやパンニングの制御を使いこなし、リスナーに空間的な広がりや立体感を与え、特定の音響イメージを感じさせるように音像を創り上げる。
  • 映画やテレビは画面に何が映るかを予測できるが、ゲームの画面に何が映るかはプレイヤーに委ねられるため予測不可能である。
  • Wwiseのオーディオエンジンは、プレイヤーの行動に基づいてリアルタイムにオーディオをミックスするシステムを使い、これに対応する。

3D Spatializationの使用

  • 「エミッター」
    • ゲーム内で音を発する全てのものを指す概念。
  • 「リスナー」
    • ゲーム内の音を聞き取る機能をもつものを指す概念。
  • エミッターとリスナーはゲームオブジェクトに関連付けられ、位置(三次元の空間座標)と向き(回転)を示す情報を持っている。
  • 「3D Spatialization」
    • Wwiseはエミッターとリスナーの空間的な位置関係に基づいて、ボリュームやパンニングをリアルタイム制御するシステム。

Attenuation Curve ShareSetの作成

  • 「Attenuation」オブジェクト
    • Project Explorer > 「Share Set」タブ > 「Attenuations」のDefault Work Unitに作成する。

Attenuationカーブをオブジェクトにアサインする

  • サウンドのスピーカーに対するレンダリング方式
    • Speaker Panning
      • サウンドをスピーカーから単純に再生する
    • 3D Spatialization
      • サウンドを発するオブジェクトの座標を利用してサウンドプロパティを変更する
  • 「Attenuation カーブ」
    • オブジェクトとリスナーの位置間の距離によってサウンドプロパティを変化させる設定

コーン減衰を追加する

  • 音源が移動せずに向きが変わる場合の変化を表現する。
  • 「Cone Attenuation(コーン減衰)」
    • 音源の方向の変化による減衰設定
  • Attenuation Preview
    • 円の中心が音源で、白い点がリスナー。
    • 円の4つのエリアのうち、上が音源の正面エリア、左右がトランジションエリア、下が背面エリア。

3D Position Automationの使用

  • 実際のオブジェクトと関連付けられていないサウンドはどうするか?
    • 発射したジェムが目の前に落ちて砕け散るとき、臨場感を出すために、時には少し左から、時には少し右から聴こえるようにしたい。
  • 「3D Position Automation」
    • 対応するゲームオブジェクトがないサウンドを3D空間内に配置するようなシミュレーションができる。

Speaker Panningの使用

  • 音楽やナレーションなどのいくつかのサウンドで3Dが不要な場合がある。
  • 「Speaker Panning」
    • エミッターの3D空間における位置を無視してサウンドを配置する従来の方式。
    • わざわざ個別のゲームオブジェクトに紐づけなくても表現できるサウンドに採用する。
suneo3476suneo3476

#wwise

レッスン5:オーディオシグナルフローを理解する

URL: https://www.audiokinetic.com/ja/courses/wwise101/?source=wwise101&id=understanding_audio_signal_flow

  • 大量のサウンドに対して共通のエフェクト処理をかけたい場合がある。
  • 信号の一部をAuxiliary(オグジリエリ) Sendsに送ってエフェクト処理をかけたい場合がある。

Actor-Mixerの構築

  • 「Actor-Mixer」
    • Actor-Mixerの中に入っているサウンド同士は、一緒にミキシングされることはない。
    • 包含するオブジェクトのVoice VolumeやLow-Path Filterのプロパティ値にオフセットを与える。
    • Voice Volumeパラメータを持つActor-Mixerやランダムコンテナ、シーケンスコンテナが入れ子になっている場合、値は累積して加算される。
    • Set Colorで色分けできる。

Master-Mixer Hierarchyの使用

  • 大量のサウンドの信号がコンピュータのオーディオインターフェイスに到達する前に内部的にミックスしなければならない。
    • Wwiseでは、Project ExplorerのMaster-Mixer Hierarchyで行われる。

Master Audio Bus

  • 「バス」
    • オーディオオブジェクトの一種。
    • 複数のオーディオ信号が1つのオーディオ信号として実際に合算される。
  • 「Master Audio Bus」
    • すべてのWwiseプロジェクトに少なくとも1つ存在するオーディオバアス。
    • ゲームの全てのサウンドが最終的に通過するバス。
  • ボリュームをリアルタイムに調整する
    1. Layout > Voice Profiler に切り替える。
    2. Start Captureボタンをクリックする。
    3. 目的のSound SFXを選択し、再生する(Loopオンを推奨)。
    4. Voice Explorerビューで目的のSound SFXを選択。
      • Voice Inspector左パネルに選択されたSound SFXのプロパティが視覚化される。
      • Voice Inspectorで適用されているオフセットと累積値を確認できる。
    5. 調節したいオフセットは、Voice Inspector右パネルで数値をダブルクリックすると、Property Editorが開いて直接編集しやすい。

追加オーディオバスを使用したサブミキシング

  • 多くのゲームでは、ゲーム内の他の音と独立して音楽のボリュームを設定可能にしている。
  • Master-Mixer Hierarchy > Default Work Unit > Master Audio Bus の下に Audio Bus オブジェクトを作成する。

オーディオバスのアサイン

  • Sound SFXオブジェクトはそれぞれバスをアサインすることができる。
  • Actor-MixerのOutput Busを変更すると、子階層のオブジェクトのOutput Busを一括変更できる。
  • 「Multi Editor」
    • 一括してオーディオバスを変更したいActor-Mixerが複数ある時に使える。
  • 親のオーディオバス設定を子階層のオブジェクト側でオーバーライドすることもできる。

ダッキング

  • ダッキング
    • あるオーディオ信号パスのボリュームを、別のオーディオ信号パスのボリュームによって操作する方法の一つ。
    • ユースケース
      • ラジオDJがマイクへ話している際に、マイクの信号の有無を音楽のボリュームを自動的に抑えるのに使い、DJの声が聞こえやすいようにしている。DJの話が終わると音楽のボリュームは元のレベルに戻る。
      • ゲーム内でサウンドが鳴る時には音楽のボリュームを抑え、逆になんの環境音も聞こえない状況では音楽のボリュームを少しだけ上げる。
    • Audio BusオブジェクトのProperty EditorにAudio−duckingタブがある。

各種エフェクトの使用

エフェクトの挿入

  • Sound Property Editor の Effects タブで Sound SFX に対して選択できるエフェクトには、ゲームがリリースされた時に追加のライセンス料がかかるものがある。
  • Effect Editor
    • ほとんどのEffectにはWet/Dry Mixパラメータがある。
    • 0%に設定すると、Effectがまったくかからず元のドライシグナルだけが聞こえる。
    • 100%はEffectのみが聞こえる。
  • Effectのレンダリング設定
    • 例として「Delay¥One_Tap_Quarter_Second」は、ゲームのプレイ時にリアルタイムにEffectが生成される。
    • Effectをリアルタイム生成するオブジェクトが多数あるとCPUリソースを喰ってしまう。
    • CPU負荷を軽減するには、SoundBankを再生成する際に、Effectを新規オーディオファイルとしてレンダリングする選択肢がある
      • EffectタブでEffectの「Render」のチェックをONにすると有効になる。

Auxセンド(Auxiliary Sned)を使う

  • Auxiliary Send (Aux Send) (オグジリエリ・センド)
    • オブジェクトが利用できる追加のアウトプット。
  • ユースケース
    • 事前にアンビエントスペースの種類が定義されたゾーンを用意する。
    • プレイヤーがこのようなゾーンの1つに入った時、ゲームが特別なWwiseコールを送るようにする。
    • 例えば、巨大なホールではリバーブ効果を追加するように、対応するアンビエントEffectが設定されたAuxiliary Busを起動する。
  • Auxiliary Busへのシグナル送信方法
    • 方法1: User-Defined Auxiliary Sends
      • Master-Mixer内にAuxiliary Busを作成する
      • Actor-MixerのGeneral Settings > User-Defined Auxiliary Sendsに、作成したAux Busを設定する
    • 方法2: Game-Defined Auxiliary Sends
      • サウンドをどのAux Busにどのレベルで送信するのかを、ゲームがWwiseにメッセージを送信して伝える
      • Cubeデモでは、特定のゾーン内で特定のAux Busに送られるAux Sendボリュームが上がるようになっている
    • 方法1は、プログラマーに頼らずに調整する手段と考えてよい。

Schematic Viewの使用

  • Schematic View
    • プロジェクト全体のアクターミキサー階層とマスタミキサー階層を可視化する方法の一つ。
    • 実線: オブジェクトの関連付け
    • 小破線: オブジェクト間のオーディオルーティング関係
    • 大破線: 親階層のOutput設定をOverrideしていることを示す(Heartbeatオブジェクト)
    • 右上のView Settingsでプロパティを選択すると各オブジェクトに表示が追加され、そこから共通設定を調整できるようになる。
suneo3476suneo3476

#wwise

レッスン 6:ミックスの仕上げ

URL: https://www.audiokinetic.com/en/courses/wwise101/?source=wwise101&id=finalizing_mix#read

  • ミックスとはどのような作業か

ゲームオーディオのインテグレーション作業を進めているうちに、ゲーム作品においてあなたが実装した様々なサウンドが相互に、どのように響き合うかという微妙なニュアンスにフォーカスする段階に到達します。個々のサウンドが、注意をそらすものではなく、貢献するようにすることが重要です。これがミックスといわれる領域です。

  • 映画制作で大きなミックスコンソールを使ってサウンドをミックスするのと同じようなワークフローをWwiseで再現できる。

Soundcasterの使用

  • これまでは個別のSound SFXオブジェクトもしくはEventオブジェクトを選択し、Transport Controlビューで再生していた。
  • Soundcaster機能を使えば、複数の異なるオブジェクトを素早く再生できるようになる。

Soundcasterセッションの作成

  • 概要
    • 数千ものオブジェクトの中から試聴したいサウンドを見つけるのは一苦労。
    • 素早くアクセスしたいオブジェクトについて構築するプリセットを「Soundcaster Session」という。
    • 例えば、足音や魔法の音のSoundcaster Sessionを作成すれば、氷のジェムを投げた時の足音のボリュームが適切かどうかを判断できる。
  • Soundcasterを開く
    • Views > Soundcaster もしくは Shift+S
    • 作成したSoundcaster SessionsフォルダはProject ExplorerのSessionタブで確認可能

Soundcaster Sessionにオブジェクトを追加する

  • Soundcaster Sessionへのオブジェクトの追加
    • Sound SFXとEventをグリッドの好きな場所に配置できる
    • 再生はあくまで個別に手動でクリックして行う
    • (再生を自動化するような機能だと期待していたら違った)

Mixing Deskの構築

  • 概要
    • Mixing Deskは様々なプロパティを一つのビューにグループ化する
    • 調整したい特定オブジェクトを入れてできること
      • オブジェクトの流れを定義する
      • EffectやAttenuationカーブを適用する
      • Stateプロパティを編集する
      • オブジェクトやバスのプロパティを個別に変更する

新規Mixing Deskの作成

  • Mixer Layout(F8)がある
    • 連携させると特に有効なSoundcaster Sessionを含む
    • Mixing Desk Viewでも、Soundcasterと同様にセッションを作成し、ミキシングチャンネルで調整したいオブジェクトのプリセットのように扱える

MixerにObjectを追加する

  • ミキシングコンソールを再現するようにオブジェクトを並べることが可能
    • 例:左からSound SFXオブジェクトを並べ、右端にアウトプットのBusを並べる
  • Soundcasterでオブジェクトを再生中、Mixing Desk Viewの対応するSound SFXオブジェクトのActivityアイコン(ヘッドフォン型)がオレンジ色になる
    • あるサウンドが正しく再生されない場合に、どのオブジェクトがMaster Audio Busへのパスにおいてサウンドを制御しているかを素早く確認可能
  • 意味の分からなかった箇所
    • 「複数のオブジェクトを選択した状態でプロパティを変更すると(スライダーまたはフェーダー)、選択された全オブジェクトに影響がおよび、このオブジェクトの値が、選択中の全オブジェクトの設定となります。一方、Altキーを押しながらスライダーやフェーダーをドラッグすると、選択されたオブジェクトの値がオフセットされ、絶対値に設定されません。」

追加のMixing Deskの作成

  • ユースケース:全てのバスオブジェクトを1つの画面にまとめ、ゲームのシグナルフローの最終段階を見る
    • バスに送られるシグナルの全体量が多すぎないかを確認する
    • ダッキングのようにバス同士の相互作用を見る

各種Stateの使用

  • Mixing Deskでは、Game Stateの状況に応じて異なるミックスを素早く作成可能
  • ここで学ぶこと
    • Audio Busオブジェクトの変更にStateを使う方法
    • Stateの設定やテストの作業を全てMixing Deskビューで行う方法
  • Audio Bus Property EditorでState GroupをStatesをバスに追加すると、Mixing Deskに現在のState値が表示される
    • プロパティを変更した場合、それは設定しているState値のみに変更が適用される
  • 意味がよく分かっていないボタン
    • Follow Statesボタン
    • Push Statesボタン

コントロールサーフェスの使用

  • コンピュータでWwiseを扱うとき、一度にアクティブに操作できるパラメータは一つだけという制約がある
  • 外部MIDIコントローラを代替入力デバイスとして使用すれば制約を乗り越えられる
  • Wwiseのプロパティやコマンドをデバイスの物理的コントロールにマッピング可能
  • 演習では M-Audio Axiom 25を使用しているが、MIDIコントローラやMackie Controlコントローラなら何でも動作する

持っていないのでここは割愛する。

コントローラーの設定

ハードウエアコントロールをプロパティとコマンドにマッピングする

suneo3476suneo3476

#wwise

レッスン7:ゲームの最適化

URL: https://www.audiokinetic.com/en/courses/wwise101/?source=wwise101&id=optimizing_game#read

  • 学ぶこと
    • オーディオアセットのサイズを最小化し、TAMとCPU使用量を節約する方法
    • メモリとパフォーマンスの予算内で動作するようにプロジェクトを調整する方法

メモリの管理

複数のサウンドバンクの活用

  • 概要
    • 多くのゲームはレベルごとに構成され、特定レベルに関連付けられたサウンドがある
    • プレイヤーが特定レベルに到達していなければ、それに関連付けられたサウンドをメモリにロードする必要はない
    • そこで、ゲームを通して使うメインのサウンド用と、特定ゲームレベル使うサウンド用でSoundBankを分ける
  • SoundBank Managerの見方
    • 何も割り当てられていないSoundBankはData Size列が0
    • Max Size列には、SoundBankに期待されるメモリ予算をバイト単位で割り当て可能
      • 予算は多くの場合ゲーム開発初期に決定され、開発過程で変更されることもある
      • 予算を把握し、それを守ることが重要
      • Max Sizeの予算を越えても技術的に制限はされないが、視覚的な警告が表示される

Conversion Settingsの作成

  • SoundBankのサイズ削減
    • 最も効率的な方法の一つは、オーディオファイルをコンパクトな形式に変換すること
    • Wwiseでは、オーディオ構造に適用できるプリセットとしてConversion Settings Sharesetを作成することで、サウンドの大部分に適用する変換の設定と適用を行う
  • 作成例
    • ダイアログは周波数帯域が限られているため、目立った影響を与えることなく低いサンプルレートを使用できる
    • オーディオ品質を維持するためにミュージック要素を別扱いにもできる

Conversion Settings をアサインする

  • Vorbis圧縮
    • WwiseはMP3圧縮は提供せず、それに似たVorbis圧縮を提供している
    • Vorbis圧縮は多くの人が音質が良いと主張し、ゲームオーディオ統合の標準となっている
    • ただし、圧縮されたオーディオファイルはゲームシステムが解凍する必要があり、プロセッサに追加の負荷がかかる
  • 変換方法の指定と実行
      1. Conversion Settingsを適用したいActor-MixerのProperty EditorでConversionタブを開く
      1. Use ShareSetsとして作成済みのShareSetsを選択する
      1. 「Edit...」からConversion Settings Editorを開き、圧縮設定を編集する
      1. 「Convert...」から変換を実行する

変換されたオーディオを比較する

  • 概要
    • メモリ節約によってオーディオ品質が気になるほどに低下すると問題になる
    • Wwiseでは、オリジナルのオーディオと変換後のオーディオを容易に比較可能
  • オリジナルと変換後の比較
      1. Designer Layoutを開き、Event ViewerでEventを選択する
    • Transport Controlで「Original」ボタンの選択をON/OFFしながら再生する

オーディオのインクルード、エクスクルード

  • 概要
    • ファイル圧縮だけではメモリサイズを十分に削減できない場合、特定のオーディオをゲームから削除する必要が出てくる
    • Random Containerに複数あるオーディオファイルからいくつか削除すれば目立たず、メモリ予算を守るのに役に立つ
  • インクルード・エクスクルード
    • Project Explorer の各オブジェクトの左のチェックボックスのON/OFFで指定可能

ストリーミング

  • 概要
    • ゲームシステムのRAMに全てを一度にロードしないことによりメモリ削減する方法もある
    • ストリーミングとは
      • 光学ディスクやハードドライブなどの保存メモリから直接オーディオを再生する方法を提供する
      • 音楽のような巨大なオーディオファイルにはストリーミングが効果的
    • ストリーミングの欠点
      • 再生開始前に一時停止が発生する可能性があること
        • 氷のジェムの発射には適さないが、継続再生される環境音や音楽なら問題ない
      • 一度にストリームから読み取られる総データ量に技術的な制限があり、ゲームの他の機能とストリームの帯域幅を奪い合う可能性がある
  • SoundBankにおけるストリーミング
      1. Sound Property Editor > General Settings タブの「Stream」のチェックをON
      1. SoundBankレイアウトを選択する
      1. Generate Allボタンをクリックする

プロセッサーにおける最適化

  • 概要
    • 音の再生は少量のCPU処理を必要とするが、不必要にプロセッサを使用しないように注意する
  • 「ボイス」
    • ゲーム内で音を生成する論理的なメカニズム
    • ゲームの全ての音は「ボイス」を通じて再生される
    • 「Voiceオブジェクト」とは異なる
  • ボイスとプロセッサ
    • すべてのアクティブなボイスはプロセッササイクルを使用する
    • 聞こえない可能性のある音は処理の無駄になる
    • プロジェクトには音をボイスを通じて実際にレンダリングするために必要な最小音量を定義する設定がある(Volume Threshold)
  • Project Settings > General > Platforms
    • Volume Threshold:これより小さなボイスは再生されない
    • Max Voice Instances:一度に再生できるボイスの最大数
      • ボイスの優先順位付けもできる
      • 一部の音はボイスを多く消費する可能性があるので、ゲーム内の任意の時点で1つのオブジェクトが使用するボイスの数が管理可能
  • Actor-MixerのProperty Editor > Advanced Settings
    • Playback Limitグループ: 各オブジェクト/グローバルにおいて使用可能なボイス総数を制限する
      • 50 Per game object→各キャラクターが特定の魔法に対して50のボイスを利用可能
  • プレイヤーの対話や音楽などは、何が起きても音が消えないようにしたい
    • Priority(優先度)を与えてオブジェクトを保護できる
  • Offset priority
    • オブジェクトとの距離がAttenuationで指定の最大距離に達した場合、優先度をオフセットする
    • リスナーの近くでは優先度が必要だが、遠くでは重要度が低い足音の優先順位付けに役立つ
  • Virtual Voice(仮想ボイス)グループ
    • 仮想ボイスは再生音を表す
    • 再生音の音量がVolume Thresholdよりも低いと仮想ボイスリストに追加される
    • 音は音量レベルに基づいて可聴(物理ボイス)から無音(仮想ボイス)、またはその逆に移動することがある
    • 音量がVolume Thhresholdを超えるか、再生中の音が同時再生音の最大値を下回ると、オブジェクトを自動的に物理ボイスに戻る

Profilerのリアルタイムのモニタリング

  • Profiler Layout > Performance Monitor
    • アプリのキャプチャを開始すると更新される
    • 表示するグラフとリストはPerformance Monitor Settingsで変更可能
  • 活用
    • ゲームプレイしながら、ゲームプレイと適切に相関していないような値のスパイクを探すとよい
    • プロファイラが無いと発見できない可能性のあるバックグラウンドの現象があるかもしれない