YAMADA TAISHI’s diary

ゲームについてとか私の日記とか。このブログのあらゆるコードは好きにどうぞ。利用規約があるものは記事内のGitHubのRepositoryのリンクで貼られていると思うので、そちらを参照ください。

【入門】CRI (LE)をUnityでつかってみよう

こんにちは、やまだたいし( https://twitter.com/OrotiYamatano )です。
以前FMODでのサウンドミドルウェアのインストールについての記事を書きました。
意外にも閲覧数があったので今度はCRIの記事を書くことにしてみました。

目次


まずサウンドミドルウェアについてはコチラを参照ください


orotiyamatano.hatenablog.com

FMOD使ってたんじゃないの?なんでCRI使うの?浮気?


はい、浮気です。というか完全移行です。
FMODは破格で良いところも多いのですが、どうしても日本に住む手前、日本語ドキュメントが欲しくなります。
CRIは日本企業ですし、ほとんど日本語マニュアル対応済みです。
また、以前言っていたインディー版はFMODしかWebGL対応していないという懸念点も、
CRI LEは今度WebGL対応をすると宣言しており、懸念事項の一つが払拭されました。
(これでunityroomでCRI使えるね!!)

WebGL対応の旨の記事
www.cri-mw.co.jp

またCRIは機能が豊富なので今後日本ゲーム業界で働くなら触らない手はないです。

前提条件


今回は初心者向け記事。
CRI LEを使用します。
Windows
WebGLはまだ未対応バージョン
Unity 2022.3系

ダウンロード


↓のリンクからダウンロード。
game.criware.jp

私がダウンロードしたバージョンはADX LE Unity SDK(v3.10.01)

一緒にWindows用(3.52.03)も落としておく。

ツール郡について


CriAuthorizationTool


ライセンス登録ツール
以下にあげる様々なツールをつかうにはライセンス登録が必須。
ユーザーライセンスの発行にはメールアドレスが必要です。
ライセンスはPC(Macアドレス)に紐づけられるので普段使いのPCで登録しましょう。 2台まで登録可能。
(個人的には自宅PC、ノートPC、ビルドマシンの3台欲しい気持ち……)

ちなみにMacアドレスマザーボードに依存するのでPC自作する人は意識するといいかも。

CriSolv


こちらは使わなくても良いツール。
音声波形ファイルビューアツール
今回は説明を割愛。

criware.info

CriAtomCraft


このツールが主にCRIのサウンドを調整したりするツール。
主にこちらは製品版ADXと比べ大きな差はないです。
LE版はWebGLへの書き出しはまだ出来ませんができるようになるので製品版とほぼ変わらないかも。

各種ツールの使い方


解説しようかと思ったが、公式にて既に様々な解説記事が上がっているのでソチラを参考にするとよいだろう。
記事が作成されたのは少し古そうだがツールの使い方はほぼ変わっていないはずなので参考になるはずだ。

チュートリアル
game.criware.jp

マニュアル
game.criware.jp

UnityでCRIを再生するには CRI ADX サウンドオーサリングツールAtomCraft - CRIWARE for GamesCRI ADX(Unity) - CRIWARE for Games
チュートリアルをすればよい。

とはいえ、チュートリアルを貼って本記事をハイお終いとしてしまうのは味気ないので実際にサウンドを再生するまで解説しようと思う。

解説開始


今回はSEをセットアップし再生するまでを目標とする。
まず再生するSEはこちら↓紙を捲った短い音のつもり。
私がつくったSEなので著作権などは気にせず使って構いません。

soundcloud.com

ざっくりとした流れとしては

1.Atom Craftでカテゴリの設定をする
2.Atom Craftで音源を読み込み、音の設定をして音源をCRIで再生できる形式にして書き出す
3.Unityで読み込み、Unityで再生する
という感じ

1.Atom Craftでカテゴリの設定をする


まず、(cri_adxle_tools_ver_3_52_03\cri\tools\Authorizationにある)CriAuthorizationToolにてツールをつかうPCを決めた後、ライセンスを発行した後
(cri_adxle_tools_ver_3_52_03\cri\tools\ADX2LE\ver.3にある)CriAtomCraftを立ち上げる。

新規作成をする

プロジェクト名を決める。
今回私はTestとした。

次にワークユニット名を決める。
ワークユニットとは担当者ごとの作業範囲を決めるものだと思えば良いらしい。
担当者が一人なら適当でもいい。

まずプロジェクトツリーを開く。

プロジェクトツリーには仮の値で既にカテゴリが設定されているはずだ。
ちなみにカテゴリはデフォルトで最大4個、最大16個のカテゴリが設定可能だ。

SE、BGM、Voiceなどそれぞれ用途にあわせたカテゴリをつくるとよいだろう。

カテゴリの上位にカテゴリグループというのがあるが、それはサウンドのキューごとに一つしか指定できないらしい。
基本的にはいくつも使い分けるということはないと思うのでMainというカテゴリグループで十分だと思われる。

今回追加するのはSEのため
右のインスペクタよりカテゴリグループをMain、カテゴリをSEとした。

必須ではないが、同時再生数も決めておく。
SEは噪音(そうおん: 振動時間がきわめて短く、音の高さが特定できない音。非楽音。)であることが多く、
同時に鳴らすと音が割れることがある。
(音は信号にすることができない。結果として許容レベルを超えた信号はすべて「ノイズ」として処理されてしまう)
(噪音だと許容レベルを超えた音になりやすい、人間の聞こえない範囲の音をコンプレッサーをかけることで割れにくくはなるが、どこか音が丸くなってしまう)

後SEが複数鳴っていると純粋にうるさいので同時再生数上限を決めておくとよいだろう。

カテゴリを選択してカテゴリキューリミットフラグをTrueにし、今回は仮でリミット数を3にした。(少なめかも10ぐらいでいいかも)

2.Atom Craftで音源を読み込み、音の設定をして音源をCRIで再生できる形式にして書き出す


カテゴリ設定をしたところでいよいよ音を登録していく。
まず、今回の音を落としてきた後にCri Craftのマテリアルツリーのルートフォルダにドラッグ&ドロップする。
そうすると追加されるはず。

次にその追加されたものを自分のワークユニットの中に作成されてあるCueSheetにドラッグ&ドロップする。

ちなみにCueSheet単位でサウンドは読み込まれることになるので、ゲーム上でシーンを分けたい場合などは別にしたほうが良いだろう。
また先程指定したカテゴリはCueごとの設定になる。(CueSheetの中にCue一覧がある感じ)
一括で設定しやすいように少なくともカテゴリごとでCueSheetは分けておいたほうがよいと私は思う。

先ほど登録したカテゴリをCueに設定する、Cueをドラッグ&ドロップして先程のカテゴリの箇所にいれてもよいし、インスペクタより設定しても良い。
私はインスペクタで設定。

ついでにキューシートをわかりやすい名前に変えておく。
音はF5で再生できるらしい

次にエンコードタイプを決めておく。
どのように読み込まれるかだ。
SEのような打撃音は作り込んでも聞こえない音域が多いので中音質にし、
短いものなのでオンメモリで読み込むようにする。

BGMなどはストリーミングにするとよいだろう。

今回は概要だけ&SEなのでループ設定や音量設定については割愛。
各種音をビルドする。

ちなみにCRI ADX LEには暗号化設定はないらしい。残念。

書き出すのは簡単該当キューシートを選択してビルドを押すだけ。
基本的にキューシート単位でパッキングされるので音声をどこにいれるのは考えたほうが良い。

書き出されるとacbファイルとacfファイルが出来上がる。
acbファイルがキューシートをまとめたもの、acfは全体設定だ。
Unity用にAssetsファイルで書き出すとかC#でどうのこうのオプションがあるがacbとacfだけで十分だ。
(ストリーミングタイプだとAWBファイルも必要らしい)
というか最悪acfはコードでも設定できるのでなくてもいい。
とはいえ、CRI上で設定した内容をいちいちコードで書くのは大変なのでacfを読み込み一括設定するのが楽なので2つファイル読み込むようにする。
acbファイルとacfファイルをそれぞれ出力したらそれをUnityのプロジェクトのAssets/StreamingAssets配下の任意のフォルダに配置すれば書き出しは完了だ。

3.Unityで読み込む


最初に落としておいたSDKのunitypackageを入れる。
criadx2le_sdk_unity_v3_10_01_smartphone_j.zip\cri\unity\pluginにあるほう。(obsoleteは廃止)
(Addressable読み込みしたい場合はソチラのパッケージも入っているのでソチラもインポートすると良いだろう)

インストールしたらAtom Browserを開く

開いたらacfファイルとacbファイルを格納したpathを指定する。
するとcueファイルの中身が表示されるはずなので、再生して音がなるか確かめてみてください。

これで鳴らない場合、AtomバージョンとUnityのSDKバージョンの齟齬があっていないなど不具合がある可能性があるのでご注意を。
次に、初期化コンポーネントと、エラー表示コンポーネントを配置

適当なGameObjectを作り、CRI Atomコンポーネントを追加し、
acfファイルとacbファイル、CueNameの指定を行う

次にHierarchyの階層を指定した状態でAtom BrowserのCreate GameObjectを選択する。

するとCriAtomSourceコンポーネントがついたGameObjectが生成される。
インスペクタのPlay On StartにチェックしてUnityを再生すると
該当のゲームオブジェクトが有効になったタイミングでサウンドが再生されるはずだ。

とりあえず、私の道案内はここまで!
公式にチュートリアルがあるので詳しくはソチラを見ていただくとよいだろう!

まとめ


スクリプトは日本語でコメント解説が書いてあり読めば結構何やってるかは分かりそうだったので、
自分でカスタマイズして使うとよいと思いました。

少しドキュメントが古い部分も見受けられたが
やはり、FMODと違い日本語ドキュメントがあるのは心強いですね。
以上!やまだたいしでした。