藤本健のDigital Audio Laboratory
第909回
スマホゲームの音ズレを減らす開発ツール「SonicSYNC」とは
2021年9月6日 11:40
iPhoneやAndroidのスマホにおいて、音のレイテンシー(遅延)をいかに抑制するのかは楽器アプリはもちろん、ゲームにおいても非常に重要なテーマになっている。そんな中、レイテンシーを限りなく小さくする技術「SonicSYNC」が、日本のゲーム開発用ツールメーカーであるCRI・ミドルウェアからリリースされた。
SonicSYNCそのものは、ゲームメーカーが利用する業務用のシステムADX2に含まれる新機能という位置づけなのだが、個人のゲーム開発者向けに提供されているADX2 LE(無料版)にも、業務用ADX2と同じ機能が実装されているという。
SonicSYNCとはどんなシステムで、どのようにして低遅延を実現させているのか、CRI・ミドルウェアの取締役CTOでエンターテインメント事業本部長 兼 エンターテインメント事業本部 研究開発部部長の櫻井敦史氏、執行役員の横山裕一氏、そしてクライアントエンジニアの藤田優治氏の3名に、オンラインで話を伺った。
スマホゲームの音ズレ問題。“音の準備”部分にメスを入れる
――スマホで音のレイテンシーを大きく縮める「SonicSYNC」。開発の理由を教えてください。
櫻井氏(以下敬称略):従来のスマホではどうしても音声の遅延が発生してしまい、大きいものだと30フレームくらい遅れてしまう状況でした。とくにAndroidだと機種によるバラツキが大きく、ゲーム開発において大きな課題となっていました。実際、iPhone 12 Proで測定した結果が、下記の表です。
櫻井:プログラムでかなり工夫をして、遅延をできる限り小さくした状態で109ms。通常のプログラムでは234msという結果となり、これだけ遅延が大きいと、どうしても違和感を感じてしまいます。そこで、このレイテンシーをいかに縮めるか? ということでSonicSYNCの開発が始まりました。SonicSYNCを使うことで、53msというところまで短縮することができました。SonicSYNCを使って制作したゲームであれば、違和感なくゲームを楽しむことが可能になりました。
横山:アコースティックピアノでのレイテンシーが40~60msといわれていますので、それと同等のところまで、遅延を抑制できた格好です。
――あれ? iOSで、そんなにレイテンシーがありますか? シンセサイザアプリなど、iOSの楽器アプリでは30msもないと認識していましたが、通常で100msとか、200msもあるのでしょうか?
櫻井:楽器アプリとゲームアプリとでは、大きな違いがあります。確かに楽器アプリの場合は、1つの音を出すことにだけ集中できますから、最小のレイテンシーで鳴らすことが可能です。しかしゲームの場合、さまざまな音を同時に出して、それぞれにエフェクトをかけ、さらにミキサーでまとめていく必要があります。そうした処理を同時に行なうため、楽器アプリのようにシンプルにはいかないという事情があるのです。
藤田:普通にプログラムを作ると、iPhoneの場合で200ms以上になってしまいます。Unityにも遅延を短縮する機能がありまして、それを利用することでなんとか109msという数値を実現していたのですが、バッファリングするサイズによって遅延も変わりますし、機種によっては音切れのリスクもありますから、簡単にはいかないのです。
――なるほど。確かにゲームだと、BGMも鳴っているし、シチュエーションによって効果音も加わるし、アクションに応じて音声も出るので、楽器アプリとは違うわけですね。とはいえ、100msとか200msものレイテンシーがあると、スマホゲームは厳しいということになりませんか?
櫻井:とくに“音ゲー”においては、致命的な数字です。ですから、いろいろな工夫で、ごまかしているのです。もともとスマホは物理ボタンではありませんし、レイテンシーが気になりにくいという面もあります。というのも、物理ボタンだと押した瞬間から音が出るまでをレイテンシーと感じるのに対し、スマホの場合、スクリーンから指を離した瞬間からの時間をレイテンシーと認知する傾向があるので、それをうまく利用すると、あまり気にならなかったりもするわけです。
藤田:ユーザーが最も気になるのは“タップ音”なので、タップ音だけはミックスせずに直接音を出すというのも、ごまかしの一つのテクニックです。
――一方で、iPhoneを使うかAndroidを使うかなどによっても、レイテンシーは大きく違いますよね?
横山:そうですね。iPhoneでもいろいろ違いますが、Androidだとさらに端末間のバラつきは大きいです。遅い機種は非常に遅いのですが、Pixel 3などはiPhoneよりもレイテンシーが小さいのです。SonicSYNCは、ハードウェア固有にレイテンシーを小さくすることはできませんが、それ以外をほぼゼロに近いところまで縮める事ができるのが特徴です。
――改めて、音ゲーにおけるレイテンシーがなぜ生じるのかを教えてください。
櫻井:スマホにおける遅延は、ユーザーが画面をタップしてから音が出るまでの間に3段階あります。まずは、タップにおける物理的遅延。タップしたことをシステムが認知するまでの時間ですね。これはどうにも変えることはできません。
2番目が「音の準備」のための遅延です。ゲームでは音楽、SE、ボイスなど様々な音を鳴らしています。データは圧縮されていますし、エフェクトもかけたりで、処理がとにかく多いのです。これを安定的に動作させるためには作った音はいったんバッファに溜めておくというのが一般的な方法でして、ここで大きな遅延が発生します。
そして3番目は、先ほどの楽器アプリのときに話題になった音の出口における遅延です。サウンドドライバ部における遅延ですね。これはハードウェアに依存する部分ですから、縮めることが困難です。そのためSonicSYNCでターゲットとしているのは、2番目の音の準備の部分で、ここを限りなくゼロにするということをしているのです。
――どのようにして遅延ゼロを実現しているのですか?
櫻井:複数の音声処理を短時間で終わるように細かく分割し、音が必要になった時に、その場で準備してすぐに鳴らすということを行なっています。
櫻井:もう少し技術的にいうと、最終的に音を出すためのシステムであるオーディオドライバは定期的に音データを取りに来るのに対し、ゲームのシステム側はその周期に合わせてデータを受け渡せるのがベストですが、そう簡単にはいきません。そこで動作の周期の差をバッファリングで吸収するという方法を採りました。要するに、事前にできることはなるべく早めに行っていくといった積み重ねでここを限りなくゼロにするという地道なことをしています。
――結果的には、ゲーム特有の「音の準備」部分をなくしたことで、レイテンシーの問題を解決できたというわけですね。
横山:今回、SonicSYNCをタイトーの音楽ゲームアプリ「ディズニー ミュージックパレード」で採用いただきましたが、最初に触ったときはボタンを押す前に音が鳴ってるような感覚すらありましたからね。効果は抜群だったと思います。
櫻井:もう一つ大きいのが、Bluetoothのワイヤレスイヤフォンを使った場合です。Bluetoothイヤフォンは仕組み上、50ms以上のレイテンシーがあるため、音ゲーにおいてワイヤレスイヤフォンは音の遅れが大きすぎて使えない、というのがこれまでの常識でした。
しかし、SonicSYNCを使うことで、ベースとなる音のレイテンシーを縮めることができたため、Bluetoothイヤフォンでもそこそこ使えるようになりました。このことは多くの方に喜んでいただけるのではないか、と思っています。
――SonicSYNCを使うメリットというのはよくわかりましたが、同機能はゲームソフトメーカーがCRI・ミドルウェアとADX2の使用許諾契約を結んで、初めて使えるというものですよね?
櫻井:基本的にはその通りです。しかし、学生や個人のゲームプログラマが増えているなか、そうした方々でも無料で利用できるADX2 LEというミドルウェアをリリースしており、この中にもSonicSYNCを搭載しております。
コンテンツの配信が自分自身であること、コンテンツの売り上げが1,000万円以内であることなど、いくつかの条件はありますが、個人の方であればほとんどの方が無料で利用できます。ゲームメーカー勤務の方でも、個人で同人ゲーム等を出されている方も多いので、そうした方も含めて利用可能です。
――機能的、性能的な制限はありますか?
櫻井:SonicSYNCについては、ADX2もADX2 LEも同じものを搭載していますから、何ら変わりなく使うことができます。Unityで開発している場合、非常に簡単に使えますから、ぜひ試してみていただきたいですね。基本的にはメールアドレスを登録するだけで、入手することができますので。
横山:ゲーム業界への志を持った学生や、すでにゲーム業界に入った方でも、個人用ツールとしてSonicSYNCというか、ADX2を使ってもらうことで、気持ちいい音が簡単にできるツールであることを理解してもらいたいという啓蒙活動として無料で出しています。いいゲームサウンドにするにはCRI・ミドルウェアのツールを使えばいいということを多くの人に理解していただければと無料開放しているので、ぜひ、多くの方に試していただきたいですね。