ウェブカメラで既存ゲームを遊び倒す例

(English Version)

概要

アクションゲームを体全体の動きによって操作できるようにするツール。

GUIを用いて空間内にセンサーを配置しておくと、そのセンサー領域への 侵入物を検知してあらかじめ指定されたキーイベントを発生させる。

EyeToy対応でないゲームを無理矢理EyeToyに対応させてしまおう、という意図である。


スクリーンショット

screenshot

デモ



動作環境

Windows + 一般的な日本語配列キーボード (他のキーボードはたぶん無理)

必要なもの

以下のPython処理系/Pythonライブラリをあらかじめインストールしておく。 指定したバージョン以外のものを用いた場合の動作確認はとれていない。

ソースコード


起動方法

上記の2ファイルを同じディレクトリに置き、
$ python image.py
で起動する。.py拡張子に対する関連付けがある場合は、image.pyをダブルクリックしても同様に起動する。

操作方法

センサーの新規作成

カメラ画面内でマウスを左ボタンでドラッグ。 このあと直ちにキー入力を待つモードに入るので、今作ったセンサーに関連付けたいキーを選んで入力。

センサーへの接触判定

センサー領域内の初期状態の画像と現在の画像との差が大きくなると、「プレーヤーがセンサーに触れた」と判定される。

以下に説明する「当たり判定の反転」や「センサーの移動/リサイズ」を行うと、センサーが現在の画像で初期化し直される。

当たり判定の反転

既存のセンサーを左クリックすると、体が触れていないときにOn になるような正反対のセンサーに変わる。もう一度左クリックするともとに戻る。

センサーの移動/リサイズ

センサーを左ボタンでドラッグして移動。 同様に、センサーの四隅を左ボタンでドラッグするとリサイズ。

登録キーの変更

センサーを右クリック。

センサーの削除

センサーを右ボタンでドラッグ。

プレイ開始

"Now Playing:" をチェックすると、各センサーの設定はロックされ、当たり判定に対応したキーイベントが実際に発生するようになる。

キーイベントを受け取らせたいゲームアプリケーションのウインドウはアクティブな状態にしておくこと。


ヒント

画像処理によるタイミングの遅れが致命的になるゲームとは組み合わせないほうがよい。 例えば、音ゲーは不可。

いっぽう、マリオ系のアクションゲームは、タイミングの遅れが かえってハラハラ感を煽るので結構面白い。 ジャンプ用のセンサーを自分のはるか頭上に設置しておくと、マリオをジャンプさせるために 自分もかなり本気でジャンプしなければならなくなり、マリオの普段の苦労が身にしみて よく分かるようになるのでお薦め。

当たり判定を反転させたセンサーは、体を縮めるような動作に対応させて使うことができる。 例えば、普通に直立すると胸が来るような位置にこのセンサーを置いておくと、 しゃがむ動作に反応してキーイベントを発生させることができる。


参考

Python webcam fun - motion detection
SATOH Hideaki