あたかもサウンドの開発が、簡単そうに思われているようですが、一度調べてみてはどうでしょうか?
少し検索するだけでも、色々な祖堅さんのインタビュー記事が見つかりますよ。
祖堅さん含めサウンドチームが、如何に複雑かつ高難度の仕事をされているか、良くわかります。
ドライバー1個変えるだけでも、どれだけの労力とコストが掛かるのやら、私には想像も出来ません。
無理なもんは無理なんですから、理解してくださいよ。
Printable View
プロなんだから、高度な仕事してるとかどうでもいいし
そのプロの立場でNoの返答が有ったことも、承知しています。
だからといってプレイヤーとしての自分の要望は変わりません。
64bitやDX11クライアントが別クライアントになるって話ですし、
ある意味では今は要望の主張しどころだと思いますし。
もちろんプレイヤーなんてもともと開発の選択の結果を受けるしかない上に
いくら要望してもただの数百万分の一の重さしかない立場ですから
聞き入れられなくても当然の認識はしています。
それにPC用のクライアントで負荷を問題にされたら、
その負荷はPC側でどうにかするからプログラム側も対応してくれって反応は
PCゲームの特徴を考えたら普通に起こりえる反応だと思いますけどね。
あとサウンド処理が簡単だなんて一言も書いてません。
調整が必要になるような精度で動いていないのでは?と書いただけです。
なんかこの手のスレッドに必ず湧く、開発の代弁者みたいな人がいるのが不思議。
まぁ、Microsoftの仕様では仕方ないですね。
ただ、Microsoftの方にスクエニを通じて仕様変更リクエストを送るくらいの事は当然、既にやっているんじゃないかなぁ。
で、多分その返事が「仕様」だったんでしょうけどねぇ…。
この件に限らず、最近開発の返事が少ないですよね。
ユーザーとの対話を重視するっていう吉Pだって、PLLの話以外でてこないし。
もっとまめにフォーラムに顔出してほしいなぁ。
メディアにばっかりいい顔するんじゃなくて、たまにはホームにも顔出してほしい。
フォーラムは不満爆発状態だから、顔出しにくいのも分かるけど、その辺説明するのも責任者の仕事でしょ?
どうも固有名詞無しで話が進んでいるので、具体的に何が使われているか調べてきたので載せますね。
サウンドプログラミングには詳しくないので間違っている点があったらバシバシ指摘してくださいませ。
まず、「FFXIVの音声はXAudio2というドライバを使用しています」との発言があります。
では、このXAudio2とは何者かというと、「XAudio2 は、Microsoft Windows および Xbox 360 向けの低レベルのクロスプラットフォーム オーディオ API です」とのこと。
もっとも、XAudio2はいわゆる「オーディオドライバ」とはレイヤが違いまして、XAudio2とDirectSoundやWASAPIとの関係の図を見ると、DSやWASAPIとDeveloper(=FF14)の間ですね。で、「XAudio2を用いたサウンドは、Windows XPではDirectSoundが、Vista以降ではWASAPIが使われる」そうです。
一般的な音楽プレイヤーはMMEドライバを使いますから、用いているドライバは異なっています。
このMMEドライバですと、遅延が0.3~0.5秒とかあるので、ちょっとゲームでは使えませんね…。(この遅延はPCの性能は関係ない)(そもそもこのAPIはWindows3.1からあるAPIなので、全てのPCは超高性能PCってことになる)なお、一方のDirectSoundやWASAPIは0.1秒を切ります。
(つづく)
さて、XAudio2はDirectSoundやWASAPIのすぐ上のレイヤになるわけですが、間に入って何をしているかというと、サウンドにフィルタを掛けたり、複数のサウンドを同時に再生するようにしたり、サラウンドサウンドを支援してくれたりするそうです。
要するに、「スクウェア・エニックス祖堅正慶スペシャルインタビューNo.1」の「ゲームの場合は、まずその鳥のモノラルの音源をリアルタイムに飛んでいる鳥のモデルの中のポインターに入れて、そして自分が今画面上で見ているところをマイクポジションにして、座標的な相対値を見ながら360度ぐるぐる回るものに合わせてパンとボリュームをリアルタイムに更新していくっていう仕組みを作る」というのはXAudio2を使って作られているんですね。
というわけで、XAudio2を用いると、FF14が用いる多彩なサウンド機能を実現しつつ低遅延が実現できるし、音楽プレイヤーが使っているMMEドライバを用いると、機能は少ない上に、殴ってから音が出るまでに0.5秒遅れる残念環境になってしまうということになります。
ここまでの流れからすると、このスレッドで挙げられている数々の問題の犯人はXAudio2で、いいところもあるし悪いところもあってしょうがないにゃあ…、という話になるかに思われたのですが、ヘッドホンとデバイスの変更の処理というサンプルがあり、XAudio2でもデバイス変更できるんじゃね…?という謎を残しつつ本記事を終わります。
先にも書きましたが今回の話のサウンドドライバとデバイスドライバを完全に混同されていると思います。
このサウンドドライバはデバイスの方ではなくゲーム側に組み込まれているもので普段私たちがデバイスを
交換した時にインストールするデバイスドライバとは全く別物です。
FF14のサウンドシステムはこのサウンドドライバを使うことを前提に設計されているはずです。
それを入れ替えるとなると1からサウンドシステムを作りなおす事になります。
サウンドドライバによってできることできない事などが違いますので調整なしでドライバだけ
入れ替えるのはありえないと思います。
それによって得られるメリットが出力先を変更できるだけでは全く割にあわないと思います。
おそらくPC側の性能でどうにかなるってレベルの話ではないと思います。
遅延とかはドライバ等の設計の問題でPCの性能とは無関係に発生するものが多々あります。
下でも書かれていますがどんな高性能PCにしても関係なく発生してしまうと思います。
FF14で使っているサウンドドライバがシステムデフォルト以外に出力する事ができないってことでいいのかな?
そしてサウンドドライバを変えると改修規模が大きくなるし、サウンドドライバは内製でないので手が出ないと。
自分にとっては内部の苦労がわからないので、要望としては割にあうのです。
もちろん内部の苦労が判る人が判断して却下することに異論は有りません。
でも要望としての想いは消えません。
何かのついでに変わる可能性に期待して声を出し続けるだけです。
要望なんて通らなくて当たり前なんですから。
ソケンさんのTwitterではデバイス変更に柔軟なドライバを使うと負荷が厳しいと言っていると読めるので、
その点でPC側の性能改善でどうなの?という話です。
XAudio2の解説を見るに出力デバイスは選べるようです。
XAudio2では、サウンドにエフェクトを掛け、3D上で配置し、デバイスに出力するという流れを順につないで処理させるのですが、
それまでのデバイスが取り外された場合には改めて処理をつなぎ直さないといけません。
逆に言えば、デバイスが取り外されたのを認識して、再び繋ぎ直せばいいのですが、
なぜできないのかは私にはわかりません。
はい。Quote:
そしてサウンドドライバを変えると改修規模が大きくなるし、サウンドドライバは内製でないので手が出ないと。
「サウンドドライバを変える」=XAudio2がやってくれているフィルタリング・サブミキシング・圧縮オーディオのサポート・サラウンドサポートなどを
全て自力で実装する事になるので大変そう。
「柔軟なドライバ」=「MMEドライバ」ってWindows 3.1からあるんですが、Quote:
ソケンさんのTwitterではデバイス変更に柔軟なドライバを使うと負荷が厳しいと言っていると読めるので、
その点でPC側の性能改善でどうなの?という話です。
20年経った今でも「負荷」と言われるあたり、PCの性能では変わらないかと。
推測するに「待つ」という処理があって、そこがネックになってるんじゃないかな。
変えるならVista以降で提供されている低遅延APIであるWASAPIを用いたほうがよさそう。
難易度・コストを度外視すれば、こちらならデバイス取り外しにも対応できる…というか取り外しを検出して
新しいデバイスを探してそちらに繋ぎ直すわけですが、まぁ可能になると思います。
しかし、これはXAudio2でもできるはずなんですよね。
そもそも出力デバイスが全くないと強制終了してしまうあたり、単にエラー処理してないだけじゃないかという疑惑が拭えないんですが。
Win3.1時代ということでうウェイト方面とかの無駄があるんだろうか?というのは理解できました。
お話から想像するに、
・デバイス見失って落ちるらしいのは改善の可能性無くはない。
・リアルタイムに変更して反映されるのは商売的に考えて期待するだけ無駄に近い。
・システムデフォルト以外に決め打ちは可能性なくはない。
こんな感じかしら。
シロウトに解説ありがとうございました。
気長に待つことにします。