なぜ、Wwiseのプラグインを自分で作成すべきか

オーディオプログラミング / Wwiseの使い方やツール

別題「心配するのをやめて、要件書を好きになるまで」

 Robert Bantin

写真:自宅にて(バーチャルリアリティとコーダーの現実のはざまで迷っている僕)

 

はじめに

「こいつ、何を売り込もうとしているんだ」と、今、思った?まあ、正当な疑いだけどね(笑)。何しろ、自分は色々なオーディオAPI用のDSPプラグインを作成することをメインに、経歴を積んできたから。でも、だからこそ、今時のビデオゲーム開発は、カスタマイズされたDSPがあるかないかで大きく差がでることを、経験で知っているのです。

現場でよくある場面

サウンドデザイナーなら、まだ存在していない何かが欲しい、ということがよくあると思います。近いモノがあっても、負荷が大きすぎ($$$またはCPU)かもしれません。そもそも、商用としてニッチ過ぎて存在しなかったのかもしれません。ここだけの話、本当に真新しいプラグインのアイディアなんて、そうめったにお見受けしません。それよりも、思い描いているものが存在しない理由は、もっと地味なのではないでしょうか。

読者がオーディオプログラマであれば、自己開発の一貫としてDSPプラグインを作ってみようと考えたり、確立されたビジネスケースの商用サードパーティプラグインの開発に何度か携わったことがあるでしょう。(自分にとっては初耳のビジネスケースでも。私もそんなこと、ありました。)ですが、オーダーメイドのDSPプラグインをゼロから作成した経験のあるオーディオプログラマは、ゲーム業界で予想以上に少ないのです。そんな技術は、黒魔術だと思われています。

救いの光は、適した質問さえすれば手に入ることも多いので、まず聞きます。そもそも、なぜサードパーティの商用DSPプラグインが存在するのか?

  • 一番の理由は、Audiokineticが対応しているから!自然と、Audiokineticは組み込むオーディオエフェクトを開発しやすくなりますが、幸運なことに我々にも公開してくれているので、これにはAudiokineticに永遠に感謝です。
  • テクノロジ企業が、ゲーム開発者に独自のオーディオDSPテクノロジをライセンス提供したい場合、人気のミドルウェアソリューションがWwiseなので、そのテクノロジーを商品化するのに最良の方法が、Wwiseプラグインだからです。
  • ビデオゲームコンソールのプラットフォームベンダが、コンソール内に特別なオーディオ用ハードウェアを入れていて、ゲームスタジオがアクセスできるように一番整備しやすいのが、Wwiseプラグインをオーサリングすることだからです。
  • 最後の2点を組み合わせた理由

 

1.png

ホワイトボード:開発プロセスの第一歩。

 

こういったプラグインがどのように作成されるのか、状況を把握しているゲームデベロッパは珍しいです。Audiokinetic独自のエフェクトスイートはさておき、あなたの所属スタジオが、特定プラットフォームをサポートすると既に決めて(そしてプラットフォームベンダも何らかの形でサポートを提供して)いるか、使えるかもしれない発売後のパーツを一式、準備されたかです。

サードパーティベンダのことを悪く言うつもりは全くありませんが、グラフィックスに関して、スタジオが組み込まれたシェーダやサードパーティのシェーダしか使わせてくれなかったら、それは許容できますか?おそらくノーで、私達も時々目にするとおり、ビデオゲームはその他大勢のゲームと差別化するために独自のビジュアル完成度が求められ、現実的なレベルで、そのゲーム専用のオーダーメードのシェーダーを作成する色々な理由が、パフォーマンス上、あるからです。

私に言わせれば、ゲームオーディオも全く同じです。

そこで次の質問:いったいなぜ、Wwiseプラグインがインハウスで開発されないのか?

  • 典型的なのが、スタジオ内にノウハウがないからです。残念ではありますが、DSPのローレベルの知識があるゲームオーディオプログラマは「めんどりの歯と同じくらいに」珍しいわけで、ほかにも表現の仕方がありますが、ここでは控えておきます。
  • 「時間がない、今はゲームをつくっているんだよ!」みんながあなたのようなオーディオのエキスパートではないので、何を達成しようとしているのか、最初はチームメンバーに分かってもらえないかもしれません。アセット制作やサウンドデザインの予算は最初から計上されていたとしても、DSP開発時間となると、普通は、はっきりした正当化が必要です。
  • 「今まで通りでいいんじゃない?」この業界が技術革新の中で生まれたわりには、スタジオは信じられないくらいリスクを回避したがることがあります。ゲームオーディオには安心感が求められ、多くのスタジオが慣れ親しんだ方法に浸ってしまいますが、逆効果となることも。

2.png

ホワイトボード:開発プロセスの次のフェーズ

 

最後の3点について私は個人的な考えがあって、それを言うとあまり快く思わない方もいると思いますが、せっかくなので。言っちゃいます...。

世の中には、ローレベルDSPコーダーの経験があるソフトウェアエンジニアが、何千人といます。ほかの業界、例えば車載システム、映画、音楽プロダクションツールなどの仕事で働いています。ゲーム業界で見かけないのは、多くのスタジオがプログラマを採用する際に、能力を評価する方法としてゲームプレイのテストやゲームプレイ関連の分野の試験を行うからです。つまり、一般的にゲーム業界で採用されるオーディオプログラマ達は、そういったゲームプレイのコードの標準的なテストに合格できる人たちだけです。その中の一握りが、DSP技術も習得しています。

3.png

ホワイトボード:機会さえあれば使いたくなる、ベン図

 

オーディオコード開発の予算は、ゲームの種類や既に持っているテクノロジーによって変わってきます。私はオーディオコード開発作業の大小をゲームタイプによって線引きするつもりはありませんが、一つ、いいことを教えましょう:

プレイヤは、ゲームオーディオの没入感が高ければ高いほど、グラフィックスのレンダリング問題を気にしなくなります。(1)

VRゲームの制作を考えていますか?前の行の8倍です。(2) 

最後の点は反論を招くかもしれず、ビデオゲームのビジネスはリスクが高い試みであり、もしスタジオが実証済みの開発方法を習得しているのならば、それを続けた方が良いという主張も確かにあります。でもその反面、今までの成果の上にあぐらをかくのは絶大なビジネスリスクです。たった1つのスタジオが意義ある方法でゲームの期待値を引き上げるゲームを発売するだけで、競合他社はリリース予定のゲームで確実に遅れをとってしまいます。特にトリプルA級のタイトルの開発中であれば、あらゆる面で革新的なゲームを出荷することが目的ではないでしょうか。新たな一歩を踏み出すのをほかのスタジオに先を越されてしまっては、あなたの次のゲームは危機に直面します。ゲームデベロッパーであれば誰でも、競合他社を抜いて、グラフィックスであれフィジックスであれAIであれ、勝ちたいと思って当然です。ゲームプレイ中にプレイヤに聞こえる音がエクスペリエンスにとって極めて重要だと科学的な実験で証明されているのであれば、新しいオーディオ技術で得することは、沢山あるはずです。VRオーディオの話に戻りましょう。まさしく今、ゴールドラッシュです。

どこから始めるか

プラグインのアイディアに青信号が出る前に、実はWwiseプラグインは何種類かあるので、開発アプローチを決める前に検討するべきです。

最も広く使われているWwiseプラグインの種類

エフェクトプラグイン

エフェクトプラグインは、Actor-Mixer HierarchyやMaster-Mixer Hierarchyのエレメントに対して処理を適用させますが、エレメントのシグナルチェーンに挿入して実現させます。専用のEffect(フィルター、ダイナミック機能、飽和、タイムベースのエンベロープやエコーやリバーブなど)を独立させて、またはエレメントのグループの一部として、使う場合は、このように実装すべきです。

 4.png

ホワイトボード:エフェクトプラグインを、Actor-Mixer Hierarchyのエレメントにインサートする方法

ソースプラグイン

エフェクトプラグインと同じく、ソースプラグイン も全てのエレメントのエフェクトページにインサートできます。ただ、システムの中へサウンドを投入するのに使うので、大体Actor-Mixer Hierarchyにあるエレメントの中に配置されます。Master-Mixer Hierarchyのエレメントの中に置けない技術的な理由があるわけではなく、ただ継続的に再生され続けます(場合によって、これが目的です)。分かりやすい適用例としてシグナル生成機能や、何らかのシンセサイザーがありますが、ソースプラグインを使って、全く別の内容からオーディオをストリーミングすることもできます。サウンドエフェクトをプロシージャル生成で作成したい場合は、これをスタートポイントにできます。

 

5.png

ホワイトボード:階層のどこかにオーディオを投入する方法

オーディオデバイス(別名シンク)プラグイン

普通、出ていくサウンドはシステムのOSアウトプットに向かいますが、そうする必要はありません。シンクプラグインは、エレメントのサウンドを切り取って、全く違う場面に送信します。ゲームを、サウンドに反応させる必要がありますか?そういった時に、この種類のプラグインを使います。

 

6.png

ホワイトボート:階層のどこかから、オーディオを抽出する

ミキサープラグイン

ほかの3つと異なり、ミキサープラグインは、マスターミキサーエレメントのミキサー部分にしか入れられません。エレメントのシグナルパスにインサートされるプラグインなので、エフェクトプラグインと似ているところがあります。違いは、サウンドオブジェクトが別々のスピーカーチャンネルに変化するレンダリングプロセス自体に、プラグインが関与する点です。自分でつくった3Dパンナーを実装する場合や、ほかのマスターミキサーエレメントのインスタンスについて把握する必要があるプロセッサーを実装する場合は、この形式のプラグインを採用します。

7.png

ホワイトボード:ミキサープラグインは、Master-Mixer Hierarchyのエレメントにインサートされる

Wwiseでオーディオを扱う方法をカスタマイズする様々な方式 について、これで分かりました。次に、自分で新しいものをつくる必要があると、制作チームを納得させるにはどうするか。

プラグインの種類を上記で説明しましたが、これではオーディオを専門としないプロダクションチームのみんなを引き付けないドライな内容なので、問題です。それよりも、自分のDSPアイディアを売り込むのに、コンセプトとして説明するか、簡単なプロトタイプを見せる方が、断然いいと思います。

例えば

Guitar Hero Liveでは、マイクに入ってくるサウンドのピッチをトラッキングして、歌い手のパフォーマンスの正確性をグラフや点数で表示する必要があります。もちろん同じようなことは、以前のGuitar Hero、Sing Star、Rock Bandなど最近のカラオケシステムで既にやられています。もし今後、ボーカル対応のリズムアクションゲームをもう1つつくる機会があれば、この機能をMSR(Minimum Shippable Requirement、出荷最小要件)として参照することがカギです。プロダクション担当はびっくりしないし、実は臆病なオーディオコーダー計画で、信号マトリックスにプロトマターを使うなど知る由もありません。これでしか解けない問題もあるかもしれません。

サイエンスフィクションといえば、Elite: Dangerousでインゲームのボイスチャット機能を使うと、あなたのセリフが、まるでアポロミッションの通信のように受信側で聞こえます。これだけで、ほかの人間パイロットと話すときの雰囲気が、とても「宇宙飛行士風」になります。主観的にこの作業内容を説明するならば、「ボイスチャットでプレイヤがアポロ飛行士風に聞こえること」となっていたかもしれません。それを達成するために必要なWwiseプラグインの組み合わせ方は、オーディオデザイナーやコーダーたちに任せられます。プロダクション側が知りたいのは、実現するための作業時間の概算です。

迅速なプロトタイプの準備

プラグインのアイディアをデモしたければ、すぐにコードに取りかからなくても、基本的なデモをつくれるモジュラー型サウンドデザインツールがいくつか提供されています。ゲーム内で動かなくてもいいのです。プロトタイプを使って、リアルタイムで反応するデモができれば、みんなが同じことを理解できます。こちらで遊んでみたことは、あるかな?

 

- [OpenSource] Pure Data
          - また、Enzien Audioの “Heavy” tool setもお勧め。Pdパッチをコンパイルしてくれて、最近、Wwiseサポートも追加されたばかり!
- [Cycling ‘74] Max
- [Native Instruments] Reaktor 
- [Plogue] Bidule

 

実際に本物をインプリする段階になっても、どのようなパラメータが必要で、パラメータ範囲はどれくらいなのかを、プロトタイプで事前に把握しておけます。まじめな話、自分のプラグインを本気で使い始める前にそういったことは整理しておいてね。あとで後悔しないために。

  

8.png

写真:前もって計画を立てるのは難しくないけど、食料を確保しておくことも重要

 

ゴーサインが出たところで、あとはDSP側で少し助けてもらうだけです

どんなプログラミングテクニックでも、それを完璧に知り尽くしていると考えるプログラマは無知な証拠で、私は、新しいことを学ぶチャンスこそ自分のプログラマとしての意義の半分だと思っています。ウェブで、オーディオコードを部分的に説明する記事はあるものの、私が知る限り、一番役に立つ情報は以下の本に書かれています。

 

 

CURTIS ROADS "THE COMPUTER MUSIC TUTORIAL"

どちらかというとアイディアの本で、数学が少し出てきて、特段コードの事例はありません。だけど、(技術的には)深さ3センチでも、本の範囲は何キロにも及び、初心者がデジタルオーディオのコンセプトを知るには、うってつけです。サウンドデザイナーやプログラマで、全体的なコンセプトを学び始めたいという人向けです。

 

UDO ZÖLZER "DAFX - DIGITAL AUDIO EFFECTS"

前述の本とは文字通り逆で、具体的なDSPブロック構築のブループリントにフォーカスを当てた本です。引用も記載された現代のテクニカルレファレンスが必要であれば、長い目で見てこれほど良い投資は、あまりありません。説明にあるDSPテクニックの一部が、詳細に不足することもありますが、実装の観点では、90%の場合に90%までたどり着けます。

 

HAL CHAMBERLIN "MUSICAL APPLICATIONS OF MICROPROCESSORS"

おそらくこの類の最初の出版物で、ハル・チェンバリン(Hal Chamberlin)は1980年代にマイクロコンピュータを使ってシンセサイザをつくっていたようです。まだ使える内容だということは、数学は時代に関係ないことの証明です。長らく絶版となっていて、中古で入手でき、時々割安で出品されます。見つかったら手に入れた方がいいけれど、一番いいところは、おそらく次の推薦書の中にあります。

 

BEAT FREI "DIGITAL SOUND GENERATION" (1) & (2)

上記DAFXと同じ流れで、DSPブロックについて真に技術的な内容が沢山、詳しく書かれています。あと、無料ですごいんだよ。無料だからすごいんじゃないけど、でもタダだよ、タダ。

 

PRESS, FLANNERY, TEUKOLSKY, VETTERLING "NUMERICAL RECIPES - THE ART OF SCIENTIFIC COMPUTING"

この本は、大学で多くの理数系の人がどこかの時点で入手する、ソースブックの一つです。私のはPascal版で、どうやら自分は見た目よりも年を取っているようです。最新バージョンはC++向けに完全に書き直されたということですが、そこがポイントではないんです。ポイントは、もしFast Fourier Transformのような流れをゼロから書く必要があれば、まずこの本からスタートするべきということです。

 

9.pngホワイトボード:Numerical Recipesの様々な改訂版が、長年の間に存在。

最後に、友達としてアドバイスします...。

自分の知っていることと、知らないことを、知っておきましょう。

多くの場合、複雑な信号処理のテクニックは、複数の単純な信号処理のネットワークに細分化できます。まず、信号処理の各段階を理解して自分があまり経験のない部分に力を入れてから、本気のインプリメンテーションにコミットしてください。単純なリスク最小化です。

Screen Shot 2017-01-03 at 4.46.34 PM.png

ホワイトボード:ソクラテスの言葉を言い換えて、大失態を回避

気が変わっても、恥ずかしいことでない

前につくったものを再現しているのでなければ、ほとんどのサウンドプロセッシングのアイディアは開発中に変化するものです。柔軟な態度を保ち、最初から大量のインプリメンテーションに着手するのは避けましょう。少しずつ試しながら想像通りに動くかを確認していかないと、求める結果が出てこないかもしれません。デモをして、反復をして。ハイレベルのコンセプトを目指して、少しずつ時間をかけて近づいて行った方が、間違いなく、最終的な結果にもっと満足できます。

せっかくのプラグインのアイディアに、充分な愛情を注ごう

ゲーム開発の終盤に近づくと、優先順位がグラッと揺らぐことがあります。こんな場面に慣れているかもしれません:開発行為が積極的でなくなり、後手後手になります。プラグインの開発努力も浸食しかねない環境です。この状態をあまり長く放置しておくと、プラグインの可能性を100%引き出せません。未完成で終わるかもしれません。DSPを思い通りにつくるのは難しいので、あなたが集中し続けることは、努力目標でなく必須項目です。できれば、この仕事を開発サイクルの早い段階に終わらせ、十分な愛情を注いであげて。

 

参考文献

[1] http://captivatingsound.com/phd-thesis-captivating-sound-the-role-of-audio-for-immersion-in-games/

[2] 7でなく9でなく、ぴったり8倍。まあ、係数はでっち上げでも、言いたいことは同じです。

 

ロバート・バンタン(ROBERT BANTIN)

Massive Entertainment - A Ubisoft Studio

ロバート・バンタン(ROBERT BANTIN)

Massive Entertainment - A Ubisoft Studio

Expert Audio Programmer  @cubusaddendum

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

アンビソニックスで、ダイナミックなアンビエンスを実現

アンビソニックスを回転...

16.6.2020 - 作者 ルイス・ハビエル・ブッフォーニ(Louis-Xavier Buffoni)

A Wwise Unity Cheat Sheet

今日のトピックは、Wwise Unity...

2.2.2021 - 作者 マス・マレティ・スナロプ(MADS MARETTY SØNDERUP)

Wwise Unrealインテグレーションの改善

Wwise...

10.6.2022 - 作者 ギヨーム・ルノー(GUILLAUME RENAUD)

ReaWwiseを使用してWAAPIをReaScript(Lua)で実行する

22.3.2023 - 作者 アンドリュー・コスタ

ReaWwiseの開発 パート2 - 実装

1.5.2023 - 作者 アンドリュー・コスタ

Wwiseで実現するリアリティのあるハプティクス効果

はじめに...

19.3.2024 - 作者 香田 夏雄(NATSUO KODA)

ほかの記事