Cedega を利用する際のあれこれ

まー要するに。Cedega って使っていると結構あちこちで挙動が変だったりするけど、実はその多くは簡単に修正出来ちゃったりするので、そういった情報の日本語版をここで纏めておこうと思ったとか思わなかったとか。

更新履歴:
(9月 2 日:画面が真っ黒なままになる事に関する内容を、全面的に書き換え)
(9月 2 日:Europa Universalis II と、 Hearts of Iron 2 に関する話を更新)


Cedega 全般

ウィンドウマネージャーとの相性

2D のゲームの多くでは、画面の端にマウスカーソルを移動させる事でスクロールさせられる、という機能がありますが、一部の WM では、フルスクリーンで遊んでいる時に、これが上手く機能しない事があります。自分が確認した限りでは、右端と下端でのスクロールが全く機能しませんでした。RTS なんかでは、結構致命的です。

一応、設定ファイルで [x11drv] 以下にある "Managed" の項目をオフにすれば、スクロールは正常に動作するようになりますが、これだとキーボードが一切使えなくなってしまいます。言うまでもなく、これは RTS なんかでは致命的。駄目じゃん。

ひょっとしたら、WM の設定ファイルをきちんと書いてやれば、この不都合を回避出来るのかもしれませんが、自分は思い切って WM を別の物に変えてしまいました。一応、開発者もこの問題を認識しているので、将来には改善されるのかもしれませんが、取り敢えず現時点ではちょっと不便な一面もあるという事で。

なお、自分が試した限り、この症状が出るのは WindowMakerAfterStepKahakai あたり。自分が現在利用している Pekwm は大丈夫。他のメジャーな WM は試してないので不明。

ちなみに、この Pekwm だと、何故か Civilization 3 だけグラフィックが一切表示されないという不都合が。やはり Managed オプションをオフにすると大丈夫ですが、キーボードが利用出来ないので駄目。仕方がないので、Civ3 だけは全画面モードではなく、ウィンドウモードで起動するようにしています。うちのデスクトップは 1024x768 なので全画面と変わらないし、WM 側の設定で枠を表示しないようにしてるので、問題無し。

2D のゲームが重いんですけど?

2D のゲームで、特にアニメーションを多用するタイプのゲームは、マシンパワーが潤滑にあるのにも関わらず、かなり動作が重くなってしまう事があります。これは、Cedega 自身の問題ではなく、カラーモード(色深度)の違いが原因です。

普通の 2D ゲームは 16ビットカラーモードを利用していますが、多くの方は標準のデスクトップの色深度を 32ビットに設定しているか、Radeon 系なら 24ビットに固定されているでしょう。で、Cedega の内部でカラーモードを変換しつつ実行しているため、重くなるのです。つまり、デスクトップが 16ビットなら、ちゃんと軽快に動きます。

で、自分が調べた限り、実は X Window System ってのは、起動中に色深度を変更する手段が存在しないようでして。設定を変えて、X を再起動するしかないんですね。ただ、これも将来の Cedega が独立した X Session を利用するようになれば(面倒臭いので、これの解説はパス)解消されるかもしれませんが...。

ちなみに、起動後に startx コマンドで X を起動している人なら、わざわざ設定ファイルを書換えなくとも、別の色深度で再起動する事が出来ます。但し、xorg.conf (xfree な人は、XF86Config あたり)に各色深度の設定をきちんと書いてあれば、の話。あと、Radeon (の、ATI 純正ドライバ)は 24ビットしかサポートしていないので、何というか駄目です。

具体的には、一度 X を終了させて、以下のオプション付きで startx を実行すれば大丈夫です。startx の直後にあるハイフン(マイナス)二つは「必須」です。

$ startx -- -depth 16

xdm 経由の人も、似たような事が出来るって話を聞いた事がありますが、自分は全然 xdm を利用していないのでパス。

一部のゲームで時々、画面全体が切り替わった時に真っ黒なままになる。

(註:不確実な情報を含んでいたため、全面的に書き直しました)

正直に言うと、この件に関しては、不確実な部分が多いです。何がどう影響してこんな現象が起きているのかがハッキリしていませんし、ここで紹介している方法で確実に解決すると断言する事も出来ません。

とまれ、この現象は、例えばタイトルのメニューからデータロード画面への移行など、画面全体が書き換えられる場面で、新しい画面が表示されず、真っ黒なままになってしまう、というものです。一応、ショートカットを使って一度別のウィンドウに切り替えてから戻せば表示が正常に戻りますが(註:場合によっては、暫く間を置く必要がある)、ちょっと欝陶しいです。

この現象は、どうやらフルスクリーン時のみに発生するらしいため(少なくとも、発生の確率は非常に低い)、ウィンドウモードでゲームを起動するのも、有効な対処法です。ただ、タイトルバーやら枠やらでゲーム画面の一部が切れてしまうので、ウィンドウの装飾を無効にする必要がありますし、例えばムービーなど、部分的に低い解像度を利用している場面が画面全体に表示されないといった細かい欠点はあります。

では、フルスクリーンモードでは解決出来ないのかと言うと、ひょっとしたら解決出来ているのかもしれません。前述のように、まだ断言は出来ませんけど。

結論から言うと、少なくとも自分の経験では、ブラウザを起動したままゲームを遊ぼうとするとまず間違いなく駄目で、終了させるだけで大きな効果がありました。メモリが潤滑にあるので意外でしたが。とまれ、ブラウザ以外でも、不要なアプリは終了させておくのが無難でしょう。

それでも状況が改善されない場合、まずはオプションを見直してみると良いかもしれません。色々と試した限り、ATI のグラフィックカードを利用している人は ARB_VBO オプションをオンにしておくべきのようです。自分では確認出来ませんけど、nVidia な人も同様に NV_VAR がオンになっているかを確かめた方が良いかと。てか、これらはデフォルトでオンになっているので、下手にオプションを触っていないのなら大丈夫です。

自分はこの時点で(まず間違いなく)解決出来ているのですが、それでも駄目だった人は、Cedega のヴァージョンアップ、グラフィックドライバの更新を考えてみると良いかもしれません。うちの場合、Cedega 4.1.1 と、ATI 製ドライバの 8.14.13 (註:最新のものではナイ)の組合せで、問題が解決しているようです(少なくとも、発生の確率が相当に低くなったのは確か)。

ゲームを強制終了すると、解像度が変になっちゃうよ。

ゲームを何らかの理由で強制終了させてしまうと、デスクトップの解像度がゲームで使用した解像度そのままになってしまいます。でもこれ、xrandr コマンド一つでサクッと戻せます。

$ xrandr -s 0

最後の数字は、解像度のモードを意味する数字で、環境(より正確に言えば、設定ファイルの中身)によって変わります。ゼロは「デフォルトの」って意味なので、普通はこれで元通りに戻る筈。(追記:どの数字がどの解像度に対応しているかは、「$ xrandr -q」で調べられます。)

で、このコマンドを cedega の起動スクリプトの最後に仕込んでしまうと、もっと楽チンになります。編集すべきファイルは、/usr/bin/cedega か、Point2Play を利用しているなら、~/.point2play/.wine_ver/(cedegaのヴァージョン)/bin/winex3 です。これらのファイルの最後に、上記のコマンドをそのまま書き加えれば大丈夫。

ゲームを強制終了させる方法

これは、Alt + F4 など、通常の強制終了が使えない時の話。ハングしちゃったとか。大抵のウィンドウマネージャには、アクティブウィンドウを切り替えるキーボードのショートカットが用意されていまして(普通は Alt + Tab でしょう)、Cedega の Managed オプション([x11drv]内にある)をオンにしている限り、このショートカットも普通に利用する事が出来ます。

で、Point2Play 経由で起動したのなら、Point2Play のウィンドウに切り替えて、Stop ボタンを押せば大丈夫。他にも、コンソールウィンドウに切り替えて killコマンドを実行するとかでも大丈夫です。

なお、cedega を強制終了させると、たまに幾つかのプロセスが終了されずに残ってしまう事があるので、「ps ax」コマンドで確認するのが吉。また、cedega は実行時に幾つものプロセスを生成するので、それらを一つずつ kill していくのは面倒です。でも、以下のコマンドを利用すると、一気に全部 kill 出来ます。

$ killall -9 wine

Point2Play 全般

Point2Play 2.0 系の設定ファイル

Point2Play の 2.0 系では、設定ファイルの扱いが以前と大幅に変更されました。以前(1.x 系)では、メニューの項目毎に独立した cedega の設定ファイルを用意するという形になっていましたが、2.0系では実行ファイルと設定ファイルを自由に関連付けさせられるようになったため、複数のプログラムで設定ファイルを共有する事が出来るようになりました。(Program Title が違っていても大丈夫)

但し、この仕様にちょっとクセが。問題となるのは、コマンドラインオプションもこの設定ファイルの内部でしか指定出来ない事と、関連付けを実行ファイルの名前「だけ」で管理しているため、例え違うディレクトリにインストールされていても、同じ名前の実行ファイルを持つものが全て、強制的に、同じ設定ファイルに関連付けされてしまう事です。

例えば、某ゲームは利用する MOD をコマンドラインオプションで指定するようになっているのですが、そのままだと、幾つもの MOD へのショートカットを同時に登録する、といった事が出来ないわけです。利用する MOD を切り替える度に、設定ファイル内部のコマンドラインオプションを書換えなければなりません(メニューから簡単に行えるけど、やっぱちょっと面倒です)。

でも安心して下さい。ちょっとした手作業が必要になりますけど、ちゃんと回避出来ます。理屈は簡単で、名前が衝突しているんなら、別の名前を用意してやれば良いってだけの事です。というわけで、まずは実行ファイルに別の名前でシンボリックリンクを張って下さい。で、こちらの名前で設定ファイルを管理してもらえるよう、少しだけ手作業を行います。

これから編集を行うファイルは、~/.point2play/(Program Title)/games.ini です。この内部には、以下のようなコードの固まりが幾つかある筈です。

[EU2:AGCEEP]
path=D:/game/win/eu2.new/EU2.exe
icon=/home/gengorou/.point2play/Europa Universalis 2/icons/AGCEEP.xpm
workdir=/home/gengorou/game/win/eu2.new
config=/home/gengorou/.point2play/Europa Universalis 2/AGCEEP.config

最初の行は、Point2Playのメニューに表示される名前です。見ればお分かり頂けると思いますが、編集するのは、その次の行。実行ファイルの名前を、先程作成したシンボリックリンクの名前に変更します。

path=D:/game/win/eu2.new/AGCEEP.exe

ハイ、出来上がりー。あとは、このファイル専用の設定を作って、関連付けして下さい。


ゲーム別

Europa Universalis II

どうも、EU2 のプログラムは少々お行儀が悪いらしく、Cedega だと細かい点で幾つか不都合が発生します。(ひょっとしたら、 Cedega 側のお行儀が悪いのかもしれませんが)

また、プレイ中の解像度を設定するためのプログラムが、Cedega では正常に作動しません。このため、EU2 がイントールされたディレクトリにある settings.cfg ファイルを直接編集する必要があります。この中身は非常に単純なものなので、解説は省きます。

なお、Point2Play 経由で MOD を適用して遊ぶ際は、Point2Play の設定ファイルの項目も参照して下さい。

Hearts of Iron 2

HoI2 は、設定ファイルに手を入れないと、プレイ開始直前に必ず強制終了してしまうため、ゲームを遊ぶ事が出来ません。これは、ウィンドウズと Linux でメモリの使い方が違う事が原因です。一部のアプリは、 Linux ではアクセス出来ない場所(アドレス)にデータを置いてアクセスしようとするので、この時点で OS が強制終了させてしまうのです。

で、 Cedega には利用するメモリの領域をずらしてしまう機能が用意されているので、これを利用するよう、設定を書きます。この設定の変更は、 Point2Play の GUI 上からは行えないので、テキストエディタで。

変更を加えるファイルは、コマンドラインから Cedega を起動するなら $HOME/.transgaming/config です。Point2Play 2.0 以降なら、HoI2 が利用している Profile と同名のファイルを、 $HOME/.point2play/configuration_profiles/ 以下で探して下さい。そして、そのファイルの最後のあたりに、以下の文章を追加します。

[AppDefaults\\HoI2.exe\\memory]
"MemoryLayoutOverride" = "0x10000000"

(註:最後のゼロは 7 個です)

それ以外では、 EU2 と同じく画面が真っ黒になる事がある点に要注意です。また、winver が win2k や winxp だと、起動すらしてくれないようです。


戻る