2015/09/28

加速理論とその周辺

FPSシーンのデバイスのセッティングでは
マウス加速はOFFにすべきである
ということが基本的事項として言われています.

私も現状の設定では加速なしでプレイしているので,加速なし派の支持者と言えるのですが,デバイスについての知識が増えるに従ってもう一度加速について考えるべきだと感じています.

機械的な視点で考えると,

  • 異なる応答特性をもつ複数のアクチュエータ
    • 肩,腕,指の筋肉
  • 複数のジョイント
    • 肩,肘,手首,指

を用いて作業点(マウス)を動作させているので,非常に複雑な構成のシステムです.

また,アクチュエータである筋肉の電流応答を見てみましょう.
[1]
肩,腕,手の筋肉が一概にこういう特性だ,ということを断言するわけではありません.しかし,少なくともマウスを動かすのに使う筋肉も「線形応答ではないはず」という予想はできます.

そして,制御系(脳)自体も,状況に応じて様々な神経からのフィードバックと神経の遅延を加味しながらアクチュエータを制御しています.こうしたシステムで,「最終的に系全体では線形になっている」もしくは「線形な特性をもつポインタを使用するべき」と主張するのは難しいと考えています.

また,私の考えていた加速なしにしていた一つの理由として,
脳は移動量を関節角のフィードバックを元にしているはずであるので,いかなる速度で動かしても一定の関節角の動きを取る加速なしが優れている
という考えがあります.しかし,前述のとおり関節の構成は複雑です.
また,関節の長さもポイントとなります.例えば肘から作動点まで40cmだとすると,1mm平行移動させる場合の肘関節の角度差は0.14°となります.私は,複数の関節からのフィードバックを0.1°単位で加味しながら制御しているとは考えられません.
そしてプレイ中に意識して考えると,どちらかというと視覚からのフィードバックを重視しており,そこから筋張力を制御しているように感じます.したがって,実は関節角によるフィードバックは重要度が高くないと考えるようになりました.

これらを勘案すると,「加速は入れるべき」なのではないかということが分かってきます.

加速なしv.s.加速あり

それぞれのメリット・デメリットはrafa様の記事の通りなので是非参照してください.
私の経験から要点をまとめると以下のようになります.

  • 加速なし
    • ハイセンシ
      • 成績にムラが出やすい
      • 近距離に強く,遠距離に弱い
      • 多くのタイトルで初期状態ではハイセンシ状態である
      • 初心者にハイセンシのプレイヤーが多い
    • ローセンシ
      • 成績が安定する
      • 遠距離に強く,近距離に弱い
    • ミドルセンシ
      • ハイ・ローの中間的な特性だが,近距離ではハイセンシに負け,遠距離ではローセンシに負ける
  • 加速あり
      • 習熟に時間が掛かる
      • 極めれば(恐らく)不得手なレンジは無くなる
      • 「加速特性」という複雑なパラメタを自分に合わせてチューニングする必要がある

加速特性

ちなみに「どのようなパターンの加速特性とするべきか」という問題に関しては,非常に難しい問題なので今後のユーザの試行錯誤に期待していきたいです.
さしあたり,現状で分かっている点から加速特性について少しだけ考えてみましょう.

低速域の場合,例えばの話ですが,右に3カウント動かした後に左に4カウント動かす,というのを瞬時に間違いなくやってのける人はあまりいないでしょう.400dpiだとすると,1カウントで0.06mmとなりますが,誤差±0.03mm単位で物を正しい場所に動かすのは難しいです.そういう意味では低速域ではセンシティビティを下げるべきだと考えられます.

高速域では,低中速域でのセンシティビティに大きく依存すると考えています.低中速域でのセンシティビティが低い場合,高速域では大きな力が必要となります.全力で投げるよりも8割の力で投げた方がコントロールしやすいですよね.したがって,中高速域ではある程度の加速をかけて全力で動かさなくても高速に視点が動作するようにすると良いでしょう.

問題点

「加速なし」の圧倒的なメリットとして,「振り向きを一度測れば,すべてのタイトルでセンシティビティを統一できる」というものが挙げられます.基本的にはrawinputを有効にするか,OS側の加速を切ってゲーム内の加速を切ることで加速なしの環境は構築できるのです.そして,使い慣れた振り向きになるようにセンシティビティを調整すればOKです.
ついでに言えば,ゲームエンジン毎に振り向きを計りながらセンシティビティを調整するのは面倒なので複数のタイトルで設定値を統一して欲しいですが.

加速ありで問題となるのが複数タイトルでのセンシティビティを合わせにくいというものです.私も一時期マウス加速を試していた時期があったのですが,複数タイトルでのセンシティビティが合わせにくいという理由で止めています.
インゲームの加速機能を使用すると,エンジンによる加速のかかり具合によってセンシティビティが統一できないという問題があります.また,rawinputしか選べないタイトルも存在するかもしれないのでOS側で設定するというのも難しい話です.

こうした問題を解決するには,複数タイトルに対応した統一的な加速特性設定の規格が必要なのだと思います.

さしあたっての解決法は,QL Mouse Accel Driverなどでドライバレベルで加速をかけることです.しかし,導入が少々面倒という点があります.

または,マウスレベルでの制御を行うことです.加速を掛ける段階でカウントをうまく縮尺させれば,整数型でも加速をつけることができるのでFPUを搭載していないマイコンであっても,問題にならないレベルの演算時間だと見積もることができます.マウスレベルで加速をかけることで,ネットカフェやオフラインなどの環境でも自分の加速特性を利用することができます.
しかし,こちらはファームウェア毎に異なる方法で加速をかけることになるので,複数のマウスを頻繁に取り替える場合などを想定すると,これもまた統一した規格が必要になると考えられます.

[1] 板倉直明,久保公人,井口弥寿彦,南谷晴之: "電気刺激による筋張力制御系の安定性の評価" 電子情報通信学会論文誌. J72-DII. 1543-1549 (1989)