インタラクティブ性が高く聞き覚えのあるようなゲームサウンドは、良質なゲーム独特の雰囲気を支えるのと同時に、ゲームエクスペリエンスを向上させ、ゲームシステムの強化にも貢献します。近年、非常に人気の高いゲームの特徴として、ソーシャルプラットフォームの役割が注目されています。もしあなたに10代の子どもがいらっしゃれば、今どきのティーンエイジャーは、オーバーウォッチやフォートナイトやMinecraftのように、チャット機能のあるマルチプレイヤーゲームの方が好きな傾向があることをご存知かもしれません。もちろん、これらのゲームは素晴らしいグラフィックスや完璧にまとまったゲームプレイを誇り、プレイするのも大変楽しいのですが、ほかのプレイヤーと音声機能でつながることこそ、このゲームに何度も戻ってくる重要な要素となっているようです。友達同士がお互いにつながるのに、自由に話ができること以上の方法はあるでしょうか?
インゲームのボイス機能の人気は様々なプラットフォームで見られ、特にバトルフィールド、ディビジョン、リーグ・オブ・レジェンドなどのように、マルチプレイヤーのオンラインモードを主要なフォーカスとするゲームなどでは、これが顕著です。eスポーツ選手やFPSプレイヤーであれば誰しも経験のあることですが、ボイスの方が、銃弾の飛び交う激戦の最中はテキストよりも自然で効率的なコミュニケーション手段なのです。その上、おしゃべり自体が、ほかとは違うエンターテイメントをプレイ中に提供してくれます。
ゲームでボイスチャットの普及を阻んだ、過去の問題
さて、ボイスチャットのこのような重要性と利便性にも関わらず、多くのAAAゲーム、特にモバイル端末において、今まで重要視されていませんでした。モバイル端末のOSレベルにおけるサービス不足が、採用の遅れた原因の一つかもしれません。
モバイルOSでは、ボイスチャットに使用する通話ボリュームと、ゲームオーディオに使用するメディアボリュームをミックスすることが非常に難しく、場合によっては不可能となるので、結果として不要なノイズが発生します。例えば、ゲームオーディオはメディアボリュームを使い、ゲームチャットは通話ボリュームを使う、といったコンフィギュレーションでは、ゲームオーディオのアウトプットがプレイヤーがしゃべるたびに自動的にステレオからモノにダウンミックスされてしまいます。そのような状況では、没入感を持続させたり敵の動きをトラッキングしたりすることが容易ではありません。
また、ゲームオーディオとチャットオーディオの間で急にボリュームが変わることもよくある問題で、この場合は、ボイスチャットがあるたびに、ゲームオーディオ全体が自動的にダッキングされてしまいます。これが不愉快な問題だけならまだしも、場合によってはゲームエクスペリエンス全体が崩壊してしまいます。
図1 - ボイスチャットをモバイルOSで管理した場合の限界
一部のゲームでは、ボイスチャットの再生にメディアボリュームが使われるように実装し、チャンネルダウンミックスやボリュームの上下変動を解消しました。ところがこの小さな勝利は長続きせず、また新たな問題が露出し、ノイズリダクションやエコーキャンセラが欠如するためにプレイヤー間でのボイスの重複やエコーが起きてしまったのです。
WwiseのGame Multimedia Engine (GME) インテグレーション
WwiseのGMEインテグレーションは、前述の問題を解決してボイスチャットのボイスキャプチャ、処理、エンコード、デコード、そして送信を一括サービスとして提供します。クロスプラットフォーム対応なので、ゲームデベロッパーはGMEを使えばプレイヤーのデバイスがスマホ、コンソール、パソコンなど異なる種類でも対応できます。また、このソリューションは遅延の少ないコミュニケーションや高度な並行処理も可能にします。後者に関しては、すでにGMEはArena of Valorや、PUBGモバイルなど、少し前にPCU (Peak Concurrent Users) が一日200万人に上るようなゲームなどで、一貫したボイスチャットのエクスペリエンスを何百万人というユーザーに提供した実績があります。
Wwise GMEインテグレーションはゲームエクスペリエンスにボイスチャットを完全にインテグレートするための、エントリーポイントとエグジットポイントを提供します。各ボイスに対して個別に、エフェクト処理、スペーシャルオーディオのレンダリング、ダイナミックミキシングなどを施すことができ、まるで事前にレコーディングされたオーディオソースのような扱いです。
WwiseのGMEの実装を、下図に示します。プロジェクトのセットアップと、ランタイムの実行の様子を示しています。
図2 - WwiseのGMEインテグレーションと、ランタイムの実行フロー
1. GMEがOSのマイクのインプットをキャプチャし、ノイズリダクションやエコーキャンセラを適用します。エコーキャンセラを運用するのにレンダリング後の最終オーディオが必要ですが、GMEオーディオデバイスプラグインがこれを提供します(No. 10)。
2. ローカルのプレイヤーのボイスチャットのソースが、GMEサーバー経由でチームメートたちに送られます。ここで、オーディオエフェクトを適用することもできます。
3. 音楽、アンビエントサウンド、SFXなど、ゲームのほかのオーディオソースもGMEサーバに送信できます。
4. ボイスアクティビティの検知と、エンコード処理で、ネットワーク帯域幅が最適化されます。
5. GMEメディアサーバがボイスチャットを受領し、それぞれのストリームを、該当する受信側に送り込みます。
6. GMEサーバからボイスを受領して管理し、PCMオーディオとして解凍します。
7. 送られてくるボイスチャットを独立したサウンドインスタンスにアサインすることで、さらなるDSPや、距離による減衰や、ポジショニングなどが可能になります。
8. ボイスチャットは必要に応じて、単一のオーディオインプットストリームとしてミキシングすることもできます。
9. GMEサーバから受信したオーディオ以外の、すべてのサウンドが、ゲームによってローカルでトリガーされます。
10. 最終オーディオミックスがGMEオーディオデバイスプラグインによってレンダリングされますが、これはエコーキャンセラ処理(No.1)に使います。
クリエイティブな使い方
標準的なボイスチャットは昔からあるもので、それ自体は新しくありません。WwiseのGMEインテグレーションの興味深い点の1つは、簡単なセットアップでゲームプレイのメカニズムにアクセントを加わえることができ、同時にエクスペリエンス全体の没入感を強化できることです。
図2のNo.2のように、キャプチャしたボイスに対し、必要に応じてエフェクト処理を行えます。この形式でプレイヤーのボイスが標準的なオーディオソースに変わり、シグナルを、例えばコンプレッサ/リミッタやEQなどのエフェクトで処理し、そのボイスをGMEサーバに送り込めます。プレイヤーのボイスをもっと劇的に変え、ロボットやモンスターにしてしまうエフェクトも考えられますが、その場合は事前のテストが必要で、クリエイティブな処理を行いすぎると、シグナルを正しく圧縮してからサーバに送るというコーデック側の機能を妨害しかねません。その場合は、図2のNo.7で表されているように、エフェクトを単純に受信側で適用することができます。
なお、プレイヤーは全ボイスのダウンミックスを受信する(No.8)か、各ボイスを別々のストリームとして受信する(No.7)ことができます。各ボイスを切り離しておくと、ゲームプレイの特定部分を強調するようなおもしろい方向性を探れます。例えば、距離に応じた減衰を適用したり、ポジショニングを適用したりして、プレイヤーが周囲のチームメートの位置関係を把握しやすくできます。また、ボイスごとに周辺環境に基づくリバーブを出すことができ(例えばWwise Reflectを使ったアプリケーションであれば、ダイナミックアーリーリフレクションも可能!)、室内の物理的環境や存在感がさらに洗練されます。
さらに、例えば複数の小隊のバトルロイヤルゲームなどで、チーム内のディスカッションは無線を使ってプライベートにし、唯一、敵が一人のプレイヤーの盗み聞きをできるくらい接近すると、現実と同様に聞かれてしまうというシーンも。やられました!
あなたのプロジェクトでGMEをセットアップするには
以下の手順でWwise 2018.1または2019.1で実行中の既存プロジェクトで、簡単にGMEを設定することができます。
1. まず、Wwise LauncherアプリケーションのPlug-insタブから、GMEプラグインをインストールします。GMEがまだインストールされていなければ、ビュー下部のAdd Plug-ins… ボタンをクリックします。
2. あなあたのプロジェクトをWwiseの該当バージョンで開き、ProjectメニューのImport Factory Assets… を選択し、GMEを選択してOKをクリックします。
3. あなたのプロジェクトにGMEのファクトリーアセットをインポートすると、Factory Tencent GMEというワークユニットが3つ、Actor-Mixer Hierarchy、Events、そしてSoundcaster Sessionsに追加されます。
Master Audio BusのGeneral Settingsタブを開き、Audio Deviceの設定(Systemが一般的)を、セレクタボタン [>>] でTencent_GMEプラグインに変えます。
4. Tencent GMEというSoundcaster Sessionを開き、Play_GME_SendとPlay_GME_Receiveの2つのイベントのPlayを押すと、あなたのPCまたはMacにマイクが接続されていれば、自分の声が聞けます。
5. Wwiseプロジェクト経由でチームメートと話すには、二人が同じApp ID、Auth Key、Room IDを使い、User IDは異なるものを使います。
以上はGMEをそのまま使って簡単に実現できるエクスペリエンスであり、あなたのマシンで、このシステムが高速に稼働します。あなたのゲームに対するインテグレーション、特にゲームプレイにボイスチャットをインテグレートする場合は、Wwiseプロジェクトやゲームコード側でさらに追加の手順が必要となります。
Integration DemoのGMEのバージョンを見ると、あなたのゲームエンジンでセットアップする方法の概要や、ほかの魅力的な機能が紹介されています。もしUE4やUnityを使った開発であれば、専用のインテグレーションもあるので、このサービスの評価や適用がかなりはやくできるはずです。
今後の予定
WwiseのGMEインテグレーションの最初のイテレーションは、ボイスチャットをターゲットとしています。とはいえ、GMEはボイスメッセージング(音声メッセージを送信するためのpush to talk機能)や、音声テキスト変換(ボイスメッセージのテキスト化)なども、別のAPIを使いSDKで対応できます。WwiseのGMEプラグインの次のイテレーションでは、これらの機能が入る予定です。
最後に
GMEボイスチャットは、完全に制御できる安定した拡張性のあるサービスです。Wwiseに組み込まれたことで、ボイスチャットの複雑な技術面が抽象化され、ものの数分で、あなたのゲームにボイスチャットをインテグレートできます。その柔軟性が、オーディオやゲームプレイのクリエイティブなアイディアを導いてくれるはずです。
今、ゲームはますますソーシャルプラットフォーム化し、この状況では、開発者がインゲームのボイスチャットをゲームの標準仕様として組み込むことが必要不可欠となるかもしれません。業界内の熾烈な戦いの中、自ら差別化を図れるかどうかにつながります。
このソリューションについてのお問い合わせは、 WwiseGME@audiokinetic.com にお送りください。
コメント