月別: 2018年2月

ACFの更新でACBをすべて出力しなおすべきかどうか

ACFの更新でACBをすべて出力しなおすべきかどうか

必ず必要という訳ではありません。

全てのACBファイルの出力し直しが必要なのはACFに関連する編集が以下の条件のいずれかに一致した場合です。
- ACFに存在していた項目を削除した。
- ACFに存在していた項目の名前を変更した。
- ACFに存在していてた項目のIDを変更した。

逆に項目を追加しただけであれば、ACBロード時に警告(生成した時のACFと構造が異なるという警告)はでますが問題なく動作可能です。

名前に依存する部分は、内部データが名前のソートにより順番が変化するために発生します。

基本的に追加しているだけの運用であれば問題ありませんが、構造が変わるためワーニングが発生します。

あらかじめリザーブなどでデータを用意しておくなどの回避も可能です。(名前変更はできませんが、パラメータの変更は可能です)

Unity Editor上で動くプロファイラが追加されました

CRI Profiler

CRIWARE Unity Plug-in for Smartphone Ver.2.96から新たにUnity Editor上で動くプロファイラがつきました。

(2018-2-14リリース)

UnityEditorのWindowメニュー > CRIWARE > CRI Profilerと選ぶとエディターに追加できます。

Uses In Game Previewをチェックします

CRI Profilerを使うには CriWareInitializerにある Uses In Game Previewをチェックします。

Startでプロファイルを開始

CRI Profilerウィンドウの上部にあるStartボタンを押すとプロファイルを開始します。

パフォーマンス

CPUの負荷、発音中のボイス数がグラフでみれます。
ストリーミングのボイス数、HCA-MXのボイス数なども確認できます。

Last Played

最後に再生したキュー名が確認できます。
再生が一瞬で終わってしまうようなキューを確認できます。

Playing

何の音(キュー)が今再生中で、
同時にリクエストされているかといった確認ができます。

同時リクエストで音が大きく鳴りすぎていたり、
リクエストはされているのに音が聞こえないなどの確認ができるようになります。

ラウドネスの値を確認

ラウドネスは聴感上のレベルで、-24LKFS や-18LKFSなど環境ノイズにより規定レベルは異なりますが、
これらの値から著しく外れないように作ることで、各コンテンツのレベルがバラつかないようにするためのものです。
プラットフォームによりでそれぞれ規定レベルが異なります。

各バスのレベルが確認できます

バスのレベルも超えてしまうと音が割れたり、ノイズになるなどの原因になるので、レベルが上がりすぎていないかの確認ができます。
サラウンドなどがADX2上で実際に出力されているかどうかなどの確認ができます。

ワークユニットをマージする

複数のプロジェクトでそれぞれ作られたワークユニットがあったとします。

1つのプロジェクトにワークユニットを配置する

移動先のプロジェクトをCRI Atom Craftで開き、

元のプロジェクトの(エクスプローラ/Finder上)のWorkUnitsフォルダ内にある
ワークユニットフォルダを
CRI Atom Craftのツリー上の「ワークユニットフォルダ」へドロップします。

(Ver.3の場合は、移動先のプロジェクトの(エクスプローラ/Finder上)のWorkUnitsフォルダへコピーし、「未登録ワークユニットの登録」で認識させます。)

ワークユニットを2つ開く

ワークユニットがもし編集対象に含まれていない場合、アイコンがグレーになっているので、
右クリックメニューから「ワークユニットを編集対象に含める」を選択し、編集対象にします。

ワークユニット間でキューシートを移動する

CRI Atom Craftのツリー上のワークユニット内のキューシートをドラッグ&ドロップして、移動すると複製されます。

この時、参照するマテリアル及びマテリアル情報は移動しないため、参照マテリアルを移動しておきます。

マテリアルの移動方法

マテリアルは、右クリックで「エクスプローラで開く…」または「Finderで開く…」とすると、参照しているファイルがあります。
このフォルダ単位で移動するのが楽です。

まず、フォルダごと移動先のワークユニットのMaterialsフォルダにエクスプローラ上でコピーします。
この時、Materialsからのパスがずれないように注意します。

未登録ファイルの登録

コピーしただけでは、CRI Atom Craftが認識していないため、CRI Atom Craftのツリー上のマテリアルルートフォルダを右クリックし、「未登録ファイルの登録」を選択し、Craftに認識させます。

マテリアル情報の移動

元のマテリアルフォルダを右クリックし、「マテリアル情報CSVファイルのエクスポート」し、エンコード設定などの情報をCSV化します。

移動先のマテリアルフォルダを右クリックし、「マテリアル情報CSVファイルのインポート」します。

awbが変化する要因について

awbが変化する要因について

  • マテリアルのエンコード設定を変更した(ストリーム設定、サンプリングレート、ループ範囲、コーデック変更など)
  • マテリアルの参照先の波形の内容が変わった(波形エディタなどで元波形を加工した)
  • キューシートで使用するマテリアルが変化した(キューの削除でマテリアルへの参照がなくなった)
  • 全体設定の多言語化での代替言語を変化させた。(代替言語の参照するマテリアルを参照するように変化する)
  • 全体設定のターゲットコンフィグの設定を変更した。(デフォルトの設定などの変更)
  • トラックでの言語設定を変更した(キューシートに含まれるマテリアルが変化した)言語ビルドで(含む/含まれない)が変化します。
  • マテリアル側のパスを変更した(含まれるフォルダ名などを変更した) パスの名前でソートしてAWBに配置されます。
  • プロジェクトの暗号キーの変更、キューシートの暗号キーのタイプの変更

などが考えられます。

グローバル参照セレクタラベル

グローバル参照セレクタラベルは、

グローバル=全体設定 を参照するセレクタラベルで、セレクタに設定があります。

機能は

  • ACF読み込み時に、ツールで設定したセレクタラベルが使われる
  • プレーヤーでセレクタを設定せずとも、このセレクタを使っているトラックが再生される

ポリフォニックやスイッチなどで、セレクタを使用して、
トラックを選択する場合、再生前にプレーヤーにセレクタをセットする必要がありますが、

このグローバル参照セレクタラベルは、グローバル(全体設定)側を参照するラベルとして機能します。

プレーヤーにセットした場合

プレーヤーにセレクタをセットした場合プレーヤー側の設定が優先されます。

プレーヤーをリセットすると、グローバル参照に戻ります。

グローバル参照セレクタラベルを初期値にする

初期値として、設定しておくことで、再生時に「セレクタがセットされていないために再生されない」という状態を避けることができます。

  • ゲームエンジンなどで、セレクタラベルの設定が再生前に難しい(プレーヤーが存在しない状態での再生など)

に便利です。

全体へ影響するラベル付き変数として

ゲーム変数と似ている部分

ゲーム変数はグローバル(全体設定、ACF側)に値を持っていますが、
グローバル参照セレクタラベル」もグローバルに値を持っています。

  • 8個以上のセレクタを制御したい

8個以上のセレクタを制御したい場合はかなり特殊なケースですが、
プレーヤー側で操作せずに
プログラムから「グローバル参照セレクタラベル」をセットすることで、動的に切り替える事ができます。

一部キューシートのみインゲームプレビューしたい

インゲーム時のプレビューデーター更新

大量のキューシートがある時にインゲームビルドを行うと、転送にとても時間がかかってしまう場合があります。

その場合は、キューシートの「インゲーム時のプレビューデーター更新」のフラグを下げることで、

インゲームに含まない(実ゲームにあるデータ)でプレビューすることができます。

(次回のACBロード時の動作が変化します)

インゲーム対象のキューシートのみをフラグを有効にすることで、転送処理が省けて高速になります。

The parameter of audio data exceeds the player’s capability.

W2010091302:The parameter of audio data exceeds the player’s capability. (Increase max_sampling_rate of AtomPlayer or VoicePool up to 346015Hz.)

W2010110801:Specified frequency ratio exceeds the player’s capability. (Increase max_sampling_rate of AtomPlayer or VoicePool up to346015Hz.)”

といったワーニングが出る時は、

例えば

  • ピッチが高く再生されている

時に起こります。

特にランダムピッチや、AISACによるピッチ変更、元波形のサンプリングレートが高いなど、意図せず超えてしまう場合も考えられます。

初期化時のサンプリングレートの設定やデータ側の対応により解決できる場合もあります。

以下、SDKのdocumentationフォルダ内にあるCRIエラーマニュアルより抜粋

発生状況

再生しようとしている音声のサンプリングレートが高く、再生可能なボイスが存在しない場合に発生します。
346015Hz(状況により数値は変動)は、実際に再生しようとしたサンプリングレートです。
再生時のサンプリングレートは、音源自体のサンプリングレートと再生ピッチによる倍率の掛け合わせで決定します。
本警告が発生する原因は以下の通りです。

– ツール側で再生ピッチを高く設定している。
– アプリ側で動的に再生ピッチを上げている。
– AISACを使ってピッチ変更を行っている。
– 3Dポジショニング機能のドップラー効果を利用している。

(※1) 本警告が発生しても、音声の再生自体は行われます。ただし、意図したピッチでは再生されていません。
※1:3Dポジショニング機能では、リスナーが音源に近づく速度が大きいと、ドップラー効果により再生ピッチが上がります。

解決方法

ボイスプール作成時にサンプリングレートを高く設定してください。
具体的には、48kHzの音源のピッチを2倍に上げて再生する可能性がある場合、 ボイスプールのサンプリングレートを96kHzと設定します。
また、ツール側、アプリ側で設定に間違いが無いか確認してください。

Voice buffer underrun

W2015080610:Voice buffer underrun.

このメッセージがログに大量に出ている場合、
処理が間に合っていない可能性があります。

例えば、
– HCA-MX再生レートを極端にあげたり
– 高負荷時に極端に遅いメディアからストリーミングする

初期化時のD-BASの設定などにより解決できる場合もあります。

以下、SDKのdocumentationフォルダ内にあるCRIエラーマニュアルより抜粋

発生状況

音声データの供給が間に合わなかった場合に発生します。
具体的には、音声再生中にPCMデータの供給が不足したため、ライブラリ内でサウンドバッファのゼロ埋めが行われたことを示しています。
(出力波形が不連続になるため、ノイズとして聴こえる可能性があります。)

解決方法

何らかの理由によりストリーミング用音声データの供給が途切れた場合に本警告が発生します。
ストリーミング再生が途切れる要因としては、D-BAS作成時に指定したビットレート(CriAtomExDbasConfig::max_bps)を超えたストリーミングが行われているケース等が挙げられます。
https://www.criware.jp/support/criwarefaqs/print_qa.php?qid=61

本警告は「サーバ処理内で1V分の音声データを生成できなかったケース」のみが通知されます。
サーバ処理の呼び出し頻度自体が低いケースでは、音が途切れる場合でも本警告は発生しません。
(サーバ処理の間隔が1.5Vよりも開いた場合、本警告は出ませんが、データ供給自体が不足するため音が途切れる可能性があります。)