2007年09月09日

ゲームコントローラのレスポンス問題 その2

ゲームコントローラのレスポンス問題の続き

USB以前のゲームコントローラの接続に使われていたインターフェースは

  • サウンドカードのゲームポート
  • ISA/PCI接続の拡張カード(IF-SEGA2等)
  • プリンタ用のパラレルポート等を利用したDirect Pad Pro

といったところです。

これらのインターフェースがUSB接続のものと決定的に違うのは、コントローラを接続しているコネクタの電気的な状態がCPUから直接見えることです。いまどんな信号が流れているのか、CPUからリアルタイムに見ることができます。また、コントローラの状態の読み出しが、アプリケーションの実行パスの一部として直列に処理されます。

それに対して、USBは通信にかなり複雑な手順が必要なため、ゲームコントローラや変換機にもCPUを搭載していて、実際にゲームコントローラの状態を読み取るのは、そちらのCPUが行っています。

前回、ポーリングの間隔が十分に短くないと入力の取りこぼしが発生するという話をしましたが、USB接続の場合はコントローラや変換機側のCPUが適当な間隔でポーリングをして、USBを通して情報をPCに送っています。このコントローラ(変換機)側のCPUのポーリング間隔がレスポンスに影響してきます。

では、このポーリング間隔が、どの程度ならレスポンスに問題が無いのでしょうか?

よくある誤解が、連打速度を基準にすることです。高橋名人が16連射だから、1秒間に32回ポーリングすれば十分だろうという発想です。(ボタンを連打するという操作はONの状態とOFFの状態を交互に繰り返すことなので、連打速度の2倍の情報更新が必要)

確かにボタンを連打するという操作では1秒間に16回程度が常人の限界だと思いますが、レバー操作やボタンのずらし押し等は、それより遥かに速いテンポで入力されています。

ハイパーオリンピックという主にボタンを連打することで記録を競うゲームがありましたが、この種のゲームで記録を伸ばすために、レバーにボタンを配線するという方法が使われました。(デジタル操作のレバーは電気的には上下左右の4つのボタンがあることに等しいので、ボタンの線を繋げばボタンとして機能する)各所のハイスコア集計で自動連射機能は禁止されていましたが、このレバーを使用した方法はセーフである場合が多く、通常のボタン操作よりも遥かに高いスコアをたたき出していました。(ゲーメスト誌では96年頃から禁止されました)

この例でも分かるように、レバー操作はボタン連打よりも速いスピードで入力が変化しており、連打速度を基準では不十分です。

また、ゲームが60fpsで動いているのにコントローラが秒間20回しか情報を更新していなければ、全ての操作が3フレーム単位となり、3フレームより短い入力は不可能です。正確に1フレームだけボタンを押さないといけないアキラの膝なんて絶対に出ません。タイミングを合わせるような操作も、3フレーム単位でしか調節できなくなります。これではブロッキングとか無理ですね。

なお、このレスポンス問題をラグ(遅延)と誤解している人が多いですが、遅延とは違います。50ms間隔でポーリングしている場合、ボタンを押してから実際にその情報が読み取られるまで最悪で50msの時間がかかるので、これが遅延だと思われています。

ほとんどのゲームが60fpsで動いているので、入力も60回行えるのが理想ですね。ただ、1秒間にきっちり60回ポーリングすると、ゲーム側が60.1fpsのように微妙に速かった場合に、たまに1回の入力が2フレームまたいでしまうことになるので、もう少し余裕を持たせた方がいいと思います。

サンワサプライのPlaystation用コントローラ変換機のJY-PSUAD11やその旧製品のJY-PSUAD1は、1秒間に110回もポーリングしているので、現時点ではこれが一番良いでしょう。(製品には55回の入力と記載されているが、これはONとOFFで合わせて1回とカウントしているため)この手の製品でコントローラを2つ接続可能なものは、1つのものと比べてポーリング間隔が半分になっているのがほとんどなので、レスポンスを気にするなら2つ接続できるものは避けた方がいいです。

2007年09月09日 【PC環境・周辺機器】 | コメント(0) |

この記事へのトラックバックURL


この記事へのトラックバック
この記事へのコメント

コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。