»
DirectX 9までの3Dゲームタイトルがサポートしていた,3DサウンドAPIを利用できない――Windows Vistaにおけるこの仕様変更に対して,3DサウンドAPIを復活させるというアプローチで開発されてきた「ALchemy」が,ついに正式リリースを迎えた。先に特集「Vista買うのはまだ早い!」で,Windows Vistaのサウンド周りを解説した米田 聡氏の目に,ALchemyの可能性はどう映るだろうか。
 |
正式版ALchemyのロゴ |
北米時間2007年6月12日,Creative Technology(以下Creative)は,「Project ALchemy」として進められてきた,Windows VistaでDirectSound 3DやEAX/EAX ADVANCED HD(以下EAX)を利用するためのツールを,「Creative ALchemy X-Fi Edition」(以下ALchemy)として正式にリリースした。
Windows Vistaの仕様変更で使えなくなった
既存の3Dサラウンドサウンドを救済すべく誕生
 |
「Enemy Territory: Quake Wars」(パブリックβ)より。FPSでは,視覚情報だけでなく,銃声や足音などのサウンド情報も,生き残るために重要だ |
なぜそんなツールが必要かというと,Windows Vistaでは,Windows XP以前にあった「DirectSound HAL」(HAL:Hardware Abstruction Layer,ハードウェア抽象化層)が廃止され,DirectSound 3Dや(DirectSound 3Dの拡張として機能する)EAXのハードウェアアクセラレーションが利用できなくなってしまったからだ(関連記事)。本稿執筆時点である2007年6月下旬時点では,Windows Vistaにおいて“普通に”ゲームサウンドを鳴らそうとすると,3Dサラウンドサウンドは有効にならず,2chステレオでのソフトウェアエミュレートになってしまう。
これはゲーマー,とくに3Dゲーマーにとってはトンデモない事態だ。3Dサラウンドサウンドは,ただ雰囲気を盛り上げるだけの存在ではなく,3D世界において敵(など)がどこにいるかを把握するための重要な情報源。FPSなどの対戦ゲームにおいては,Windows XP以前のOSを利用している人達に対して,圧倒的に不利な状況におかれてしまい,OSの差が勝敗を分けることにもなりかねないからである。
 |
Microsoft版dsound.dllは,システムフォルダの中に置かれている |
ALchemyは,そんなWindows VistaにおいてDirectSound 3DやEAXの設定を復活させるため,同OSのリリースに前後してアナウンスされ,開発が進められてきたツールの一種だ。
その働きは意外に単純だが,その前に前提となる予備知識を一つ。Windowsでは,汎用性の高いプログラムを「ダイナミックリンクライブラリ」(Dynamic Link Library,以下DLL)として保存しておき,アプリケーションが必要に応じて利用できる仕組みが用意されている。
そして,DLLのなかでDirectSound/DirectSound 3D周りを担当するのが,DirectXの一部「dsound.dll」である。ゲームの実行ファイル(やゲームサウンドを担当するプログラム)は,Windowsのシステムフォルダに置かれた,このdsound.dllをメモリに読み出すことで,DirectSound/DirectSound 3Dを利用しているのだ。
これに対してALchemyは,ゲームのインストールフォルダに(Microsoft純正DLLとファイル名がまったく同じ)“ALchemy版”dsound.dllを上書きコピーする。DLLには「実行ファイルが置かれたフォルダに読み出し対象となるDLLがある場合,Windowsのシステムフォルダにあるものよりも優先的に読み出される」という決まりがあるので,ALchemyがゲームのインストールフォルダに潜り込ませたALchemy版dsound.dllが,Microsoft純正dsound.dllの代わりに読み出される仕掛けだ。
このALchemy版dsound.dllは,ゲームがDirectSoundへアクセスしようとすると,それをDirectSound 3Dと同等以上の機能を持つオープンな3DサラウンドサウンドAPI,「OpenAL」の命令に翻訳する働きを持つ。OpenALは,Windows Vistaにおいてもサポートされているので,サウンドカード(のサウンドチップ)を“OpenALアクセラレータ”として利用することで,DirectSound 3DやEAXはOpenAL命令としてWindows Vista上でも利用可能になるというわけである。このあたりは図にまとめてみたので,ぜひ参照してほしい。
●ALchemyが動作する仕組み

この手法そのものは特定のハードウェアに依存しないため,OpenALをサポートしたサウンドカード(=サウンドチップ)なら利用できるはずだが,少なくとも正式公開第1弾となっている1.00.04版ALchemyでは,正式名称にある“X-Fi Edition”からも想像がつくとおり,「X-Fi Xtreme Fidelity」チップを搭載した「Sound Blaster X-Fi」シリーズ――つまり,「Sound Blaster X-Fi Xtreme Audio」以外。本稿では以下,この点を自明のものとして扱う――のみのサポートとなる。そのほかのハードウェアは,Creative製品でも今のところ利用不可能だ。
利用方法そのものは難しくないが
“使える”かどうかは話が別
 |
ALchemyのメインウインドウ |
ALchemyの導入自体に難しいところはない。Windows Vista上でSound Blaster X-Fiが利用できる状態になっていれば,あとは4Gamerの最新ドライバページからALchemyを入手して実行し,セットアップウイザードに従っていけば利用可能な状態になる。
ALchemyを利用するためには,“ゲームをALchemyに登録”する作業が必要になるが,ここでは「ALchemyの動作確認済みタイトルかどうか」で,方法が大きく異なる。
バージョン1.00.04版ALchemyでの動作が確認されているタイトルは,下に示したとおり。これはCreativeの日本法人であるクリエイティブメディアが配布している
PDFファイル(※クリックするとダウンロードが始まります)から抜粋したものだ。
ここで挙げたタイトルの場合,ALchemyによって自動認識され,メインメニュー左側に用意された「インストールされているゲーム」欄にタイトル名をリストアップされる。例えば対応タイトルの「Titan Quest」だと,ゲーム名を選択してダブルクリック,もしくは[>>]ボタンをクリックすると,右側の「ALchemy対応ゲーム」欄に移り,ALchemyが有効になる仕組みだ。
というわけで,簡単に3Dサラウンドサウンドを利用できそうなALchemyだが,動作確認済みリストに挙がっていない,大多数の場合はどうなのか。
結論からいうと,動作確認済みリストに入っていないタイトルでも,ALchemyを利用できる可能性は残されている。ただし,手動設定が必要になるので,手順を先に紹介しておこう。ALchemyのメインウインドウで[追加]ボタンを押すと,「ゲーム設定」ウインドウが開く。下のウインドウを見てほしい。
 |
「ゲーム設定」ウインドウ |
 |
ショートカットのプロパティでゲームのインストール先ディレクトリを調べる。「リンク先」にある,「*.exe」の前までが「ゲームパス」だ |
「ゲームタイトル」はメインウインドウに表示されるゲーム名なので,任意の名称を入力。次が重要だが,先に図で示した「dsound.dll」の場所を指定するのが「場所」である。「場所」の指定方法は「レジストリパス」か「ゲームパス」が用意されており,「レジストリパス」は,レジストリに書き込まれた「ゲームのインストール先情報が書き込まれたキーの場所」を指定し,一方「ゲームパス」では「ゲームがインストールされているフォルダの場所」を指定する。
いずれも,結局は「ゲームがどこにインストールされているか」をALchemyに知らせるためのもので,「レジストリパス」と「ゲームパス」のどちらを選択しても,(正しく指定される限りにおいて)動作上の違いはない。CreativeのALchemy開発チームや友人などにゲームの設定を知らせたりするのなら「レジストリパス」のほうが便利だが,基本的にはインストール先のフォルダ――例えば「c:\Program Files\ubisoft\Sprinter Cell\」など――を指定する「ゲームパス」のほうがラクだ。
なお,「ゲームパス」=ゲームのインストール先は,ゲームを起動するショートカットのプロパティを開くと簡単に確認できる。
 |
ゲーム設定のウインドウから,いろいろ試行錯誤できるようになっている |
このほかゲームによっては,DirectSound関連のDLLが,ゲームをインストールしたフォルダよりも下の階層にあるサブフォルダに格納されている場合がある。これはユーザーが自分でチェックするほかないが,そのようなゲームの場合は,「ゲーム設定」にある「インストールするサブフォルダ」にチェックを入れ,サブフォルダの場所も入力せねばならない。
正直,ハードルの高さを感じる人もいるだろうが,これに関してはあきらめるほかない。ただし,サブフォルダの場所を指定し,さらに「ルートとサブフォルダの両方にインストール」を選択した場合,ゲームのインストールフォルダと,設定したサブフォルダの両方に対してALchemy版dsound.dllがインストールされ,動作する確率がより高くなることは,憶えておいても損はないだろう。
このほか,「ゲーム設定」ウインドウからは,ALchemyに関する細かな設定項目として,バッファやレイテンシ,再生する最大ボイス数に関する指定が行える。基本的にはデフォルトのままにしておいて問題ないが,「動作はするが,安定しない」といったときには,調整すると安定する場合があるようだ。また,DirectMusicというAPI関連で不具合が生じる際には無効化できるようにもなっている。
動作確認リストにないゲームで
ALchemyの利用を試みる
ここからは実例として,動作確認リストにないタイトルということで,筆者と担当編集者手持ちのものから,以下のとおりいくつか試してみた。結果と,設定例を順に紹介していきたい。
Need for Speed: Carbon
ALchemy Project公式サイトでは「Unverified」(未確認)となっているが,3Dサウンドを有効化できた。設定はプロジェクトサイトに掲載されているとおりで,下に示したアドレスを,「レジストリパス」に登録すればOKだ。
なお,最新のWindows Vista対応パッチ1.3をインストールしておかないと,そもそもゲームがWindows Vistaで起動しないことには要注意。
レジストリパス:HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Need for Speed Carbon\Install Dir
Tom Clancy’s Splinter Cell: Chaos Theory
Need for Speed: Carbonと同じく,ALchemy Project公式サイトで「Unverified」になっているが,やはりプロジェクトサイトにある設定のとおりに「レジストリパス」へ登録すれば利用可能になる。
レジストリパス:HKEY_LOCAL_MACHINE\SOFTWARE\Ubisoft\Tom Clancy’s Splinter Cell Chaos Theory\InstallDir
インストールするサブディレクトリ:Versus\System
Tom Clancy’s Rainbow Six Vegas
「ゲームパス」設定だけでなく,ALchemy Project公式サイトにある「レジストリパス」を入力してみたが動作せず。だが,設定を若干変更することで動作させることができた。その手順は以下のとおりとなる。
(1)dsound.dllのコピー先を調べる
ALchemyが動作するかどうかは,ALchemy版dsound.dllを“送り込む”フォルダがカギになる。ゲームの実行ファイルがあるフォルダにdsound.dllをコピーできなければ絶対に動作しないのだ。
そこで,Tom Clancy’s Rainbow Six Vegasのインストールフォルダ以下を見てみると,実行ファイル「R6Vegas_Game.exe」は,「Binaries」というサブフォルダにあることが分かったので,「ゲーム設定」のサブフォルダに「Binaries」を追加した。
(2)ログファイル「dsoundlog.txt」を調べる
(1)を行っても動作しなかったのだが,ALchemy版dsound.dllは,正常に動作しなかったときにログファイル「dsoundlog.txt」を残す仕様になっており,エラーが記録されるので,これを見ると何かが分かるかもしれない(今回は,バッファ関連のエラーが生じていることが分かったのみで,「ゲーム設定」からバッファを10に増やしても効果はなかったが)。
(3)DirectMusicを無効化する
いずれにせよ,何らかのエラーが生じていることは分かったので,「ゲーム設定」からDirectMusicを無効化すると正常に動作した。DirectMusicがエラーを発生させていたようだ。
 |
 |
左はdsoundlog.txtを調べているところ。右はDirectMusic無効化のチェック |
レジストリパス:RegPath=HKEY_LOCAL_MACHINE\SOFTWARE\Ubisoft\Rainbow Six Vegas\InstallDir
Lara Croft Tomb Raider: Anniversary
4Gamerでミラーしている体験版を利用したが,Lara Croft Tomb Raider: Anniversaryは,ALchemyを有効化すると,ゲームが起動しなくなる。ALchemyの効果あるなしを語る以前の問題だった。
もう少し調べてみると,ALchemy版dsound.dllがゲームディレクトリに存在していると起動不能に陥るらしく,dsoundlog.txtのログすら残らない。設定を変えるなどしてみたが,まったく効果がなかったため諦めた。このようなソフトもあるということだろう。
現時点の完成度はまだまだのALchemy
今後に期待だが,主流はXAudioへ移行か?
Tom Clancy’s Rainbow Six Vegasのように,試行錯誤でALchemyが利用できるようになるソフトもあれば,Lara Croft Tomb Raider: Anniversaryのように,(少なくとも筆者が試した限りでは)動作不能になるソフトもある。ALchemy版dsound.dllが存在するだけで停止してしまう後者のようなケースでは難しそうだが,とりあえずゲームが動作し,ログ(=dsoundlog.txt)さえ記録されば,ALchemyを動作させられる確率は低くなさそうだ。DirectMusicを無効にしてみる,バッファのサイズを変えてみるなど,いろいろ試してみる価値はある。
また,これまで紹介したゲームはすべてDirectSound 3DあるいはEAX対応になるが,Windows Vistaの仕様上,OpenALを採用しているゲームなら,ALchemyを使わなくても,Sound Blaster X-Fiからハードウェアアクセラレーション(≒3Dサラウンドサウンド出力)が可能だ。
 |
ゲームのreadme.txtに,OpenALを利用していると書かれている場合もある。画像はArmed Assaultの例 |
実は今回,上記のタイトル以外にも「Battlefield 2」「Stubbs the Zombie in Rebel Without a Pulse」「DIRT: Colin McRae Off-Road」「Armed Assault」(※後者2タイトルについては体験版)を試しているのだが,これらはOpenAL対応で,ALchemyを用いることなく,Sound Blaster X-Fiから3Dサラウンドサウンド出力を行えた。最近のゲームでは,意外に対応例が多くなってきているのかもしれない。
OpenAL対応を前面に押し出していないソフトも多いため,サウンドにOpenALが使用されているかどうか分からず,なおかつ3Dサウンドが有効になっているか実感できない場合もあるだろう。OpenALが使用されているソフトでは,当然ながらALchemy版dsound.dllが読み込まれないため,ログが残らない。「ゲームが正常動作していて,サウンドも出力されている。にもかかわらず,dsoundlog.txtが出力されない」場合は,OpenALが利用されている可能性が高いと判断してよさそうだ。
 |
サウンドAPIとしてOpenALを採用し,ALchemyを使わずともEAXを利用できたBattlefield 2 |
ALchemyについてまとめると,正式に動作確認されたゲームタイトルこそ少ないものの,試行錯誤すれば動作する可能性が低くないツールといえる。ただし,Microsoft純正DLLの代わりにALchemyのDLLを潜り込ませるという,やや強引な手法を使わざるを得ないだけに,今後もすべてのゲームに対応させるのは難しいだろう。
また,現状ではSoundBlaster X-Fiシリーズでしか使えないのも難点だ。「OpenAL 1.1をフルサポートするサウンドカードは,現時点でSound Blaster X-Fiシリーズくらいしかない」と断じてしまってもほとんど問題ないという現実があるため,同シリーズ用にしか無償提供せず,以前のサウンドカード製品用のバージョンは有償化するという方針そのものを,頭ごなしに否定はできないものの,それでも残念といえば残念である。
以上,ALchemyについて現状を確認してきたが,今後のPCゲームサウンド環境はどうなるのか,その展望を最後に紹介しておこう。
繰り返しになるが,MicrosoftはWindows VistaにDirectSound 3Dのサポートを組み込まなかった。DirectSound 3Dは事実上終了した規格といっていい。
ここで重要なのは,残されたDirectSoundそのものも,積極的に残ったわけではないということだ。あくまで互換性確保のためであって,Microsoftは,DirectSound/DirectSound 3Dに代わる,「XAudio」というAPIの標準化を進めている。
XAudioはPCおよび「Xbox 360」用のゲーム開発ツール「Microsoft XNA」ベースのAPIとして提供され,Xbox 360には一足先に実装されている。そのため,Windows VistaでXAudioが標準になれば,ゲームデベロッパはXbox360とPCの双方で同じサウンドAPIを利用可能になり,ゲーム開発の負担が減るというわけだ。
もっとも,XAudioは現行のWindows Vistaではサポートされておらず,この計画は現状,絵に描いた餅に過ぎない。Windows Vistaに投入されるのは次のバージョンに当たるXAudio2以降とされているから,Windows VistaのService PackもしくはDirectXのアップデートに組み込まれるものと思われるが,いつから利用できるようになるかはまだ分からない。
言い換えると,XAudio2が投入されるまで,PCゲームのサウンドAPIは3Dサラウンドサウンド機能をサポートしないDirectSoundのみという「空白期間」が続くことになる。その間,ゲームベンダーは「どうしたらいいのだ?」という状況で,先ほど示したOpenAL対応タイトルの増加は,OpenALが“空白期間の代替API”の第1候補に挙がった可能性を示唆しているといえそうだ。実際OpenALは,3Dグラフィックスと相性がよく,ゲームデベロッパからすると使いやすいAPIである。
 |
なんだかんだで,ALchemyを使うとDirectSound 3D/EAX対応ゲームでCMSS-3Dheadphoneが利用できるようになるのは大きい |
だが,OpenALも多くの問題を抱えていることはいうまでもない。先ほど述べたとおり,OpenAL 1.1をフルサポートできないサウンドカードが多いうえに,WindowsにおけるOpenAL普及の旗を振らねばならないCreativeも,最近はポータブルプレイヤーで忙しい様子。XAudio2のリリースが遅れに遅れている間に,ほとんどのゲームがOpenALへ移行し,事実上の次世代標準サウンドAPI化……というシナリオもあり得なくはないが,Creativeが積極的な働きかけをしているように見えない以上,そうなる可能性は低そうだ。
XAudio2がリリースされれば,欧米におけるXbox 360の普及率を考えても,デベロッパは一気にXAudio2の採用へ動くだろう。OpenALは,それまでをしのぐ術(すべ)として,今後もしばらくは使われ続けるはずで,その意味では「Windows VistaでOpenALを利用するためにSound Blaster X-Fiを用意すると,過去のゲーム資産でも3Dサウンドが使えるかも?」くらいに理解しておくのが,ALchemyに関しては無難なように思われる。