チャンピオン毎のダメージ増加率の可視化

はじめに

チャンピオン毎のダメージ増加率について検討しました。

前回の記事では、チャンピオンのスキルに着目して特徴を表すことができましたが、どれくらいダメージが出るのかについては、表せていなかったため、それについて検討しました。

スキルの効果に着目したチャンピオンのベクトル表現と類似度

ダメージについて着目することで、序盤にダメージが増加する、終盤にダメージが増加するということを表せるため、チャンピオンの特徴をさらに表現できるようになります。

今回の記事では言及していませんが、将来的には、戦闘起きた場合にどちらが勝つか、コアアイテムの完成がダメージにどれくらい影響を与えるのかについても検討できるようになりますが、今回はどのように計算しているかを紹介することが目的となります。

まずは、記事全体の流れから。

今回はこんなものを作りました。

すべてのチャンピオンにおいて、リプレイで使用したコンボを抽出し、そのときのレベル、ビルドでどれくらい通常攻撃とスキルのダメージをチャンピオン単体に出すことができるのかを時系列順に表せるものです。

ただし、このダメージはリプレイで実際に出しているダメージではなく、こちらで設定した環境において、出すことのできそうなダメージ を意味していることに注意してください。

なので、正確なダメージではなく、ダメージの目安と考えていただくのがよいかもしれません。

ともあれ、どの時間帯で、どれくらいダメージが出せそうかということがわかるため、チャンピオンの特徴があらわれていると考えられます。

そして、そのダメージをヒートマップにより可視化することで、チャンピオンの特徴と期待した結果が得られているかについての考察と感想を述べます。

可視化の流れは以下のとおり。

先ほどのコンボ時のダメージを3,6,9,12,15,18秒間で計測します。

そして、最大ダメージを更新した際の倍率に変換し、5分毎にヒートマップとして表します。

以降では、どのようにダメージを計算しているか、また計算時の注意事項を書いていきます。

ダメージ計算

コンボ抽出方法

スキルの使用判定

スキルの使用判定として、リプレイでのスキルアイコンの画像を使用しました。

スキルのアイコンは以下のように変化します。

スキル使用可能状態

スキル使用不可能状態

クールダウン状態

アイコンの状態を監視していれば、いつ、どのスキルを使用し、クールダウンになったかがわかります。

また、クールダウン以外にも、再使用可能を表す状態もあります。

継続スキル使用中状態

スキル再使用可能状態

このように枠がかわることもあるので、これも監視しています。

監視の間隔は、 0.1 秒です。

0.1秒毎にクールダウンになったか否かを監視し、クールダウンになった場合にはスキルを使用したと判定します。

パッシブについては、クールダウンになるスキルばかりだけではないため、この方法ではわかりません。

このため、各チャンピオン毎にコンボから判断できるものに関しては、他のスキルの状態から判断しています。

たとえば、タロンのパッシブは、スキルの当たった回数+通常攻撃で発動するため、QとWがコンボにある場合は、パッシブも発動していると判断しています。

間隔設定

コンボとしてまとめるためには、どこまでをコンボとするかについて考える必要があります。

上述したように、ここでは、3,6,9,12,15,18 秒の間でどれくらいダメージを出せるのかについて考えました。

アサシンのように短い戦闘時間が強かったり、マークスマンのように長い戦闘時間が強かったりするチャンピオンがいるため、区間はいくつか用意しました。

なんで3秒ごとかについては、電撃の存在があります。

電撃の発動を意識したダメージトレードとそれ以上の時間で戦闘を行った場合を知りたかったため、間隔の最低値は3秒とし、その倍数を設定しました。

スキルの使用状況を時間軸上に表すと以下のようになります。

最初のスキルが使われてから、間隔の秒数の間使われたスキルを記録します。

上図では、間隔を9秒にした際の様子を表しています。

そして、秒数が経過すると、それをコンボとして扱い、そのダメージの合計をスキルでのダメージとして出力しています。

2つ以上のスキルが使用されている場合は、コンボとして、ダメージ計算を行い、1つのみの場合はコンボとして扱いません。

通常攻撃のダメージは、 (間隔の秒数)*(攻撃速度)*(攻撃力) として出力しています。

要は、コンボ抽出時のステータスで、通常攻撃を行っている状態を想定しています。

ただし、スキル使用時に攻撃速度や攻撃力が増加する場合があります。

このときは、スキルが使用された時点から増加後の攻撃速度、攻撃速度のダメージを用いて計算を行います。

この通常攻撃の計算では、通常攻撃タイマーキャンセルやスキルの詠唱時間を考慮していないことに注意してください。

ステータス、ビルド判定

ステータス、ビルドに関しては、Riot Games API の情報から取得しました。

Riot Games API では、試合毎にスキルのレベルアップの時刻、アイテムの購入履歴などがイベントとして管理されています。

コンボが判定された試合時間がわかると、それまでのイベントをたどれば、そのときのステータスとビルドを求めることができます。

想定外のこと

コンボのダメージを求めるうえで以下のことについては、内容が複雑になってしまうため、今回の記事では対象外としています。

1. 自身のHP: 常にHP 100%

2. 相手のステータス: 常にHP 100%, AR 0, MR 0, HP0

3. ルーン、サブルーン: ルーンでのステータス変化、追加ダメージはすべて0。ただし、シャード( アダプティフォースや HP などから選べるもの)は対象内。

4. アイテムでの追加ダメージ: ルーデンエコーやシーンのようなクールダウンの存在する追加ダメージは0。(※ リカーブボウのように通常攻撃に追加されるダメージについては対象内)

5. CS、キル数: すべて0

6. アフェリオスのメイン武器、サブ武器: 追加ダメージは0

7. サイラスのアルティメット: ダメージは0

ダメージ計算方法

ダメージ計算は以下のサイトを利用しました。

https://docs.google.com/spreadsheets/d/1NrhB6aNDLuAZv8BYQzAIPZYgXLlmXOHsoCqPxm0mfWw/

パッチのバージョンは10.14 のときの値を使用しています。

こちらのサイトでは、ビルドやレベルを細かく設定することができ、そのときの通常攻撃のダメージやスキルでのダメージが計算できます。

抽出したステータス、ビルドを入力し、そのときの通常攻撃、スキルのダメージを出力し、コンボ時のダメージとしています。

ダメージの計算はこちらのサイトの仕様に従います。

このサイトでは、Steroid フラグがあって、これをTrueにすると、スキルが変化するもののダメージを計算することができます。

たとえば、ブラッドミアのQは、2回使用すると、強化Qに変化します。

Steroid Q をTrueにすると、強化Qのダメージを得られます。

このSteroid をTrueにする条件としては、パッシブと同様にスキル使用状況、通常攻撃から判断できるものに関しては、Trueにして計算を行っています。

具体的には、先ほどのブラッドミアの例だと、3回目のQが使用可能になってから2.5秒以内に使用していれば強化Qになるといったように。

ここからは余談ですが、Sheets API を使って、データの入出力を行なっていたのですが、期間内に使用できる回数が決められていたり、入出力そのものに時間がかかったりと、全チャンピオン分回すのはなかなかに大変でした。

最終的には、速く実行できるよう環境を改善できましたが、意外なところに壁は存在しました。個人的に一番学びが多かったところです。

対象にした試合

時間帯によってどれくらいダメージを計算するにも、育っているか、育っていないかでダメージが変わってくるため、この条件は揃える必要があります。

ここでは、チャンピオンを象徴するデータがほしいため、見本となるような試合に着目すべきと考えました。

そこで、対象の試合として、高レート帯での対象のチャンピオンが活躍している試合を選びました。

このような試合は、動画共有サイトにアップロードされていることが多く、視聴者は対象のチャンピオンが活躍している様子を学習したり、コンボ、ビルドを参考にしていることから、見本となる試合といえる。

以上のことから、動画共有サイトにアップロードされているリプレイ動画の試合を対象としました。

試合毎の偏りを少なくするために、それぞれのチャンピオンに対して5試合分を対象としています。

可視化方法

ここまでの説明により、全チャンピオン分の試合時間毎のダメージの目安を求めることができるようになりました。

これをグラフとして目で見てわかる形にしようと思ったのですが、それを載せようとすると、148 チャンピオン+Rhaast, ShadowAssassin、6つの間隔、各5つずつの試合の数、グラフを載せなければなりません。

これを載せたとしても、まとめきれず、考察できませんでした。

なので、1チャンピオン分、1つの何かで表現できないかと考えた結果、最大ダメージを更新した際のダメージの増加率をヒートマップで載せることにしました。

基準値からどれだけ増えたかを明確にするため、実際のダメージではなく、増加率を用いています。

作成したヒートマップの例は以下のとおり。

縦軸が間隔を表していて、横軸が試合時間を5分毎に30分まで表しています。

下にいくにつれて、戦闘時間が長くなり、右にいくにつれて、試合時間が遅いことを表しています。

色で表しているものが最大ダメージを更新した際のダメージの増加率(0-1 = 0%-100%)になります。

ヒートマップとダメージの増加率の関係は以下のとおり。

5試合分あるので、その相加平均を色として表しています。

試合によっては、存在しない時間帯があるため、集めた試合の終了時間によって分母を変えています。

具体的には、集めた試合の終了時間が24分、18分、27分、35分、24分だった場合、10-15分はすべての試合に存在するため 5 で割り、25-30分は2つの試合しか存在しないため、2で割るといったことをしています。

ダメージ増加率の最大値は100%としており、100% を超えるものは100%と同じ色で表現しています。

基本的に100%を超えることはありませんでしたが、ダメージ計算の仕様上、時間をかけてダメージを与えるスキルでも、スキル使用時にすべてのダメージを与えたものとして計算します。

具体的には、ビクターのR やルシアンのRがあります。Rの合計ダメージを使用時にすべて与えたと判断してしまうため、短い間隔の場合だと100%を超える場合が存在します。

この状況は実際に起こることは少なく、仮に最大値を先ほどの例ものに合わせてしまうと、他の起こりうる値の違いがわかりづらくなるため、100%と同じ値に設定しています。

ヒートマップ一覧

148チャンピオン+Rhaast, ShadowAssassinのヒートマップを一覧しています。

ケインは、Rhaast, ShadowAssassinどちらかの計算しかできず、ダメージを得られなかったため、ヒートマップを作成できませんでした。

前述したとおり、10.14のときに出力したため、リリア、ヨネは含まれていません。ご了承ください。

色の濃さは全チャンピオン共通です。なので、チャンピオンが違っても、色が同じだった場合には、同じぐらいダメージが増加しているととらえてください。

チャンピオン ヒートマップ
Aatrox

Ahri

Akali

Alistar

Amumu

Anivia

Annie

Aphelios

Ashe

AurelionSol

Azir

Bard

Blitzcrank

Brand

Braum

Caitlyn

Camille

Cassiopeia

Chogath

Corki

Darius

Diana

Draven

DrMundo

Ekko

Elise

Evelynn

Ezreal

Fiddlesticks

Fiora

Fizz

Galio

Gangplank

Garen

Gnar

Gragas

Graves

Hecarim

Heimerdinger

Illaoi

Irelia

Ivern

Janna

JarvanIV

Jax

Jayce

Jhin

Jinx

Kaisa

Kalista

Karma

Karthus

Kassadin

Katarina

Kayle

Kayn

No Data

Kennen

Khazix

Kindred

Kled

KogMaw

Leblanc

LeeSin

Leona

Lissandra

Lucian

Lulu

Lux

Malphite

Malzahar

Maokai

MasterYi

MissFortune

MonkeyKing

Mordekaiser

Morgana

Nami

Nasus

Nautilus

Neeko

Nidalee

Nocturne

Nunu

Olaf

Orianna

Ornn

Pantheon

Poppy

Pyke

Qiyana

Quinn

Rakan

Rammus

RekSai

Renekton

Rengar

Rhaast

Riven

Rumble

Ryze

Sejuani

Senna

Sett

Shaco

ShadowAssassin

Shen

Shyvana

Singed

Sion

Sivir

Skarner

Sona

Soraka

Swain

Sylas

Syndra

TahmKench

Taliyah

Talon

Taric

Teemo

Thresh

Tristana

Trundle

Tryndamere

TwistedFate

Twitch

Udyr

Urgot

Varus

Vayne

Veigar

Velkoz

Vi

Viktor

Vladimir

Volibear

Warwick

Xayah

Xerath

XinZhao

Yasuo

Yorick

Yuumi

Zac

Zed

Ziggs

Zilean

Zoe

Zyra

 

考察と感想

Rでのダメージとステータス増加の有無

Rにダメージや攻撃力か攻撃速度の増加する効果を持っているチャンピオンは、5-10分の間で増加率が大きくなっていることがわかります。

Rの有無は、ダメージ増加に大きく影響していると考えられます。

一方で、ツイステッドフェイトやタリヤのようなRにダメージやステータス増加効果を持たないチャンピオンは、0-5分の間でダメージ増加率が大きいことがわかります。

これは、序盤に有利を築き、サイドレーンに介入することで、スノーボールを狙うという動きが強いことから、序盤にダメージの増加率が高くなることは納得できます。

タリヤは5-10分の間でも増加率は大きいですが、ジャングルアイテムの完成の影響が大きそうです。

マークスマン

マークスマンは序盤に弱く、終盤に強くなるというイメージを持っているため、20-25分、25-30分の間に増加率が大きくなると予想していましたが、この間で大きくなっているチャンピオンはアッシュとトゥイッチぐらいでした。

どちらのチャンピオンも3コア目にインフィニティエッジ(+BFソードやロングソードのような攻撃力増加アイテム)を購入したタイミングで、ダメージが大きく増加しています。

後半でもダメージを増加することのできるインフィニティエッジは強力なアイテムであるといえそうです。

他のマークスマンは、5-10分の間で大きく増加していることが多いことから、Rの習得に加えて、1st アイテムであるBFソードやバーサーカーブーツの購入が大きく影響していると考えられます。

そのあとのジール系のアイテムなどは、ダメージこそ増加しますが、上記アイテム購入タイミングよりは増加していないように見えます。

理想どおりにゴールドと経験値が集まっている試合を選んでいることから、ダメージの増加が前倒しになっている可能性もありますが、思っていた以上に前半でダメージが大きくなっています。

次に、相手のHPを0としていることから、ルインドキングブレード(以降、王剣)の完成時に増加していないのも大きそうです。

ルシアンやヴェインはRを使った際にダメージが増加していますが、それ以降増加率が大きくなっていないのは、王剣のパッシブの追加ダメージが0であることが影響していると考えられます。

また、 コグマウ、カイサ、ヴェインのように相手の体力に応じて追加ダメージが発生するスキルの効果も0となっており、後半にダメージが増加するはずが、それほど増加していないことがわかります。

状況を設定し、HPを考慮できれば、これらのチャンピオンの正しいダメージ増加率を求められそうです。

本来はグインソーを購入したタイミングで、On-Hit Effect の回数が増えるため、ダメージが大きく増加しているはず、と予測できます。

スタック

CSやキルの数を考慮できていないため、キンドレッド、ベイガー、ナサス、セナのようなチャンピオンが後半にダメージが増加していないことが気になります。

スタックをいくつためられているかということを考慮できればよいのですが、何分の時点でどれくらいたまっていれば、良しとするのか、といった部分の検討が必要になってくるため、正確なダメージを求めることは難しそうです。

スタックがいくつたまっているかという仮定をしたうえで、求めるといったことが必要になってきそうですが、条件分岐が増えるので、まとめ方を考える必要が出てきそうです。

トップレーナー

トップレーナーに適正のあるチャンピオンは良い結果ではないと考えています。

フィオラやシェンのように相手の最大体力に応じたダメージの効果は0となっているので、増加率は低くなっています。

さらに、シーンのパッシブを考慮できていないことから、トリニティフォース完成時のダメージ増加を考慮できておらず、実際の試合ではダメージが増加しているのに、ヒートマップでは増加していないように見えてしまっています。

これらを正確に求めようとした場合には、アイテムの使用状況についても取得する必要があるのと、他と同様に状況設定が必要です。

物理・魔法防御貫通

物理防御、魔法防御について、貫通アイテムの有無でダメージの増加は変わってきそうに思います。

たとえば、序盤のセレイテッドダークやソーサラーシューズは防具を積んでいない相手に有効であると考えられますが、今回は防御貫通効果が0であるため、これらの強さを表せていません。

こちらについても状況設定が必要で、設定したうえで、モレロノミコンとヴォイドスタッフでどれくらいダメージが違うのかを求めるとおもしろい結果が得られそうです。

おわりに

 チャンピオン毎のダメージ増加率を可視化しました。

想定外のことに影響の少ないチャンピオンに関しては、おおむね期待どおりの結果が得られ、チャンピオンの特徴を表せているように見えます。

一方で、想定外のことに影響のあるチャンピオンに関しては、期待した結果を得られていないように思います。

具体的には、トリニティフォースや王剣のダメージを考慮できていないため、これらのアイテム完成時に状況によってはもっとダメージが出ているはずで、それを表せていないのは良い結果とはいえないでしょう。

今後は、状況を明確にすることで、想定外のことを減らし、どれくらいダメージが出るかを検討できればと思っています。

ただ、想定外のことを洗い出し、その状態での結果を示せたのは今後の検討にとって有益であるとも考えています。

たとえば、今回はルーンの効果を含んでいませんが、ルーンを考慮した場合、どの部分を強化できたのかというところが明確になります。

具体的には、電撃を選択した場合には、3秒間のダメージが伸びることが期待でき、征服者の場合は6秒以上のダメージが伸びることが期待できます。

ルーンなしの状態での強みをさらに伸ばすか、弱みを補うのかといったところを定量的に示せるため、ルーン選択の材料にできそうです。

まとめ方について触れると、どこ時間帯で増加するのかについてはわかりそうですが、なぜそのような結果になったのかについて表せていないのは少し残念です。

強いアイテムを購入できたのか、スキルを多く使えるようになり、コンボが長くなったことでダメージが増加したのかも別途考察が必要だと考えています。

 次に、ダメージを計算できることは今後の試合の反省に活かせるのではないかと考えています。

具体的には、「たられば」 の考えを計算できることがあります。

「王剣ではなく、クリティカルから積んでいたら」や「デスキャップが完成していれば」など、状況に合わせた計算を行えるため、反省を今後に活かしやすくなると考えています。

とはいえ、今回は必ず通常攻撃ができる状況を想定していますが、実際に毎秒通常攻撃することやスキルを当てることは難しいです。

実際には、相手のスキルによってゾーニングされたり、CCを受けることが多いので、そのような状況でどれくらい通常攻撃を行え、スキルを当てられるのかということも考えなければ、実際の試合に近いダメージだとはいえません。

これを求めようとすると、ゾーニングとは何か、スキルのあたる確率は、などについて考える必要があるので、かなり難しい気がしています。探求は続く..。

 最後に、この記事について、可視化方法や結果にお気づきのことがありましたら、お知らせください。

特に結果について、直観的に違和感があった場合、その直感は正しいことのほうが多いので、お知らせいただければ非常に助かります。バグが存在している可能性が高いので。

最後まで読んでいただき、ありがとうございました。

 

mataro

Twitter: @LolMataro

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする