インディー音ゲー開発をサウンド技術でサポート!ADX LEユーザーインタビュー Vol.8『Liminality』編
こんにちは、「CRI ADX」サポーターの一條です。
CRI・ミドルウェアでは、同人・インディーゲーム開発者や学生を対象として、無償版サウンドミドルウェア「ADX LE」を提供しています。(少し前に製品名が「ADX2」「ADX2 LE」から「ADX」「ADX LE」に変更になりました。製品構成は変わりません。)
本インタビューシリーズは、ADX / ADX LEの魅力を同人・インディーゲーム開発者にもっと知ってほしい!という思いから、実際にADXを開発に採用したクリエイターにインタビューを行うものです。(前回の『ヤマふだ!にごうめ』編はこちら)
第8回はProjectZeroによる音楽ゲーム、『Liminality』の事例をご紹介します。
——自己紹介と本作のご紹介をお願いします。
むと:はじめまして。”むと”と申します。普段は大学生をしています。Liminalityでは制作サークル「ProjectZero」の代表として、全体のディレクションや譜面の制作などのプランナー業務などを担当しています。
てのんの:てのんのと申します。「ProjectZero」のリードエンジニアを担当しています。主に音楽ゲームとアウトゲーム全般の実装を行っています。
tetsu:tetsuといいます。「ProjectZero」のエンジニアとして、ゲームのリリースに必要な基盤開発やCI/CDの構築を行っています。
むと:Liminalityは、半円の形をしたレーンによる、スマートフォンの画面全体を使ったプレイ感が特徴的な音楽ゲームです。
ProjectZeroの第1作目となる作品であり、楽曲追加やゲームモードの追加などのアップデートを継続して行っています。
——本作にADX LEを導入するきっかけはどのようなものでしたか?
てのんの:自分がソーシャルゲーム業界の出身だったこともあり、音楽ゲームを制作するのであれば、「ADX」 を使用するのは必須という認識がありました。導入当初は、ADXの無償版である「ADX LE」でどこまでの機能が使用できるのか?という懸念があったのですが、実際に使用してみると機能は製品版とほぼ同等であることがわかり、非常に感謝しております。
また、業界出身ではないチームメンバーも CRI・ミドルウェアのことは認識しており、有名な音楽ゲームのタイトル画面にロゴが載っていたりと、「音楽ゲームといえば CRI」という共通認識がありました。
——ADX LEを導入する際、使い方が分からなかったり困った点はありましたか?
てのんの:まずは良かった点として、音楽ゲームとしてのクオリティを大幅に上げることができたことです。詳細は後述するのですが、ADX LE を導入することで、スマートフォン端末における再生遅延の軽減と音源ファイルの容量削減が達成できました。ADX LE なしでは Liminality をリリースすることはできなかったかもしれません。
逆に導入で手間が増えた点としては、ADXにおいては音声データを Unity に直接組み込むのではなく、Atom Craft(ADXに同梱されている専用ツール)を介して音の調整やビルドを行う点があげられます。しかし、この作業はエンジニア以外でも担当できるという点から分業につながり、複数人での音の調整や ADX LE 特有の機能を活用する点では必要だった考えています。
これらの点から ADX LE を導入したことによる恩恵は非常に大きく、音楽ゲームを制作するためにはとても役立つサウンドミドルウェアだと思っています。
——楽曲の譜面データと音声データはどのような構造になっていますか?
むと:音楽ゲームに特徴的な点として、選曲画面で楽曲の「一部分」をプレビューとして再生する仕様がが望ましいと考えています。
そこで、本作では音源に対して2つのキューを用意し、片方をプレイ中に再生するためのフル尺に、もう片方はADXのマーカー機能を活用することでプレビュー部分だけを再生する構造としました。これにより、楽曲のもっともキャッチーな部分を再生しながらも、プレビュー音源部分の音声データを別途用意するひつようがなくなるため、容量の削減につながっています。
また、マーカーの指定もAtom Craftから簡単に行えるため、サウンドチームへの作業依頼が不要になるなど、全体の作業時間短縮に繋がっていると感じます。
——追加楽曲を配信する中で、ADX由来のデータはどのように管理されていますか?またその際、便利だったことや不便だったことはありますか?
tetsu:音源データは楽曲ごとに1つのACBファイル(1キューシート)の単位にしています。これは本作において、各楽曲毎に独立したデータにしたほうがロード時や再生時に扱いやすいためです。
また、コンテンツデータの組み込みと配信のため、本ゲームではAddressables(Addressable Asset System)を利用しています。過去バージョンのADX LEではAddressablesに対応していなかったため、バイトデータとして読み込んだあと内部で改めてキュー扱いにするといった独自の複雑なロード処理で対応していました。
しかし、後にアドオンプラグインがリリースされたことで、CRIのファイルがUnityファイルとして扱えるようになり、更にはAddressablesにも公式で対応していただけました。組み込み用のマニュアルも一から解説があったため、移行はスムーズにできました。このプラグインによりUnity上でキューの再生ができるようになったり、StreamingAssetsフォルダ以外のロードにも対応していたりと自分では実現できなかった便利機能が揃っていたのも、新バージョンに移行してよかった点です。
楽曲データはAddressablesのアセットとして作成し、以前は全てLocalアセットとしてアプリ内に含める形で配信していました。その後運営を続けていき、楽曲データが増えたことでGoogle Play Storeにおけるアプリの容量制限を超えてしまいました。現在はアプリには楽曲データは含めず、追加データとして配信しています。
今のところはPlay Asset Delivery という機能で Addressables 形式の楽曲データを追加データとして配信しているのですが、今後は独自の配信システムを使って配信する形に変更する予定です。
むと:楽曲音源の管理・実装は全て私が行っています。作曲者様から納品頂いたデータをAtom Craftにインポートしてビルドし、Unityへ組み込むワークフローを担当しています。
私はプランナーの立場にあたる役割なのですが、ADX LEを使うことで、エンジニアチームにお願いすることなく楽曲データを組み込める点が非常に便利です。このおかげで新しい楽曲を組み込む際にも素早く確認とUnityからのビルドを行うことができ、効率よく開発が進んでいます。もしこのフローを整えられていなかった場合、追加楽曲の配信には更に時間がかかっていたと思います。
——特に音ゲーにおいて、ADXの採用で良かったこと・楽になったことはありますか?
てのんの:音楽ゲームは「音の遅延をどれだけ削減できるか」で体験価値を大きく左右します。Unity 標準の音声再生は特に Android 端末での遅延が大きく、機種によっても遅延度合いが違ったりと、音楽ゲームを実装する上で大きな課題があります。
この課題は CRI さんの ADX LE を導入することで簡単に解決することができます。以前のバージョンの ADX LE であれば CriAtomExLatencyEstimator という機能で音声がどれくらい遅延するのか推測することができますし、最新の ADX LE であれば SonicSYNC という機能で前述の遅延推測すら不要になります。SonicSYNC を使用することで、iOS/Android ともに音の再生遅延を約 50ミリ秒まで抑えることができました。ここまで少ない遅延で音を再生できるミドルウェアは他にないと思います。
また、多くの楽曲を収録する音楽ゲームでは、音源ファイルがアプリの容量を圧迫してしまう問題もあります。「Liminality」 では ADX LE を活用することで、音質を損ねることなく 1 楽曲の容量を 2 ~ 3 MB 程度に抑えられており、今後の楽曲追加にも耐えうる環境を構築できています。
——その他、ADX LEの機能で活用している機能はありますか?
てのんの:ゲーム中に鳴らすSEでは、キューリミットとプライオリティの機能を使用しています。Liminality には高密度でノーツが降ってくる譜面も存在しており、大量の SE が同時に再生される場合があります。SE が大量に再生された場合も曲は絶対に止めてはいけないので、キューリミットとプライオリティの機能を使うことで、曲の再生優先度によって曲が止まってしまわないように制御しています。
また、Unity エディタ上では CRI Profiler(エディタプロファイラ)で実際の同時発音数などを視覚的に確認することができるので、デバッグにも大いに役立っています。
——ADX LE機能のなかで、今後のゲーム開発で使ってみたいものはありますか?
てのんの:音楽ゲームの特殊な演出としてDSP エフェクトを活用したり、Atom Craft のロボット機能を使用したワークフローの改善を試してみたいと思っています。
Liminality はこれから更に規模が大きくなり楽曲の数も増えていく予定なので、音源管理の自動化は積極的に行っていきたいと思っています。
——ADX LEの今後に期待する機能はありますか。または、サウンド演出開発に関してこんなツールがあったらいいな、という展望はありますか。
てのんの:音楽ゲームという性質上多くの楽曲を管理する必要があるのですが、曲によって音量に差が出ないようにラウドネス値を一括でチェックする機能があると便利だなと思っています。
現状は弊プロジェクトのサウンドチームが音量のチェックと修正を手動で行っているのですが、ラウドネス値のレギュレーションを定めて一括で確認することができたら、工数削減に繋がると考えています。
むと:AtomCraft を使用して音源をビルドした後、acb などの成果物を Unity に組み込む手順を自動化できると便利かもしれません。ビルド後のポストプロセス的に、ファイルを移動したり任意のスクリプトを実行できると便利そうです。
——最後に、本作に関する告知や宣伝などがありましたらお願いします。
むと:Liminalityは先日リリースから半年を迎えました。これを記念した大型アップデートも配信しておりますので、是非この機会にインストールして遊んでいただけますと幸いです!