2008年12月15日月曜日

W:ETでALSAが使える!

OSを選ばず動作するマルチプラットフォームかつフリーなFPSゲーム
Wolfenstein: Enemy Territory (通称W:ET、ET)についての記事です。




公開されたのが5年前にもかかわらず国内サーバーも常時立っており
人気FPSゲームといっても過言ではないでしょう。
要求スペックが低く軽いが本格的。実際やってみるとかなり楽しい!
Windows、Linuxで動作しフリーです。未体験の方はぜひ試してみてください。

ただ、ALSAに対応しておらずLinux上で動かそうとするとサウンドデバイスを
占有され、他の音声ソフトから音がでなくなる問題があり困っていました。

debian-wikiを流し読みしてると、たまたまソリューションを発見。
下のサイトで公開されているet-sdl-soundを使うことで解決できます。

et-sdl-sound
http://nullkey.ath.cx/~stuff/et-sdl-sound/



et-sdl-soundでET起動



実際にプレイしてる場面のスクリーンショットです。
Xfmediaで音声ファイルを再生しながらETができるう!
peercastで他のゲーム配信も同時に視聴してたりもします。

これまで音楽を聴きながらETすることはなかったのだけど、
やってみると足音等の小さい音が聞こえ辛くなって逆に耳が塞がれた気分になりました。
ともあれALSA経由で音が出る!リスポン待ちの空き時間を潰せて楽しいです。


et-sdl-soundの使い方

1. 配布サイトからet-sdl-sound.gzを頂いてきます

2. 解凍して実行できるようにします

$ gzip -d et-sdl-sound.gz
$ ls -l
-rw-r--r-- 1 user user 117995 Dec 15 00:00 et-sdl-sound
$ chmod 755 et-sdl-sound
$ ls -l
-rwxr-xr-x 1 user user 117995 Dec 15 00:00 et-sdl-sound

3. 実行します

$ ./et-sdl-sound


et-sdl-soundの詳細その他

et-sdl-soundの中身はシェルスクリプトです。
/tmp以下にALSAを使えるように改造したlibsdl.soを展開して
LD_PRELOADに指定した上でETを実行します。

/opt、/usr以下をfindコマンドを使ってETの実行ファイル(et.x86)を
探して実行します。
なので、変な場所にETをインストールしてるとfindに時間がかかり、起動が遅くなります。

時間がかかりすぎる場合はet-sdl-soundを編集して起動方法を変えます。
1. 26行目のコメントアウトを解除しETのpathを直接指定
2. 37行目のfind設定を"no"に変更

例えば/usr/local/package/etにETをインストールしている場合、
編集したあとのet-sdl-soundの該当部分は以下のようになります。

# You can set this in GAME_PATH environment variable
GAME_PATH="/usr/local/package/et"
...
# Use 'find' if can't locate the game or libSDL otherwise
USE_FIND="no"


ソースコードも配布されています。libsdlのヘッダーがあればmakeできます。


環境

OS: Linux
debian-lenny(i386)
et-2.60b