Ubuntu 12.10でL4D2をする (Wine)

SteamのLinux Betaが出たらしいです。僕は2週間くらい前にベータのアンケートみたいなやつに答えたのですが、特に何も来てなくて試せていません。試せていませんが、がんばってほしいですね。試せていませんが。
ただ僕は、Ubuntu 12.04の頃からWine経由でL4D2をやっていて、Wineってなんかめんどうなイメージがあったのですが(APIがないと言われるたびに実装していくみたいな…)、L4D2は素直に動いたので、超簡単な方法を書いておきます。

グラボなんかの環境にも依存してそうなので環境によっては動かないかもしれません。うちのグラボはGTX 260でドライバはnvidia-currentを使っています。デスクトップはgnome-classicです。

Wineのインストール
sudo apt-get install wine
Steamのインストール
winetricks steam

Steamのインストーラーが起動するのでインストールします。

起動後にSteamのアカウント情報を入力すると、メールで認証コードを送ったので入力しろと言われるので、メールで受け取った認証コードを入れるとログインできます。

L4D2のインストール

SteamのライブラリからL4D2を選んでインストールします。
http://943caf378f4d1129752df2954803f96c.gazou.me/large.png
持っていない人はストアで買いましょう。(買ったものの動かないことがあるかもしれません。動かなかったらWindowsでやりましょう)

これで普通に起動するので、とりあえずシングルプレイヤーモードで入ってビデオやコントローラーの設定をするといいと思います。CAPSLOCKをCTRLに変えててもWineだと変わってなかったりします。
http://81f4744f23b5f64cd49d49d4eeb63ac1.gazou.me/large.png

Steam Cloudで設定が同期されるようになっていると、他のパソコンの設定を変えてしまうので注意してください。多分最初に起動したときに同期するか聞かれます。

便利化

ニワカですが便利化します。

起動時のムービーを流さないようにする

Steamのライブラリ→L4D2→プロパティ→起動設定で、-novid を入れておくと起動時のムービー流れなくなります。

steam://のURLを開く

xdg-openをいじればsteam://を開けそうですが、ウェブ側から開けるとちょっと怖い感じするので僕はコマンドにしています。

$HOME/bin/steam-open に

#!/bin/sh
env WINEPREFIX="$HOME/.local/share/wineprefixes/steam" wine "C:\\windows\\command\\start.exe" "$@"

のようなスクリプトを置いて$HOME/binにPATHを通しておくと、たとえば、nico-opなら

$ steam-open steam://connect/l4d2.forjp.net:27032 

で接続できます。

よくいるサーバーがある場合はサーバーごとにコマンドを作ったり、ショートカットをデスクトップ等に置くと便利かもしれません。

(winetricksから入れると$HOME/.local/share/wineprefixes/steamに入るっぽいです。場所が違う場合は、ウィンドウマネージャーのメニューにWine/Programs/Steamが入っていると思うのでプロパティを見ましょう。)

不具合

重いローカルサーバーや人数が多いサーバーに入って負荷がかかった時に、

  • 入った瞬間にサウンドループが起こる(大体は5秒くらいで直るけどそのまま固まることもある)
  • 一部の音(特殊の声だけとか自分の武器の音だけとか)が聞こえなくなる
  • wなどの移動キー入力が入ったままになって解除できなくなる

などの不具合が出ることがあります。Steamを再起動しないと直らないので、操作できる場合はいったん落としましょう。全画面で固まっている場合は、ALT+TABで抜けて、xkillコマンドでL4D2を落とすか、マジで固まっててどうもなくなったらCTRL+ALT+DELなどでウィンドウマネージャーからログアウトして、入りなおしてからkillコマンドで止めます。

他のゲーム

HL2は起動したけど、移動キー入力が入ったままになって解除できなくなる不具合が頻発して無理だった。
TF2は起動時のムービーで固まる。CoD2は起動できなかった。Valve以外のゲームは無理っぽい感じする。

L4D2だけは稀に不具合に出るだけで結構ちゃんと動いています。

なぜLinuxなのか!!

最近パソコンが1台しかなくて、それで時間がかかる計算の処理をLinux側で動かしていることがあるので(Windows7デュアルブートになってる)、その合間にゲームをするためにLinuxで動かしています。

この場合、更にcgroupの仕組みを使うと、計算用プロセスとゲーム用プロセスで使うCPUを分けれるので、ゲームが重くならない程度のリソースを割り当ててできるだけ計算に回すみたいなことができて便利です。