gtnprn’s blog

Apex Legendsの攻略情報を掲載しています。

【Apex legends】リコイルのランダム性の解析 - オルタネータ初弾編【エーペックスレジェンズ】

Apex Legendsのリコイルには、規則的な成分とランダムな成分が存在します。この記事ではリコイルのランダムな成分がどのようなものか解析します。結論だけ見たいという方は、"3. 結果と考察"および"4. 結論"あたりを参照してください。

 

目次

 

1. 背景と目的

Apex Legendsでは、武器ごとに特定のリコイル(反動)パターンがありますが、毎回同じパターンにはならずランダムな要素が含まれています。そこでこの記事ではランダムな要素が一体どのようなものなのかを調査します。調査は何段階かに分け、最終的には、調査結果を用いてランダムな要素を取り除いたリコイルパターンや武器ごとのランダム性の強さなどを求める予定です。

2. 調査方法・条件

2.1 条件および選定理由

2.1.1 ゲーム側

以下の条件としました。

  • 使用武器はオルタネータ:適度にレートが低く、1発ごとに左右に振られるので、誤ったデータを見つけやすいため
  • FOVは最低の70:反動が画面に最も大きく反映され、画面端の歪みも最も少ないため。
  • 拡張マガジンLv3:リロードが少なく測定しやすいため
  • 標準ストックLv3:揺れを抑えるため、反動自体に影響はないと考えられるため
  • 2倍HCOG:どの武器でも装着可能で倍率が高いほうが反動が画面に大きく反映されるため
2.1.2 解析ソフト側

以下の環境で分析ソフトを作成しました。

  • Visual Studio 2019:C++で開発できOpenCVの情報も豊富に存在するため
  • OpenCV (4.2.0):画像認識・処理を行うことができるライブラリが必要なため

2.2 測定方法

2.2.1 撮影方法

以下のように撮影しました。

  • ADSした状態で、初弾の反動を100回測定する
  • ソフトウェア処理でパターンマッチを行うため、目印となるオブジェクトが常に画面内にあるようにする
  • 撮影中マウスは浮かせ、マウスの動きによる影響が測定データに入らないようにする
2.2.2 解析方法

以下の方法で解析しました。

  • 撮影した動画をOpenCVのパターンマッチを用いて1フレーム単位で解析する
  • 画面右下の残弾数をパターンマッチを用いて取得する
  • 画面の動きは目印となるオブジェクトが画面内のどの位置にいるかをパターンマッチを用いて取得することで認識する(測定精度は1pixel)
  • 残弾数が減ったタイミングの1フレーム前を打ち始め位置として、そこから7フレーム後に画面が動いた量を記録する
  • 測定結果をスプレッドシートでグラフ化するなどして、内容を解析する

3. 結果と考察

図のようなプロットが得られました。円や正方形ではなく、長方形をしています。したがって、ランダムな要素は横方向と縦方向別々に計算されていると推測されます。

※オルタネータの初弾は左上にリコイルします。グラフの横方向の値は左方向への動きを表しています。

f:id:gtnprn:20200104144928j:plain

図 初弾リコイルの分布 (オルタネータ100発分)

f:id:gtnprn:20200104145026j:plain

図 初弾リコイルの分布 (オルタネータ100発分) 分布範囲強調版

縦方向の反動と横方向の反動それぞれに分けてヒストグラム(グラフの縦軸は値の出現回数)を見てみると以下のようになり、中心に寄っているのではなく、範囲内に平均的に分布しているように見えることがわかります。

f:id:gtnprn:20200104145515j:plain

図 初弾の横方向リコイルのヒストグラム

f:id:gtnprn:20200104145612j:plain

図 初弾の縦方向リコイルのヒストグラム

4. 結論

オルタネータ1発目の反動を100回サンプリングしてランダム性を解析しました。
ランダムな要素は横方向と縦方向別々に計算されていると推測され、ランダムに動く範囲は長方形になります。
ランダムな要素はランダムに動く範囲内に平均的に分布しています。これは試行回数があまり多くなくても、ランダムに動く範囲の最大最小を発生させやすいことを表し、今後の測定であまり試行回数を増やさなくてもよいことを表します。

5. 今後の課題

今回は1発目のみを測定したため、2発目以降も同様か確認する必要があります。
その後オルタネータ以外でも同様かどうか確認します。