モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

<mini> Apex Legends のヘルメットのダメージ軽減率計算は 3.1 パッチ時にサイレントで調整されている(?)

 過去のデータをいろいろと調べていたら,そんな感じっぽいです。ただデータがまだ不十分なのと,若干丸め方法が判明していない問題があります。

 以下の現行のダメージ計算を知っている前提でこの記事は書いています。

mntone.hateblo.jp

よくいろいろな wiki で書かれているけど。

 白青紫ヘルメット順にダメージ 10%, 20%, 25% カットって言われているけど,昔はこれで正しい。

同じ動画の HS でこうなっているので,多分あってます。計算値通りなので。

 いわゆる,HS が 1.333 倍以下の場合,胴体よりもダメージが下がってしまう問題にサイレントで対応していると思われる。

【当時の倍率】

Hlm HS倍率が1.25 HS倍率が2.0
Lv. 1 1.25 × 0.9 = 1.125 2 × 0.9 = 1.8
Lv. 2 1.25 × 0.8 = 1 2 × 0.8 = 1.6
Lv. 3 1.25 × 0.75 = 0.9375 2 × 0.75 = 1.5

【現環境の倍率】

Hlm HS倍率が1.25 HS倍率が2.0
Lv. 1 0.2 + 1.25 × 0.8 = 1.2 0.2 + 2 × 0.8 = 1.8
Lv. 2 0.4 + 1.25 × 0.6 = 1.15 0.4 + 2 × 0.6 = 1.6
Lv. 3 0.5 + 1.25 × 0.5 = 1.125 0.5 + 2 × 0.5 = 1.5

 ヘッドショット倍率が 2 倍の場合は据え置きになるように計算式を作ったようです。どんな HS 倍率でも 1 を下回らないような計算式になっていますね。

  • 2019/10/2 チャージライフル登場 HS 1.25
  • 2019/11/23 ピースキーパー HS 1.5 → 1.25
  • 2020/5/13 マスティフ通常武器化 HS 2.0 → 1.25

 時系列を見ると,この齟齬が発生するのは 2019/10/2 のシーズン3 から。その前後から順に動画を見ていくと…

3.1 パッチ前後が怪しい

 いろいろ動画を漁っていると,3.1 パッチ前後で値が違うことに気づく。丸め処理はテキトーです。正しい演算式は全データをきちんと正しく取れない以上調べるのが厳しいです……

 ここで,小柄の青ヘルだけは部位倍率計算後の丸めが切り捨てであると推測すると,

となり,完全に表示と一致する。例えば,

  • [10] R-99 SMG で,小柄キャラの紫ヘルに対して,round(⌊12 × 1.5 × 0.75⌋ × 1.05) = round(⌊13.5⌋ × 1.05) = round(13.65) = 14 (https://youtu.be/Iukd9VyLWAs?t=586)
    ※ 現行方式の round(round(12 × 1.25) × 1.05) = round(15.75) = 16 では絶対にでない値である。

 また,通常キャラは切り上げ,ただし小数点第1位以下はみていない? 小数点第2以下切り捨ての関数を f(x) とする。

 小柄・鉄壁は後から追加されており,通常キャラとの分岐によって計算式に齟齬が考えられる可能性はあり。現行方式としてはなぜか小柄だけ特殊なケースがみられる(四捨五入だったり五捨五超入だったり)が詳細はわからないのでなんとも言えないが。

 次に,以下は現行のダメージ計算に当てはめたもの。

  • [11] ロングボウDMRで,鉄壁キャラの紫ヘル(デスボ確認済み)に対して,round(round(55 × 1.575) × 0.85) = 74 (https://youtu.be/JWzPaT80awI?t=453)

で,2019/11/15 にはすでに修正されているっぽい。 おそらく 3.1 パッチでヘルメットの軽減率調整が入ったと推測できる。

 ちょうど,3.1 パッチは射撃訓練場が来ており,厳密にユーザーがダメージ値を知ることができること,そして射撃訓練場はシーズン 3 リリース時にはすでにできており,このダメージの齟齬(胴より頭のほうが低い)を回避するために射撃訓練場は遅れてリリースされたとか? 深読みしすぎですかね。

 チャージライフルのダメージテストしているときに気づいてる可能性はあるので,そこでテスターから報告があってリリース前に射撃訓練場を封印して,パッチ 3.1 で対応と。ウィングマンの倍率調整も実はナーフ(2.15 → 2.1 倍)にみえて,内部計算値によってパッチ前後で使用感が変わらないように,シーズン3 のほうを 2.15 という値にあえてしていて,本来 2.1 倍でリリースする予定だったとか?

動画募集中

 まだ確信できるほどの情報量がないです。ただシーズン7からシーズン8では自分が全部実測として測ったものがあって,現行方式は一番最初に貼った記事の計算式で間違いないのは確認済みですし,シーズン3 パッチ時点で R-99 SMG のダメージが現行パッチのダメージより小さいことは明白(仮に現行パッチの 11 ダメージを過去の計算式に当てはめると小柄の紫ヘルメットは round(⌊11 × 1.5 × 0.75⌋ × 1.05) = round(⌊12.375⌋ × 1.05) = round(12.6) = 13 ダメージなはずですが,実際の現在のゲーム内では round(round(11 × 1.25) × 1.05) = 15 ダメージです)。

他にも腕に対するダメージが胴体と同じになったり

 ダメージに関するサイレント調整として,腕・脚でダメージが下がっていたのが,脚のみでダメージが下がるようになっています。

 シーズン2 あたりまでの動画では明らかに胸の高さを撃っているのに,ダメージが胴体より減衰すること,そして現行パッチでは何度腕を打っても胴体と同じダメージが出ることからこれもサイレント調整されているかと。

 ちょうど小柄の腕が胴体と同じになったイベント「古の理」以降とは思われます(パッチノートで limb shots を使っており,まだ腕の概念があったと思われます)。

 2020/4/23 時点で腕っぽい判定はありますね。この高さで脚に当たることはほぼほぼ 0 なので。 https://youtu.be/oJDE9E49I9o?t=319

 多分これはシーズン5 からかな。腕っぽいところに当たっているのに胴体判定になっているので。 https://youtu.be/iBM_l1vYZko?t=225

 シーズン5には弾抜けバグがあり,胴・腕判定関連でズレが起こって,解決しづらいから「ええぃ! 胴体と腕同じダメージにしてしまえ」の緊急パッチがそのまま現在も続いているのかもしれませんね。ディヴォーションも 17 to 16dmg の緊急対策パッチで今後調整を検討する,ってのが公式対応でしたが,そのままのダメージが継続していますもんね。Apex Legends は結構緊急対策が本番パッチレベルになることの前例もあるので,胴・腕判定周りもそんなところかも?

 ちなみに弾抜け関連は,サーバー側でレイテンシーの違いを吸収するために計算をしているはずですが,そのバグによって起こったと推測(多分開発環境ではレイテンシーがほぼ 0 のみの環境でテストされ,顕著にこの問題が発生しなかった)され,その緊急対応に時間がかかると判断したため,胴と腕を同じダメージとして実装するパッチをまず実装したって可能性が高いですね。

 まあ 3 次元空間と,レイテンシーによる時間のずれで,4 次元空間での補正を行う必要がありますし,Apex のキャラは脚が早くなるキャラもいるのでとても大変ですしね……

 ちなみに腕が理由で抜けているのは過去判明しています。

 そして 15 日には緊急パッチ(サーバーサイド)で対応しています。

 ただ対応したと書いてあるだけでどう直したか,とは書いていませんね。

answers.ea.com

 trello の方でも特に。

https://trello.com/c/PkO81tuu

 こちらの問題は引き続き調査中です。