テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

エイム数学: ゲーム間で視界速度を一致させる方法

2つのゲーム間(例えばCSGOとOW)でセンシを合わせると言った時に, FOVの影響を考えず振り向きに必要なマウス移動距離で合わせてしまう人がいるが, これは間違ってるという話をする. その上で, どういう計算式によって合わせれば良いかという話をしようと思う.

f:id:akiradeveloper529:20180610172634j:plain

まずFOVとは何かというと「全方位360度のうち何度分を平面のディスプレイに投影しますか?」という数値だ. 例えばCSGOでは106.26度, OWではデフォルトで103度となっている.

マウスをある距離動かした時に, どのくらいの角度を進むかは, 振り向きの逆数で表すことが出来る. 例えば振り向き3cmの人と30cmの人と比べると, 1/3と1/30で後者の方が10倍角度が進まないということが言える.

例えばFOVの異なるゲーム間で振り向きを一緒にしてしまうと何が起こるかというと, FOVの小さい方では視界速度が速くなる. これは例えばPSAの結果に影響する. たとえば極端にFOV10度と100度のゲームがあったとしたら, これは自明だろう. (試しにOWのFOVを80度に下げてみると良い) だから, FOVの異なるゲームではFOVを意識した変換を行う必要がある.

ではどういう変換をすれば良いか?問題は円周には膨らみがあるのにディスプレイには膨らみがないことだ. これが誤差になるため, モニター上の距離を一致させるという方式では「では何度ないしは何パーセントの範囲でモニター距離を一致させるのか」で結果が変わってくる. これが, mouse-sensitivity.comのMonitor Distanceの設定でMatch Atというパラメータがある理由である. これは75%が推奨されているが, 特に数理的な根拠があるわけではない.

そこで考えられたのが視界「距離」ではなくて「速度」(つまり微分)に着目するという方式で, これがmouse-sensitivity.comではViewspeedという形で実装されている. これについて説明する.

f:id:akiradeveloper529:20180611142942j:plain

マウスをいくら振っても, 視界は常に画面の真ん中にある. だから, 大きな視界移動であっても, 微小な視界移動の積み重ねと考えることが出来る. こう考えると, 微小な視界移動について着目しても良いと分かる. (そもそも視界速度の定義はdθ/dt)

f:id:akiradeveloper529:20180610173845j:plain

上の図でθが極めて微小な時, 円の曲がりは無視することが出来る. つまり, 円上の動き(つまり振り向きの逆数)とモニター上の距離の関係は, 図にあるようにαで表すことが出来る. これより, α = cos(θfov/2)が言える.

今目指すことは, マウス上の微小移動距離に対してゲーム間でモニター上の微小移動距離のモニター上の割合を一致させることだから, 前者を固定して議論しても良く,

1 / 振り向き1 * cos(θfov1 / 2) / sin(θfov1 / 2) = 1 / 振り向き2 * cos(θfov2 / 2) / sin(θfov2 / 2)

という関係が得られる. ここで添え字の1,2はゲーム1,2のこととする.

実際にmouse-sensitivity.comを使って確かめてみる. 例えばScreaMが使ってる1000edpiというCSGOのセンシの場合, 一周は41.5637cmである.

上の式は,

振り向き1 * tan(θfov1 / 2) = 振り向き2 * tan(θfov2 / 2)

となるから,

>>> 41.5637 * math.tan(106.2/2/180*math.pi) / math.tan(103.0/2/180*math.pi)
44.033463805534595

となって, OWでは3.93が適正と分かる.

しかし, これは, mouse-sensitivity.comのViewspeedとは違う. むしろただMonitor distanceで0%の場合を再計算しただけに相当する. Viewspeedはどうやらモニターのアス比や2D-3D変換も考慮に入れているようだが, おれとしてはFPSにおいてはほとんどのエイムはヘッドラインを保って水平方向に動かすだけであり, 縦横を平等に扱うこと自体が間違ってると思うので, 今回紹介した考え方に間違いがないのであれば, この方法でいきたいと思う.

(etiles report) Android版を正式リリースしました

Google Playで"etiles"で検索してダウンロードしてね!!

Android版のリリースに向けて, iOS版の実機テストを行った. なぜかというと, Android版とこれから出すiOS版は出来るだけ同じソースコードにしたいので, iOSで破綻するコードならAndroid側に妥協してもらう必要があるからだ.

そのために, ipod touchをアキヨドで買ってきた. これは23000円もした.

f:id:akiradeveloper529:20180609024703j:plain

react-nativeで作ってるので当たり前ではあるが, iOSでも動作した.

iOS版は6月末に出せればいいかなと思っている. お楽しみに

(writeboost report) v2.2.9をリリースしました

github.com

4.15の段階でACCESS_ONCEが消去されたことでコンパイルが通らなくなったため, 各方面から「いつになったら修正版がリリースされるんだ」と突きまくられていたが, おれはイータイルズの開発に集中していたため, なかなか手を戻せなかった. よってなんと8ヶ月ぶりのリリースとなった.

修正コミットのうち1つはAllenという学生がやってくれたものだが, コードのことについて熱心に質問してくると思ったら, 学校のプロジェクトでライトブーストの性能測定をする目的があったようだ.

github.com

まぁ, 正直に言って何やってるか正しく読み取ることは難しいし, 教育は学校の先生に任せるとする. ただ, ライトブーストが学校の教材として採用されていることは素直に嬉しく思う. ライトブースト開発の目的の1つは, このコードをLinuxカーネル開発の入門として使ってもらうことだからだ.

v2.2.8の間にあったもう1つのニュースは,

RedIRIS - Jornadas Técnicas de RedIRIS

ライトブーストを学内のサーバで使った成果をスペインの学会で発表してもらったことだ. スペイン語なので何を言ってるかはわからないがとても速いみたいなことを言ってるような気がする.

おれがイータイルズを開発しているうちにライトブーストは着実に広がっており, たぶん今後も広がり続ける. 細々とメンテナンスだけはしていこうと思う.

児童虐待に心を痛めている

headlines.yahoo.co.jp

東京・目黒区で、5歳の女の子が虐待死し、両親が逮捕された事件で、女の子が「ゆるしてください」などと書いたノートが見つかっていたことがわかった。

今朝のニュースだが, 虐待されていた幼児が虐待されているにも関わらず健気にも自分が悪いと信じていたという痛ましいものだ. このニュースを見て涙を流せない人間は人の心が壊れている. こんなニュース, 平常心で報道出来たらむしろおかしい.

このニュースからおれが思い出したニュースがこれだ.

www.sankei.com

長男は食事も満足に与えられず、冷凍食品を解凍せずにそのまま食べるなど必死に生きようとしていた。

知人女性は「どうしてパパとママがいるときに、おなかが空いたと言えないの?」とたずねると、長男は「怒られるから」とつぶやいたという。

どちらのケースとも, 子供は親に虐待されながらも親のことを信じているということが共通している. どうしてこんなことが出来るのか信じられない.

まぶにゃんのスポンサーを打ち切った

まぶにゃんというYoutuberがいる.

早速だがまぶにゃんの面白さはこの動画を見ればわかるだろう. わかる人にはわかるがわからない人には一生わからないという方が正確かもしれない.

www.youtube.com

元BFプレイヤーで今はFortniteを中心にプレイして配信している. BF時代の戦績については以下が詳しい.

MAVnyanニコ生チャンネル-ニコニコミュニティ

高卒の現在26歳で, 越谷の実家住まい. まともな定職にはついたことがなく, 本人曰く社会に嵌められたとのこと. 本人曰く, 早生まれのせいで成長がみんなより遅れてしまい, 最初のつまづきをリカバリすることが出来なくなった結果, このような人生になってしまったとのこと. 早生まれの人間の自殺率の高さなどを根拠にして, 早生まれに自分の人生の責任を負わせている. Youtuberとしての収益が自立出来るレベルには高くないため今はまだ実家住まいをしており, 隣の部屋とはスライド式の薄いドアで仕切られただけの狭い自室を与えられ, そこで主に夜間に配信をしている. なぜ夜間かというとゴールデンタイムには家族との団欒をする必要があり, 夜間しかまとまった時間がないからだと言っている. 昼夜逆転によって一時は自律神経が壊れ, 味覚障害を起こした. その配信には毎日200-300くらいの通称まぶキッズが集まり, 彼がFortniteを始める際には「まぶ様ご武運を」とコメントするのが慣習となっている. また「もだめ」「しょうもな」など決まりゼリフがあり, 確かなプレイスキルもあって, キッズをひきつけている.

おれもまぶキッズの一人だ. おれは夜間の配信には健康上の理由で参加しないが, アーカイブを毎日楽しみにしている. 特に楽しみなのがゲームプレイのあとに2時間ほど行われる通称「お手雑」だ. お手雑は「お手々雑談」の略で, その名のとおりまぶにゃんの手がカメラに映りながらしょうもない駄菓子をつまみにビールを飲みながら雑談をするというものだ. その話題は流れの中で決まることが多いが, どの話題についてもまぶにゃん独自の着眼点を持って話が展開されるため, 京大院卒のおれにとっても聴き応えのあるものとなることが多い.

さて, Youtubeにはスポンサー機能というものがある. これは応援料として毎日500円を配信者に支払うものである. その対価としてしょうもないスタンプが使えるようになったり, コメントで強調されたりするが, ライブに参加していないおれにとっては何の魅力もない. しかしおれはまぶにゃんのお手雑を楽しんでいるし, なにより彼が自立してまともな時間に配信が出来る手助けになれば良いと思ってスポンサーとなった.

しかし今朝, 残念ながらスポンサーを打ち切った. 理由はお手雑をしなくなったからだ. Twitterで再三に渡ってお手雑をしなければ見限るという通告をしたにも関わらず, 意図的に無視し続けたため, 勢い的に切る他なくなった.

f:id:akiradeveloper529:20180608000349p:plain

なぜこのような記事にしようかと思ったかというと, おれが今まぶにゃんにしてあげられることはブログでまぶにゃんの紹介をして, 新しいファン獲得に繋げることしかないからだ. おれはもうまぶにゃんは見限ったけど, おれの読者の中からまぶにゃんのファンが生まれることを願っている.

PSAメソッドは中距離かつ手首だけでやるべき

先日紹介したn0thingのエイム理論

n0thingによるエイム理論 - テストステ論

によると, エイムにおいては精度の高い手首エイムが主役であり, センシ合わせは手首エイムによって狙った点を快適にフリック出来るかで行うということであった. この手首エイムを基準に決定したセンシに対して, 手首エイムの可動域の狭さを拡張する補助的存在でしかない腕エイムは, 慣れによって追従するというものであった. これは, 腕エイムはたかだか空間をエイムするものでしかないから, 仮に腕エイムにとってベストでないセンシであっても, 慣れで追従出来るレベルであることを拠り所とする. 一方で精度の高い調整を責務とする手首エイムには, 慣れだけでなくそもそもその人固有の感覚とマッチしてるかが求められる.

的との距離とエイム法の話をする.

www.youtube.com

この動画で述べられていることは,

  • 近距離では腕エイムを使う
  • 中距離では手首エイムを使う

ということであり, これは近距離では画面上での距離が大きくなるから, 腕エイムをしないと間に合わない場合が多いという単なる物理的な要請によるものだが, より頻度が高く, 当てにくいのは中距離の方なのだからここで手首エイムを使うことには合理性がある.

さて, 以上のエイム理論をもとにして以下の動画を否定する.

www.youtube.com

この動画で述べられていることは, 「PSAメソッドを行う時には近距離にして腕エイムをして快適か, 中距離にして手首エイムをして快適か」の両方の快適さによってセンシを絞り込んでいくということであるが, そのようなセンシは存在し得ない. 手首エイムを基準としたセンシを決めるのが手の大きさ, 腕エイムについては腕の長さだとして, ある異なるプレイヤーA,Bの手の大きさが同じ時に, 腕の長さが同じでは一般にないからである.

ではどうすればよいかというと, PSAメソッドを行う時もn0thingの理論に従い, 中距離の手首エイムだけで行うべきである. 手首エイムを基準してPSAメソッドによって導かれたセンシは理論的にはフリックにおいても最適であるから, n0thingのフリックによる調整法とも矛盾しない.

まとめ

  • 中距離で手首エイムだけで揺れろ. クロスヘアがもっとも安定するセンシが最強のセンシだ

n0thingによるエイム理論

おれが不思議に思ってることとして, おれがPSAメソッドによって良いと判断出来るのは880edpiかちょい下で, 本当にクロスヘアを静止させることが出来るのだが, 実際にこのセンシでやると弱いということがある. ピストルが特に弱く, アサルトでもローセンシなのに振りすぎになってしまうことも多い. 一発外したあとの打ち直しも弱い. 一言でいうと, エイムがレイジーになってしまう. これは800edpiに下げるとより顕著になる. しかし880edpiでは安定してボットの頭を撃ち続けることが出来る.

f:id:akiradeveloper529:20180527230339j:plain

一方で経験的に強いと言えるのは1000edpiかちょい下あたりのレンジで, エイムがシャープで狙ったところにクロスヘアを瞬時に移動出来るという感じがする. 1000edpiでは107KPMまでは出したことがあるが, 安定して頭を撃ち続けられるのは880edpiだと感じている.

このわけのわからない一見矛盾した現象に対してどう説明をつけるかが最近の課題だった.

www.youtube.com

この動画では, n0thingがエイム方法とセンシ調整について説明してる. 要旨を箇条書きする. 英語の聞き取りが間違ってるところもあるが概ねは合ってると思う.

  • 手首エイムの方が精度がいい. より小さいからコントロールが効く
  • 腕エイムとのハイブリッドは, 手首エイムの可動域を拡張するためのものにすぎない
  • 腕エイムは空間にエイムするもの. 手首エイムで調整
  • 手首エイムのトレーニングは手首の可動域内でのフリック
  • 腕エイムのトレーニングはより長いレンジの振り向きを何度も繰り返す
  • 腕・手首・Movementのすべてを組み合わせる練習もする
  • 左から右に振るより右から左に振る方が精度がいい. だからプリファイアは右に合わせる. 左から敵が出てきても対応出来るため
  • センシは手首エイムで壁打ちして決める. 400dpiの3では自分には高い. 自分の手首はもっと動きたがっている. と言った感じで決める
  • n0thingはOnlineでは1.8を使っている. LANでは1.7か1.65. 力が入ってしまうため

一言でいうと, n0thingは手首エイムをエイムにおける主人公だと考えていて, 手首エイムではすべてをカバー出来ないから仕方なく腕エイムとのハイブリッドをしている.

では元の話に戻ってなぜおれが880edpiで弱いかを考えると, これはPSAで腕を使ってしまっているからだと考えられる. PSAは手首に限定すべきだ. あくまでも手首にとって最適化されたセンシを選び, そのセンシで腕エイムを行う. 腕エイムを考慮してセンシを合わせてはいけないのだ. こう考えると, センシを上げた時にクロスヘアのコントロールがしやすく感じるのは, 細かく狙う時に自分が使ってる手首にとって適切なセンシだからだと納得出来る.

ここからはおれの考察になるが, ではなぜn0thingは680edpiという振り向き30cmの超ローセンシにも関わらず動画に見られるような大きな範囲の手首エイムが出来るのか?これを決めるのは「手首からマウスポインタへの距離(手の大きさやマウスの持ち方に依存)」「手首の柔軟性」の2つだと考えられる. 一般的には欧米人の方がアジア人より手が大きいため, これがアジア人の方がセンシが高い理由だと考えられる.

では, 手が小さいとハイセンシにならざるを得ず, 精度の良いエイムは出来ず, アジア人は欧米人に比べてFPSが弱いのかというとそれは成り立たないと思っている. まず, 手が小さければそれなりに精度も良くなる(手首の方が腕より精度が良いのと同じ理屈). 次に, 腕エイムをハイセンシで出来るため, これ自体は有利だから.

まとめると,

  • 手首エイムがエイムの主人公だ
  • 手首エイムでセンシを決めよう. フリックして心地よく狙えるか
  • 手首エイムの距離を補うために腕エイムをする. 腕エイムでざっくり, 手首エイムで微調整

おれはしばらく960edpiでやってみる.