m13o.net

2019-08-13 Tue 23:11
Game Audio Programmer になるために必要な事   programming audio game

CEDEC2019も終わり, Guerrilla GamesやInsomniac Games等が随分マッチョな事を簡単そうに言う衝撃もそろそろ醒めて冷静になり始めてきた頃かと思います. 今年のCEDECではGame Audioの領域ではさしてマッチョな講演は増野さんの講演を除いてなかったような気もします. そもそも"マッチョ"とはどういう状態なのか自分で言っておいて疑問ですが, それはそれとして, 自分の現在の領域であるGame Audio Programmingにおいて, マッチョになるためにはどういう知識があれば近付けるのかなというのを考えてみました.

PC, コンソール, モバイルとターゲットは違えど全てコンピュータ. ハードの知識は必要です. パタヘネ本, ヘネパタ本に記載されている事は基本的には理解していないとマッチョへの道は遠いです. また, 対象となるOSやkernelの知識も必要です. PCならWindowsやmacOS, Linux各ディストリビューション等がどうやってハードウェアとやりとりをしているのか把握していないといけません. iOS, Androidも同様です. コンソールは若干赴きが異なりはしますが, それぞれのプラットフォームのkernelの知識などはベンダー提供の資料等熟読しておく必要があります. さらに, 昨今はCPUのコア数が増加しており, マルチプロセッサ前提でプログラムしなければならない時代になっています. The Art of Multiprocessor Programmingに書いてある事は理解し実践できないと初手で詰みそうです. 当然CやC++, 場合によっては対象CPU用のアセンブラを自分で書くための知識は必要です. アセンブラに関して言えばそれが難しいかというとそうでもないのでなんとでもなるとは思います(個人的には書きたくはないのでコンパイラがんばってくれという気持ちです).

Game Programmingとしては上記は基礎. ここからメモリや各種リソースの管理, フレームレートを維持するためのあらゆる技術等ゲーム開発の領域で必要な知識が沢山あります. この辺りはジェイソン・グレゴリーのゲームエンジンアーキテクチャやゲームデザインパターン等が丁寧に教えてくれます.

そして, Audioの領域に特化するためにはそもそも音とは何かという処から知らなければなりません. 高校物理で習う領域からスタートしてフーリエ変換から波動方程式まで幅広い音波に関する数学, 物理学的な知識が必要であり, それらを元にして離散信号に関する処理を理解し, それをProgrammingに落とし込める能力が求められます. Audioの領域ですので, その波形データを変換したり再生したりする能力は当然, 場合によっては独自のコーデックとして処理しなければならないかもしれません. しかも現代的なGame Audioの領域は3D空間でどう聞こえるかを考えるために3D数学の知識も必要ですし, 波形データを高速に分析するために機械学習の知識が必要になる事もあります. PC上で波形データを元に別のデータを生成したり設定したりするためのAuthoring Toolを作るスキルも必要です.

これらを結集して初めてGame Audio Programmerへの道が始まります. これがスタートラインです. これらの知識があって初めてインタラクティブミュージックなどの領域にも手を出せるようになります. ゼロからGame Audio EngineやSystemと呼ばれる物を構築する事が何如に難しい事か. Audiokinetic社のWwiseやRAD GAME TOOLS社のMiles, CRI MIDDLEWARE社のADX2などのミドルウェアが何如に開発者がGameを開発する事に集中させてくれるのかがよくわかります.

底辺Game Audio Programmerとしては日々ミドルウェアに感謝をしながら, 顧客により良いGame Audioの体験を提供していきたい処です.