この投稿は pchw さん主催の Vainglory Advent Calendar 2016 19日目の記事です。
昨日は nakazu225 さんの How to start VG streaming-これからVG配信を始めたい初心者の為の入門書- でした。
普段ほぼ大乱闘モードしかしてないのでハルシオンフォルドの皆様初めましてという感じなのですが、Vainglory のダメージ計算についてさっくりまとめてみようと思います。
先週 Vainglory 2.0.0 がリリースされ先ほど 2.0.1 を確認しましたが、さすがにちょっと追いかけ切れませんでしたので一部 1.24.0 ベースの話になっておりますがご了承ください。
TL;DR
- Vainglory の計算式を色々まとめてみるよ
- 手計算めんどくさいんで Google Spread Sheet 作ってみたよ
Vainglory の計算式まとめ
以下の計算式については全部元ネタサイトの式そのままです。計算するのに不便なので単位とか若干変えているものもあります。
参照元のサイトの方が情報は多いですし、こちらの認識不足等で間違ってるものもあるかもしれませんので、英語の分かる方は元ネタサイトも見て頂いた方が良いかなと思います。
基本攻撃によるダメージの計算
基本攻撃によるダメージ計算は以下のようになっています。
元ネタは http://www.vaingloryfire.com/vainglory/guide/complete-guide-to-vainglorys-hidden-stats-and-calculations-by-an-engineer-4311
です。
武器威力 = ヒーロー武器威力 + アイテム武器威力 基本攻撃ダメージ = 武器威力 / (1 + 敵のアーマー力 / 100) 貫通ダメージ = (アーマー貫通% / 100) * 武器威力 + (1 - (アーマー貫通% / 100)) * 基本攻撃ダメージ クリティカルダメージ = 貫通ダメージ * (150 + アイテムクリティカルダメージ) 期待ダメージ = 貫通ダメージ * (1 - クリティカル率% / 100) + クリティカルダメージ * (クリティカル率% / 100)
クリティカル率が > 0 の場合、クリティカル率に応じてクリティカルダメージが発生します。クリティカル率が 0 の場合、クリティカルダメージは発生しませんので貫通ダメージがヒーローのダメージとなります。
例として、レベル12 Vox (武器威力149) が Sorrowblade、Tyrant's Monocle、Piercing Spear を装備し、レベル12 Ardan(アーマー96) に攻撃する場合は以下のようになります。
武器威力 = 149 + (150 + 50 + 15) = 364 基本攻撃ダメージ = 364 / (1 + 96 / 100) = 185.71428571428572 貫通ダメージ = (8 / 100) * 364 + (1 - 8 / 100) * 185.71428571428572 = 199.97714285714287 クリティカルダメージ = 199.97714285714287 * ((150 + 20) / 100) = 339.9611428571429 期待ダメージ = 199.97714285714287 * (1 - 40 / 100) + 339.9611428571429 * (40 / 100) = 255.97074285714288
セレス等一部のヒーローは、クリスタル力に応じて追加ダメージが発生します。
クリスタルダメージの計算は、以下のアビリティと同じですのでここでは省略しますが、青ダメージはシールドでダメージが軽減されるようですので、相手に応じて防具を積む必要があります。
また、武器ダメージについては7日目の Kengo_vg さんの The comprehensive weapon build guid が詳しいのでそちらをぜひご覧ください。
攻撃1回あたりに必要となる時間
攻撃クールダウンは次の攻撃が可能になるまでの時間で、ヒーローとアイテムの攻撃速度と、各ヒーロー固有の基本攻撃クールダウン、攻撃ディレイ、ノースタッターステップペナルティ、攻撃スピードモディファイアから求められます。
元ネタは http://forums.vainglorygame.com/index.php?threads/109570/ です。フリッカーの数字は無かったのでこちらで出してます。
まず各ヒーロー固有の数値を挙げます。
ヒーロー | 基本攻撃クールダウン | 攻撃ディレイ | ノースタッターステップペナルティ | 攻撃スピードモディファイア |
---|---|---|---|---|
Adagio | 0.8 | 0.25 | 0.2 | 100 |
Alpha | 0.8 | 0.25 | 0.2 | 100 |
Ardan | 0.8 | 0.23 | 0.2 | 100 |
Baron | 1 | 0.5 | 0.2 | 60 |
Blackfeather | 0.8 | 0.3 | 0.2 | 100 |
Catherine | 0.8 | 0.3 | 0.2 | 100 |
Celeste | 0.8 | 0.3 | 0.2 | 100 |
Fortress | 0.8 | 0.3 | 0.2 | 100 |
Glave | 0.8 | 0.3 | 0.2 | 100 |
Gwen | 0.8 | 0.3 | 0.2 | 100 |
Flicker | 0.8 | 0.3 | 0.2 | 100 |
Joule | 0.8 | 0.23 | 0.2 | 100 |
Kestrel | 0.8 | 0.3 | 0.2 | 100 |
Koshuka | 0.8 | 0.3 | 0.2 | 100 |
Krul | 0.7 | 0.29 | 0.2 | 100 |
Lance | 0.9 | 0.5 | 0.2 | 50 |
Lyra | 0.7 | 0.3 | 0.2 | 100 |
Ozo | 0.8 | 0.3 | 0.2 | 100 |
Petal | 0.8 | 0.3 | 0.2 | 100 |
Phinn | 1.05 | 0.3 | 0.2 | 100 |
Reim | 0.8 | 0.3 | 0.2 | 100 |
Ringo | 0.8 | 0.3 | 0.2 | 100 |
Rona | 0.5 | 0.29 | 0.2 | 100 |
Samuel | 0.8 | 0.3 | 0.2 | 100 |
SAW | 0.8 | 0.3 | 0.2 | 100 |
Skaarf | 0.8 | 0.3 | 0.2 | 100 |
Skye | 0.8 | 0.29 | 0.2 | 100 |
Taka | 1.1 | 0.29 | 0.2 | 100 |
Vox | 0.8 | 0.3 | 0.2 | 100 |
攻撃クールダウンにかかる時間は以下のように求められます。
各攻撃には 0.2 秒のスタッターステップ可能時間があり、スタッターステップを行うとクールダウンを短縮することができます。
攻撃クールダウン = 基本攻撃クールダウン / (ヒーロー攻撃速度% + アイテム攻撃速度% * 攻撃スピードモディファイア%) 攻撃クールダウン秒 = 攻撃クールダウン + 攻撃ディレイ 攻撃クールダウン秒 (スタッターステップ) = 攻撃/秒 - 0.2
例として、レベル12 Vox (攻撃速度 151) がトルネードトリガーを装備した場合以下のようになります。
攻撃クールダウン = 0.8 / ((151 + 75 * (100 / 100)) / 100) = 0.3539823008849558 攻撃クールダウン秒 = 0.3539823008849558 + 0.3 = 0.6539823008849558 攻撃クールダウン秒 (スタッターステップ) = 0.6539823008849558 - 0.2 = 0.4539823008849558
1攻撃あたりの期待ダメージとクールダウンが分かれば DPS 計算ができます。(例は省略)
DPS = 期待ダメージ / 攻撃クールダウン秒
アビリティ攻撃によるダメージ計算
クリスタルによるアビリティ攻撃のダメージ計算は以下のようになっています。
元ネタは武器ダメージと同じく http://www.vaingloryfire.com/vainglory/guide/complete-guide-to-vainglorys-hidden-stats-and-calculations-by-an-engineer-4311
です。
2016/12/19 20:30 追記 以下間違いがあったので修正しています 1. アビリティの武器威力はアイテム武器威力のみです 2. アビリティのアイテム武器威力によるダメージは赤(アーマー防御)です
クリスタル力 = アイテムクリスタル力 * (1 + クリスタル増幅% / 100) 武器威力 = アイテム武器威力 アビリティ力 = 基本ダメージ + クリスタル力 * クリスタル率% + 武器威力 * 武器率% アビリティダメージ = アビリティ力 / (1 + シールド / 100) * (1 + クリスタルダメージ増幅% / 100) 貫通ダメージ = (シールド貫通% / 100) * アビリティ力 + (1 - (シールド貫通% / 100)) * アビリティダメージ
例として、レベル 12 Blackfeather が Shattergrass と Broken Myth を持っていて レベル 5 の B スキルで、Aegis を装備したレベル 12 Ardan に対して攻撃した場合は以下のようになります。
クリスタル力 = (150 + 70) * (1 + 0 / 100) = 220 武器威力 = 160 アビリティ力 = 240 + 220 * (180 / 100) + 160 * (100 / 100) = 796 アビリティダメージ = 796.0 / (1 + 211 / 100) * (1 + 0 / 100) = 255.9485530546624 貫通ダメージ = (10 / 100) * 796 + (1 - (10 / 100)) * 255.9485530546624 = 309.9536977491962
また上記に加え Blackfeather が Clockwork と Broken Myth のスタックを 7 持つ場合、クリスタル力増幅とクリスタルダメージ増幅が加わり以下のようになります。
クリスタル力 = (150 + 70) * (1 + 30 / 100) = 286 武器威力 = 0 アビリティ力 = 240 + 286 * (180 / 100) + 0 * (100 / 100) = 754.8000000000001 アビリティダメージ = (754.8000000000001 / (1 + 211 / 100)) = 242.70096463022512 貫通ダメージ = ((10 / 100) * 754.8000000000001 + (1 - (10 / 100)) * 242.70096463022512) * (1 + 35 / 100) = 396.7796720257236
なおクレイグのBやケストレルのA/C等の一部のアビリティや武器率による計算には武器ダメージが発生します。
武器ダメージが発生する場合、ダメージ軽減はシールドではなくアーマーが使用されるようです。
(青ダメージはシールド、赤ダメージはアーマーということのようで、武器ダメージのクリスタル率は青ダメージになるが、クリスタルダメージの武器率も青ダメージになるようです。全ヒーローのアビリティについて検証してないので若干怪しいですが。)
アビリティクールダウン時間
アビリティクールダウン時間は各ヒーローのアビリティごとに固有の値(ゲーム中で見れるので省略します)と、アイテムのクールダウン速度から以下のように計算されます。
元ネタは http://forums.vainglorygame.com/index.php?threads/4385/ です。
クールダウン秒 = アビリティクールダウン * (1 / (1 + アイテムクールダウン速度% / 100))
例として、レベル 12 Blackfeather が Clockwork を購入した場合のレベル 5 の B スキルのクールダウン秒は以下のようになります。
クールダウン秒 = 3.5 * (1 / (1 + 40 / 100)) = 2.5
計算用 Google Spread Sheet
簡単にダメージ計算できる用に Google Spread Sheet を作ったのでリンクを貼っときます。ヒーローとレベル、アビリティレベルとアイテムを選択したらダメージが出るようになっています。一応セルにメモを付けていますが何が何やらやらになっている部分も多いので上の計算式まとめと併用ください。
一部対応していない項目については未対応シートに記載しております。体力喪失系や反射ダメージ、追加ダメージ等のスプレッドシートだとちょっと厳しい項目は入れていません。
セルの保護とかもしてますし、マスターのファイルは別にありますので好きに使って頂いて構いませんが、共有ドキュメントになっておりみんなで同時に書き込める状態になっていますのでじっくり使いたい場合はコピーして使ってください。
なお、こちらの解釈間違いや検証漏れ転記漏れ等々で数字が間違っている場合はあると思います。申し訳ありませんが間違ってたらすみません。
Spread Sheet はバージョン 1.24.0 のデータが元になっています。ヒーローの細かい数字とかもちょいちょい変わってるようですので最新版の数字が欲しい方はコピーして編集してください。
Spread Sheet 中の App Script についてはスクリプトを作る Python スクリプトを Gist に置いてますので編集する際はこちらもどうぞ。
最後に
アビリティについては単純に計算できない項目も多く、ヒーロー固有の能力も大きく影響しますのでダメージ計算だけで強さを測れるものでもないですが、知ってると色々便利かなーと思います。
本題と関係ありませんが、手元に(もっと簡単な計算しかしてませんでしたけど)OpenOffice のドキュメントがあったので Google Spread Sheet に変換して機能追加したらすぐできるかなと思ってネタを決めたのですが、思っていたより大変だったので普通に Web アプリでも作っとけば良かったかなと言う感じです。
本当はスプレッドシートだけでうまいことやりたかったのですが、なかなか計算がややこしく結局 JavaScript 使うハメに陥ってしまいました。中身もぐっちゃらぐっちゃらなので公開する前に整理しようかなと思ってたのですが、2.0.0 がリリースされて色々変えるところも多いのでとりあえず諦めました。
来年初頭に API もリリースされるそうなのでツール作りは捗りそうな感じですね。
明日の Vainglory Advent Calendar 2016 は mirai64335 さん の「1年以上vaingloryを遊んできて今考えること」です。