読者の皆様、2012年も楽しくゲームで遊んでいるでしょうか? 最近はXbox360やPlayStation3といったゲーム機でPCと同じゲームがリリースされることも多くなり、ハイスペックなWindows機を用意しなくても手軽にゲームが楽しめるようになりましたね。筆者もたいへん助かっています。
しかし、据置き家庭用ゲーム機にも問題があります。PCの場合はキーボードとマウス、それにオプションとしてゲームパッドやジョイスティックを利用するのが一般的です。そしてこれらのデバイスは、好みのものをユーザーが自由に選ぶことができます。これに対し家庭用ゲーム機は、USBポートこそ備えていますが標準のHIDゲームパッドをサポートしていないか、もしくは動作するデバイスが限定されています。またゲーム自体もゲームパッドのみで操作を行なえるように調整されており、PC版とは「別ゲー」になっていることも多々あります。特に顕著なのがFPSで、標準ゲームパッドのスティックでの照準にイライラしているのは、筆者だけではないでしょう。
そこで今週のレシピでは、Ubuntuマシンのキーボードとマウス(と、ゲームパッド)でPlayStation3を動かせるソフトウェア、Game Input MultiplexerことGIMX を紹介します。
GIMXとは?
SonyのVAIOには、VAIOをPlayStation3のコントローラとして利用できるようにするリモートプレイ with PlayStation3 というソフトウェアが用意されています。GIMXはリモートプレイ with PlayStation3のオープンソース実装と言えるソフトウェアで、LinuxマシンをPlayStation3の(そして最新版ではXbox360の)コントローラにすることが可能になります。
UbuntuでPlayStation3を操作する
それでは早速、GIMXを用いてPlayStation3のゲームを遊んでみましょう。
PS3とUbuntuの接続方式は、USBとBluetoothから選ぶことができます。しかしUSBでの接続には少々工作 が必要なため、Bluetoothでの接続を前提に解説します。もしもPCにBluetoothが搭載されていない場合は、USB接続のBluetoothドングルを別途用意してください。
ほとんどのゲームをXbox360で遊んでいる筆者としては最新版のGIMXとXbox360を使いたいところですが、原稿を書きはじめた日にコードがコミットされたばかり でまだパッケージが用意されていないことや、Xbox360ではBluetoothが使えないため、例によってUSB AVR開発ボードとUSBシリアルTTLコンバータが必要 など色々と面倒なので、今回はPS3のみの解説とします。
GIMXをインストールする
GIMXはUniverseリポジトリにあるlibwxbaseやlibwxgtkといったライブラリに依存しています。もしもUniverseリポジトリを無効にしている場合は、あらかじめ有効にしておいてください。次に、開発元によって用意されているUbuntu用のバイナリパッケージ をダウンロードします。使っている環境に応じて、32bit/64bitのどちらかを選択してください。パッケージをダブルクリックすることで、依存パッケージも含めてインストールが行なわれます。
図1 sixemuパッケージをインストールする
GIMXの起動と初期設定
まず、あらかじめPS3本体とのペアリングを済ませたPS3のコントローラ(Sixaxis)を、USBケーブルでUbuntuマシンに接続します。lsusbコマンドを実行して、PlayStation 3 Controllerが見えていればOKです。接続が確認できたら、DashからGimx-bluetoothを検索して起動してください。
図2 lsusbコマンドを実行した例。PlayStation 3 Controllerが確認できる
図3 Dashからgimxを検索する
Gimx-bluetoothが起動すると、接続されているBluetoothドングルとSixaxisのアドレスが表示されているはずです。複数のドングルが接続されている場合は、プルダウンから使用するドングルを選択してください。正しいドングルが選択できたら、Set Dongle Addressをクリックします。また、メニューの「File」 →「 Save」を実行すると、SixaxisのアドレスとPS3本体のアドレスを保存します。これで次回起動時からはSixaxisをUSB接続する必要がなくなるので、最初に一度実行しておきましょう。
図4 Gimx-bluetoothの画面。BluetoothドングルとSixaxisのアドレスが表示されることを確認しておこう
アドレスが保存できたら、SixaxisをUbuntuマシンから外します。ここでSixaxisの電源は自動的に切れるはずですが、もしも電源が入りっぱなしの場合はPSボタンを長押しして電源を切ってください。先ほどSixaxisのアドレスを保存したことからもわかる通り、GIMXはこのSixaxisになりすますので、電源が入ったままだと誤動作の原因になります。
次に、エミュレーションの設定を選択します。これはキーボードやマウスにどのようにSixaxisのボタンをアサインするかという設定で、Configのプルダウンにいくつかの設定があらかじめ用意されています。例えば「BattlefieldBadCompany2.xml」を選択すると、キーボードとマウスそれぞれにSixaxisの軸とボタンがアサインされ、PC版のバトルフィールドと同じように操作をすることが可能になります。
Configの中には「X360Pad.xml」といった設定も用意されています。これはその名の通り、Xbox360のUSBゲームパッドを、GIMXを経由してPS3で使うための設定です。SixaxisよりもXbox360ゲームパッドの方がアナログスティックの操作がしやすい[1] のですが、Xbox360ゲームパッドをPS3に直接接続しても、「 不正なUSBデバイス」と言われ使用することができません。そのため海外ではこのような製品 も存在しますが、GIMXを使えば同様のことをUbuntuで実現することができます。
図5 Xbox360用ゲームパッドでPS3を操作してみた
Configを選択したら、Startをクリックしてください。Sixaxisのエミュレーションが開始され、キーボードとマウス(あるいはUbuntuに接続したゲームパッド)でPS3が動くようになります。エミュレーションを終了するにはEscキーを押します。続いてStopボタンをクリックしてください。
GIMXのカスタマイズ
キーアサインのカスタマイズ
キーアサインの設定はXMLで記述され、~/.emuclient/configs以下に保存されています。Gimx-configはこれらの設定をGUIから行なうためのフロントエンドです。
設定を新規作成する場合は、まずメニューから「File」 →「 New」を選択します。次にButtonタブの「Auto detect」をクリックし、設定を行ないたいキーボードのキー、マウスボタン、ゲームパッドのボタンなどを押します。次に、そのキーへアサインしたいSixaxisの機能をButtonプルダウンから選択して、最後にAddボタンをクリックします。アナログスティックのアサインを行ないたい場合は、Axisタブを開き、同様の作業を行ないます。この場合、Event typeがaxisになり、アサインするキーのリストもAxisとなっていることに注目してください。
既にアサインされている設定を変更したい場合は、変更したい行を選択し、Modifyをクリックします。そして通常のアサイン手順を行なった後、Applyボタンを押します。たとえばバージョン0.25-1のパッケージに含まれているBattlefieldやCall Of Duty用のコンフィグでは、なぜか左スティックがFPSお約束のwasdではなく、zdsqにアサインされていますので、「 File」 →「 Open」で既存の設定を開き、このようにしてキーアサインを変更しておくとよいでしょう。変更が完了したら「File」 →「 Save as」で別名保存しておくのがおすすめです。
また、Gimx-fpsconfigという設定ツールも用意されています。こちらはGimx-configとは逆で、Sixaxisの機能に対して、割り当てるキーボードやボタンを設定していきます。設計上、ひとつの機能に対して複数のキーをアサインできないという問題はありますが、おそらくこちらの方が直感的に設定が行なえるでしょう。
図6 キーアサインの設定画面。任意のキーにSixaxisのボタンやスティックをアサインできる
図7 Gimx-fpsconfigの画面。こちらは設定したいボタンをクリックしてから、割り当てるキーを押す
マウスのキャリブレーション
Mouseのcalibrateにチェックを入れた状態でエミュレーションを開始すると、このようなキャリブレーションのダイアログが表示されます。ここで右のCtrl+F1キーを押すと設定値の変更ができます。右Ctrlキーとファンクションキーの組み合わせで調整したい項目を選択したら、マウスホイールの前後で値を変更することができます。その際、変更中の項目は文字色が赤くなります。調整が完了したら、再度右Ctrl+F1を押してください。
図8 マウスのキャリブレーション画面。キーやスティックの動作確認もできる
キーマクロの使用
高級なサードパーティー製のゲームパッドの中には、格闘ゲームのコマンドのような複雑な動作をあらかじめプログラムしておき、ボタンひとつで実行できる機能が搭載されているモデルもあります。GIMXにも、一連の動作をボタンひとつで実行するキーマクロ機能が実装されています。
マクロの定義は~/.emuclient/macrosにテキストファイルとして記述しておきます。デフォルトでexample.txtというファイルが置いてありますので、テキストエディタで中を見てみましょう。マクロは行ごとに書かれた命令を、上から順に実行していくだけという単純な構造なので、すぐに理解できると思います。また#で始まる行はコメントとして無視されます。ただし現在のバージョンでは、アナログスティックにアサインされたキーはマクロに組込むことができないようです。
表 マクロ内で使用できる命令
MACRO マクロを起動するキーを設定する
KEY 任意のキーを押し、50ms待った後にキーを離す
KEYDOWN 任意のキーを押す
KEYUP 押されている任意のキーを離す
DELAY 指定された時間(ms)待機する
おわりに
このようにGIMXを使えば、敵スナイパーを先に発見したにもかかわらず、慣れないゲームパッドでモタモタと狙いをつけているうちに敵に気づかれ、ヘッドショットを食らって戦場の真ん中に無様に転がる……などということも少なくなるでしょう[2] 。標準のゲームパッドに不満がある人や、ちょっと変わった環境でゲームをしてみたい人は、GIMXを試してみてはいかがでしょうか。