I'm pleasewait

競技エイミング・FPS/TPS ゲームに関することや取り留めの無い日記など

モニターの PPI や腕の振り幅に基づくマウス感度設定

※ 2019/06/22 追記

TL;DR

  • CPI を 1 単位で調整できるマウスを活用し、マウスとデスクトップポインターの物理的な移動距離を一致させる試みの紹介(操作が直感的になるかと思いきや、とても重たく感じて微妙な結果に)
  • マウス感度(360° Distance)を腕の振り幅に基づいて調整する試みの紹介(どちらかといえばキャラコン重視の発想、逆に PSA Method はエイム時の正確度重視の発想)
  • 2D と 3D 間のマウス感度変換について、mouse-sensitivity.com の紹介(文中では Viewspeed による変換を使用しているものの、現在は Monitor Distance 0% による変換を使用している。『モニター中心付近における移動距離を近似させることを優先した変換方式』とは、むしろ Monitor Distance 0% の説明に近い)

 

現実世界におけるマウスの移動距離と、デスクトップ上のポインタの移動距離を同じにすれば、ポインタ操作を現実世界の感覚で自然にこなせるのではないか。そんな思いつきからこの記事は始まる。

マウスの DPI とモニターの PPI を同期する

DPI(dots per inch)は文字通り、1 インチ中にどれだけのドットが存在するかを表す数値である。マウスにおいては、1 インチ動かすと何カウントの移動イベントを送出するか、という数値になる。

PPI(pixels per inch)は、1 インチ中にどれだけのピクセルが存在するかを表す数値である。モニターの設定により使用する解像度を変えた場合、PPI も変化する。モニターの解像度を最大値に設定して使用している場合においては、DPI と同じものと考えて差し支えない。

つまり、マウスの DPI とモニターの PPI を同じ値に設定すれば、マウスの物理的な移動距離とポインタのモニター上の移動距離を同じにすることができる。ポインタ上に指先を置いて動かしているかのような、自然な操作感が得られるかもしれない。

モニターの PPI は、使用している解像度とモニターのサイズによって計算できる。以下のように、計算を支援してくれるサイトもある。

www.sven.de

自分は現在、解像度 1920x1080 で 24 インチのモニターを使用している。先ほどのサイトで数値を入力すると、モニターの縦横の長さ、PPI などが計算されて表示される。

PPI計算画面引用:DPI Calculator / PPI Calculator

計算してみると、PPI は 91.79 となった。しかし、いま使用しているマウス(Razer Mamba TE)は DPI 100 未満の設定をすることができない。

そこで、WPS(windows pointer speed)を変更し、ポインタ移動速度の倍率を変更することによって、DPI を設定可能な値まで引き上げることにした。WPS はマウスのプロパティのポインターオプションから変更できる。11 段階あり、6/11 がスライダーの中央で初期値となっている。ただし、3/11 は 6/11 の半分とはならず、倍率は段階に応じて別途割り当てられている。倍率の詳細については mouse-sensitivity.com の書き込みに詳しい。

WPS 倍率
1 1/32
2 1/16
3 1/4
4 1/2
5 3/4
6 1
7 1.5
8 2
9 2.5
10 3
11 3.5

引用:DPI Analyzer Counts? - Technical Discussion - Mouse Sensitivity Community

先ほど求めた PPI の値を 4 倍すると 91.79 * 4 = 367.16 となる。PPI を 4 倍した分の帳尻合わせとして、WPS は倍率が 1/4 になる 3/11 に設定する。いま使用しているマウスは DPI を 1 単位で調整できるので、四捨五入して DPI 367 に設定する。これで、マウスとポインタの移動距離が 1:1 となる設定になった。

実際にマウスを動かした距離とポインタが動いた距離を定規で測ったところ、距離がほぼ一致していることを確認できた。しかし、かなりのローセンシに感じて、慣れるのは大変そうだった。いま使用しているマウスパッドの横幅が 35.5 cm で、モニターの横幅が約 53.1 cm なので、ポインタが重く感じるのも無理はない。マウスを動かした分だけポインタが動くというのはたしかに自然な感覚ではあるものの、やはりある程度ポインタを速めた方が良いのだろうという考えに至った。

腕の振り幅に合わせたマウス感度設定

マウスとポインタの移動距離を 1:1 にすることはできた。ということは、モニターの横幅が腕の振り幅の何倍にあたるのかを計算し、先ほど求めた DPI に掛け合わせることによって、モニターの横端と腕の振り切りを同期することができる。こちらは有用かもしれない。

いま使用しているモニターは 24 インチであるが、モニターのインチ数は横幅ではなく対角線の長さを表す数値である。先ほど利用したモニターの PPI を計算するサイトのデータ出力内にも記載されている通り、24 インチモニターは縦幅約 11.77 インチ、横幅約 20.92 インチとなる。

腕の振り幅については自分で実際に測ってみるしかない。こういうときのために定規を用意しておくと便利である。

腕の振り幅の定義は、マウスを真ん中に置いてから左右に腕を振った際の横幅である。リフトオフ動作を挟むまでの距離とも言える。肉体の限度一杯を測るというよりは、自分が普段からやっているような無理のない範囲を測った方が有用であろう。自分の場合、腕の振り幅は 20 cm であった。

f:id:pleasewait:20180121204935j:plain

(マウス画像素材:http://www.sharots.com/sozai/cursor.html

これでモニターの横幅と腕の振り幅が出揃った。計算のため単位を cm に合わせると、モニターの横幅は約 53.13 cm である。53.13 / 20.0 = 2.6565 となり、これを先ほど求めた DPI に掛け合わせることで、モニターの横幅と腕の振り幅を合わせることができる。つまり、367 * 2.6565 = 974.9355 となり、小数点以下を四捨五入して 975 となる。解像度 1920x1080・24 インチモニター・腕の振り幅 20 cm という環境においては、WPS 3/11・DPI 975 という設定でモニターの横端と腕の振り切りを同期できるということが分かった。

実際に設定して動かしてみると、モニターの中心に置いたポインタが腕の振り切りと同時にモニター端へ到達することを確認できた。しかし、この設定はモニターの横幅のみを考慮しているために、モニターの四隅に対して腕の振りの範囲内でポインタが届かないという欠点があることも分かった。

四隅に対する移動も考えるのであれば、モニターの横幅の代わりに対角線の長さを用いればよい。すなわち 24 インチであり、60.96 cm である。60.96 / 20 = 3.048 となり、これを DPI に掛け合わせると、367 * 3.048 = 1118.616 となる。四捨五入して 1119 。こうして四隅に対するポインタ移動も考慮した、腕の振り幅に基づくマウス DPI 設定が求められた。

mouse-sensitivity.com を利用して FPS ゲームのマウス感度を調整する

ここまで調整してきたのはデスクトップ上のポインタに対するマウス感度設定である。つまり、視界を動かしてターゲットに合わせる FPS ゲームを考慮していない。しかし、 mouse-sensitivity.com を利用することで、 Windows のポインタ感度を各種 FPS ゲーム内の感度に変換することができる(Windows のポインタ感度変換については課金購読が必要)。

ただし、厳密に同じ感度に変換するということはできない。これは、縦横のみの2Dにおいては座標に基づいてポインタを合わせているものが、3D空間においては角度に基づいて照準を合わせているためである。

とはいえ、ある程度近似した設定を採用することはできる。デスクトップ上のポインタ操作の感覚と 3D 空間における照準合わせの感覚が近ければ、日常的なポインタ操作の経験も FPS ゲームに活かせるのだから、合わせておいて損はない。

変換方式には主に「360° Distance」と「Viewspeed」というものがある。「360° Distance」を採用すると、デスクトップ上でモニターの端から端までポインタを動かした分が FPS ゲーム内における視界の端から端に相当するような設定となる。ただし、端という基準点は一致するものの、モニター中心付近における移動距離が不一致となる。

「Viewspeed」は逆に、モニター中心付近における移動距離を近似させることを優先した変換方式である。したがって、デスクトップ上のポインタをモニター端まで動かした分と、ゲーム内の視界の端は一致しない。しかし、視界の端ギリギリのターゲットを狙うというシチュエーションはそう多くないために、モニター中心付近における照準の移動速度を合わせた方が有利であると考えられる。したがって、変換方式「Viewspeed」の方が人気である(というのが自分の理解であるが、正しく理解しているという保証はない。「Viewspeed」の変換方式について、具体的に使用されてる数式などを交えた解説ページもあるため、きちんと検証したい方はそちらを読むことをおすすめする)。

例えば、モニターの横幅と腕の振り幅を合わせた WPS・DPI 設定を「360° Distance」で AimHero に変換すると以下のような形になる。

WPS変換結果引用:Mouse Sensitivity | Same Aim - Different Game

モニターの横幅を腕の振り幅 20 cm に合わせた設定なので、Windows/Desktop の Distance が約 20 cm になっているのは計算通り。AimHero 側では 360° distance が 69.6032 cm となっているが、これは水平方向の FOV(HFOV)が 103.48 度のため、360 / 103.48 = 3.478933127174333…となり約 3.48 、これを Windows/Desktop の Distance に掛け合わせると 20 * 3.48 = 69.6 となり、360° distance の値になるという計算であろう。デスクトップ上のモニター端とゲーム内の視界の端との距離が同期されていることが分かる。

次に、モニターの横幅と腕の振り幅を合わせた WPS・DPI 設定を「Viewspeed」で AimHero に変換すると以下のような形になる。

「Viewspeed」変換結果引用:Mouse Sensitivity | Same Aim - Different Game

360° distance が 60.8848 cm に変化した。モニター中心付近における移動距離を近似させることを優先した変換方式であるために、デスクトップ上のモニター端とゲーム内の視界の端との距離が変化していることが分かる。これ以降は「Viewspeed」での変換を利用することを前提として話を進めていく。

前置きが長くなってしまったが、再び腕の振り幅に合わせたマウス感度の話に戻る。先ほどはモニターの横幅や斜辺の長さと腕の振り幅の比率から DPI を調整したが、mouse-sensitivity.com での変換で表示される 360° distance の長さを用いることで、腕の振り幅とゲーム内の任意の角度を合わせることができる。例えば、腕を一振り(マウスパッドの中心から左右どちらかに一振り)した際にゲーム内で視界がちょうど 90 度動くというような調整が可能となる。これも計算していこう。

先ほど載せた画像の通り、WPS 3/11・DPI 975・腕の振り幅 20 cm における AimHero での 360° distance は 60.8848 cm であった。腕を一振りすると視界が 180 度動いて後ろを向くという設定にする場合は 360° distance に対する腕の振り幅 20 cm の比率を DPI に掛け合わせる。60.8848 / 20 = 3.04424 なので、DPI に掛け合わせると 975 * 3.04424 = 2968.134 となり、四捨五入して 2968 となる。一振り 180 度の DPI が求まったのだから、一振り 90 度については先ほどの DPI 値を半分にすればよい。つまり、2968 / 2 = 1484 である。同様の流れで、腕の振りを任意の角度に合わせる DPI 設定を求めることができる。

こうして DPI 値の候補が出揃った。解像度 1920x1080・モニター 24 インチ・腕の振り幅 20 cm・WPS 3/11・AimHero の in-game sensitivity 2.333882・AimHero の VFOV 71 という環境における各 DPI 値は以下の通りである。

腕の振り幅を何に合わせるか DPI
モニターの横幅 975
モニターの斜辺 1119
AimHero 内の一振り 60 度 989
AimHero 内の一振り 70 度 1154
AimHero 内の一振り 80 度 1319
AimHero 内の一振り 90 度 1484
AimHero 内の一振り 100 度 1649
AimHero 内の一振り 110 度 1814
AimHero 内の一振り 135 度 2226
AimHero 内の一振り 180 度 2968

目安となる DPI の一覧が可視化されたので、それぞれの設定を試してどれが自分に合うマウス感度なのかを探っていった。

一番しっくりきたのは、AimHero 内の一振りが 90 度になる DPI 1484 であった。元々使っていた DPI が 1600 や 1800 だったので、変化量が比較的小さくて移行しやすいという理由かもしれない。照準やポインタの移動に重たさを感じず、それでいて精度も申し分ない。しばらくはこの設定でやってみようと思う。

次点で、モニターの斜辺を腕の振り幅に合わせた DPI 1119 が候補として有力に感じた。ただ、これは AimHero における一振り 70 度に近いものである。競技エイミングに専念するならばこれでもよいのだが、FPS ゲームにおいてクリアリング動作を行うことを考えると、いささか速度が足りないような印象を受けた。DPI 1484 で行き詰まりを感じたら、DPI 1319・DPI 1119 を順に試す形にしようと思う。

FPS ゲームにおける調整を考えるのであれば、一振り何度までの移動を必要とするかによって設定する DPI も変わってくるだろう。例えば 180 度反転動作を必要とするゲームキャラクターを使用するのであれば、DPI 2968 が候補になるだろう。そのような操作を必要とせず、激しい動きも存在しないゲームであれば、死角から撃たれるのは立ち回りの敗北であると割り切って、一振り 60 度の DPI 989 を採用するという戦略もあり得る。

今までは何となく真横よりちょっと後ろに行くくらいにしよう、というようなアバウトなマウス感度設定であったが、腕の振り幅を測って各ポイントに合わせるというやり方を採用することによって、自分のマウス感度がなぜその値なのかという理由を深く理解できるようになった。マウス感度調整が幅や角度に基づく計算に裏打ちされたものとなり、他人にマウス感度を共有する際にも分かりやすいものとなるだろう。

DPI 1484 で練習すると、自己ベストを更新できた。この調子で力を磨いていきたい。

余談 1: 腕の振りの角度を求める

腕の振り幅を測った際、この腕の振りはどれくらいの角度にあたるのだろうという興味が湧いた。角度を求めるには、マウスのセンサーの位置(自分の握り方の場合、手のひらの中心付近)から腕の支点までの距離を測り、三角関数を利用すればよい。数学力の乏しさにより三角関数の詳細は覚えていないが、三角関数を使って角度を出せることは覚えている。計算してくれるサイトがあるので、そちらを利用させていただこう。

f:id:pleasewait:20180121000818j:plain

実際に測ってみると、腕の支点までの長さはちょうど 20 cm であった。腕の振り幅は 20 cm であったため、一振り 10 cm であることを考えると、以下のような図となる。半径 20 cm の円周上の点が作る直角三角形を考えればよい。

f:id:pleasewait:20180121221315j:plain

(この図は GeoGebra というツールを利用して作成した。便利。)

上記の図において角 DAC が何度であるかを求める。以下のサイトに底辺を 10、斜辺を 20 と指定すれば角度が求まる。

計算すると底辺と斜辺の成す角 ACD が 60 度であることが求まり、角 DAC はちょうど 30 度であることが分かった(今回の場合は、30度・60 度の直角三角形の比が 1:2:ルート3 であるという知識から求めることもできる)。

今日に至るまで、なんとなくやりやすい位置に腕を調整しつつゲームをしてきたのが、角度 30 度の腕振りという綺麗な値に収束していたというのは興味深い発見であった。30 度というのは人間工学的に意味のある数値なのだろうか?人間工学に詳しくないので調べてみないとわからないが、一つの目安になる数値であるような気はする。

仮に角度 30 度を目安とするなら、マウスのセンサーの位置から腕の支点までの距離を測ることによって、腕の振り幅も求まる。その場合は以下のようなワークフローになるだろう。

  1. マウスのセンサーの位置から腕の支点までの距離を測る
  2. 直角三角形(斜辺と角度)|三角形の計算|計算サイト を利用して、斜辺に腕の支点までの距離を、角度に30度を指定し、高さ(腕の振り幅)を求める

  3. DPI Calculator / PPI Calculator を利用して、ポインタとマウスの移動距離が 1:1 になる DPI を求める
  4. mouse-sensitivity.com を利用して、Windows/Desktop のマウス感度を任意のゲームに変換し、腕の振り幅とゲーム内の任意の角度を合わせる DPI を求める

腕の振り幅を軸に考えることによって、個々人の腕の長さの違いを吸収した上で、マウス感度を共有することができる。解像度・モニターのサイズ・WPS・DPI・FOV・in-game sensitivity に並び、マウスのセンサーの位置から腕の支点までの距離・腕の振りの角度・腕の振りの幅といったパラメータが共有されるようになることを願う。

余談 2: WPS は 6/11 が良いという議論

in-game sensitivity を下げてマウスの DPI を上げると、普段使いのデスクトップ上でポインタが速くなって制御し辛くなってしまう。そこで WPS を引き下げて帳尻合わせをするのだが、WPS 6/11 以外の設定はピクセルスキップの要因になるという議論を見かけたことがある。はたしてこれは本当なのだろうか。

今どきのマウスは DPI をボタンで切り替える機能があるので、ゲーム中だけ DPI を引き上げ、デスクトップ上では DPI を下げればよいという考え方もある。しかし、ゲーム内でもメニュー画面などの UI でポインタを使用する場合があり、都度切り替えするのは煩雑になってしまうケースもある。できれば DPI は動かさないようにしたい。

実際に、WPS と DPI の比率を変化させて試してみたのが以下の画像である。

f:id:pleasewait:20180121225151p:plain

拡大して表示すると、7/11 以降は文字がカクついてしまっている。しかし、6/11 より小さい設定にしても、見た目の上では 6/11 と大差ないようであった。自分の指のさじ加減に依ってしまう再現性に欠ける試験ではあるものの、6/11 より小さい設定である分には問題なさそうである。そういうわけで、自分は WPS 3/11 を使っている。

余談 3: VFOV 71 の理由

AimHero の VFOV を 71 に設定しているのは、HFOV を 103 に近づけるためである。詳細は以下のガイドに詳しい。

では HFOV 103 という数値はどこから来たのかというと、Overwatch で設定できる HFOV の最大値が 103 だったためである。つまり、最大値を採用すればその分視界が広くなって情報量で有利になれるだろうという考えであった。

FOV を高くすると情報量が多くなり、ターゲットの見た目や動きは小さくなる。逆に、FOV を低くすると情報量が少なくなり、ターゲットの見た目や動きは大きくなる。こうしたトレードオフに基づくなら、例えば連続して攻撃をヒットさせる武器を多用するなら FOV を高め、一発を当てる狙撃銃のような武器を多用するなら FOV を低くする、という戦略が考えられる。

ただ、現状はそこまで考えて調整を行っていない。マウス感度の調整のように、何か軸となる考え方があれば FOV の値も細かくこだわって調整できるかもしれない。これについてはもっと調べてみる必要がありそうだ。