やあみんな。今週はSylowにゲスト投稿をしてもらっている。彼はイギリスで数学を専攻していて、Leagueにおける状況判断について、素晴らしい見解を記事にしてくれた。楽しんでほしい。
イントロダクション
こういった想定をしてみよう。私はSolo queueでJaxをプレイしている。場所はTopで対面はIreliaだ。ゲーム開始から8分が経過し、ラストヒットの数はほぼ同じ、レベルも双方6になった。私は幸運にも戦闘の機会を逃さず飛び込むことができ、200HPを残した状態で、1対1のキルを取ることができた。ミニオンの群れは徐々にIreliaのタワーをプッシュしている。敵のジャングラーはマップ上には見えないが、もしここで私が場を離れる前にジャングラーが到着したら、確実にキルを取られるだろう。このような状況で、私が取るべきベストな判断とは一体どのようなものだろうか?この記事で私は、この状況をちょっとした数学的な要素でモデル化し、こういった状況に直面した際に正しい判断をした場合でも、実際のゲームでは死につながることがある、ということを示していこうと思う。「三行で」だって?
- LoLはアベレージを取っていくゲームだ
- 毎回それができるなら強いプレイヤーだ
- そんなプレイヤーも一度の幸運に負けることはある
判断
実際のところ、LoLは複雑なゲームであり、このような状況でJaxのプレイヤーが取るべき選択肢はたくさんある。深いタワーダイブを除けば、我々はこの選択をシンプルなモデルからはじめていくことができる。この章ではこういったモデルを作成する過程を示していこうと思っている。もちろん、完璧なモデルというものは存在しない。実際の複雑な状況から、有用な特定のセオリー部分を切り取っていく過程だということを心に留めておいてほしい。状況として以下を想定しよう。
- 1人のプレイヤーがいる(Jaxをプレイしている私だ)
- 彼には2つの選択肢がある - プッシュするか、ベースに帰るか
- 2つの結果が存在する - 死ぬか、死なないか
さて、上記に想定される4つの状況において、それぞれが「どれくらい勝っているか」を定義しなければならない。言い換えると、可能性のある各結果に数字を割り振れなければならない、ということだ。単に数学的に便利なようにそうするだけで、特に怖がる必要はない。これを参照することで、「勝利度」としてどれくらいの有利を得ているかを数値的な指標として考えることができる。例としていくつかの「勝利度」数値を入れていくところから始めよう(以下の表参照)。これらは概算で、後にもっと正確な値になる。
勝利度 | プッシュ | ベース |
死んだ | -5 | -10 |
死ななかった | 10 | 0 |
これらを踏まえると、モデルの中で最適な状況判断を導くためのちょっとした計算ができるようになる。取りうる2つの選択肢の中で、それぞれがどれくらいの期待値でどれくらいの勝利度を得られるかを計算してみよう。ただ、モデルが正確だったとしても、期待値が含まれている以上、名前通りそれは期待される値であることに注意されたい。各戦術を取ることで、それぞれどれくらい勝てるか、という期待値量が示される。短期的に見れば状況に適さない、良くない選択となるかもしれない。しかし、より多くのゲームのすべての状況判断において実行すれば、我々は大数の法則(law of large numbers)という美しい数学の法則によって、状況判断による期待値は保証されるだろう。それだけではない。期待値の素晴らしいところは、事象全体を考える際に計算がとても簡単なところだ。すべきことは全ての選択における結果の勝利度を全て合計し、それぞれが発生する確率で掛け算をすることだけだ。
では実際に仮定された状況を合計して解説していこう。
数学的にはこうだ。
E(プッシュ) = (-5)*P + 10*(1-P)
E(プッシュ) = 10 -15*P
E(ベース) = (-10)*0 + 0*1
E(ベース) = 0
最終的にどちらが正しい判断かを論じるためには、2つの期待値を比べてみればいい。高い期待値を示した判断を実行するべきであり、問われるべきは「いつプッシュすべきか」 = 「プッシュの期待値がベースに帰る期待値を上回るのはいつか」 = E(プッシュ)>E(ベース) = 10-15*P>0
代数で計算して、
10-15*P > 0
–> 10 > 15*P
–> P < 2/3
ゆえに、(もしこのモデルが正しいと同意できるなら)ジャングラーがGankしに来る可能性が2/3を切っている場合はプッシュするべきである。同様に「Gankの確率が2/3よりもある」と考えるなら、速攻ベースに帰るべきだ。もし、ジャスト2/3の確度でGankがある、と考えるならば(そもそもそのGank確率の基準が明確ではないが)このモデルはどちらの選択をしてもアベレージが取れることを示している。
「勝利度」
前章で説明した、起こりえる状況の近似として提示されたモデルへの主な批判の一つは、「勝利度」が任意の数値だったということだろう。他にもこのモデルを無意味なものにするような批判はたくさん存在するはずだ。より大きな、より正確なモデルとするべく、これまで無視してきたものをどのように取り入れることができるか考えてみたい。この章では「勝利度」と呼んでいるものをもっと筋の通った定義にして、それを取り込むことを試みる。最も明確な手法として、全てのリソースをgoldとして換算し、goldの獲得(そして同等のものとしてIreliaにgoldを獲得させなかった)を「勝利度」の指標として使用していく。簡単な計算だ。Longswordの値段(400g)を得られるステータス(10AD)の値で割れば、AD1点ごとの値段は40gであるという提示ができる。この計算を基本的なアイテムそれぞれに対して行えば、ステータスをゴールドに換算するレートが導かれる。では、経験値をゴールド換算するにはどうすればいいだろう? 特定のチャンプ(今回の場合はJax)において、18レベル到達時にどれだけステータスが上昇するかを確認し、それらのステータスをすべてゴールド換算したのちに、18レベル到達に必要な経験値の数値(19720)で割れば、経験値1点ごとのゴールドの価値が導ける。試してみよう。
ステータス | Lv18到達時の ステータス上昇分 | ステータスごとの ゴールド換算係数 |
Health | 1666 | 2.64 |
Health Regen | 9.35 | 36 |
Mana | 595 | 2 |
Mana Regen | 11.9 | 60 |
AD | 57.375 | 40 |
Attack Speed | 0.368 | 33.33 |
Armour | 59.5 | 20 |
Magic Resist | 21.25 | 20 |
さて、モデルの話に戻ろう。現在の状況(1対1でキルを取って、プッシュするか否か)でプッシュすることを選択した場合、ミニオン1ウェーブからのゴールドと経験値を得られることになる。(ラストヒットを完璧にすることで勝利度の計算がどんどん楽になる。知ってた?)さらに、Ireliaはウェーブのすべての経験値、ゴールドを完全に取り逃すことになる。試合開始8分時点のレーンのミニオンウェーブは309経験値と126ゴールドの価値を持っており、Jaxはこれを全て取り、Ireliaは全てを逃す、と仮定した場合、レーンをプッシュすることを選択したときに得られるゴールド換算はこうなる。
[(309 * 0.53555) + 126] *2 ≈583
(訳注:Jaxが得た分とIreliaが取り逃した分で×2)
[(309*0.53555)+126] – [(622*0.53555)+300] ≈ -342
-[300+(622*0.53555)] = -633
ゴールド優位 | プッシュ | ベース |
死んだ | -342 | -633 |
死ななかった | 583 | 0 |
まとめ:悪い状況判断だったのか、それとも悪運だったのか?
この手法が狂っていて実用的じゃない、と考える向きもあるだろう。別に、実際の状況判断の際にこれらの数値を計算すべきだ、と言っているわけではない。ただ、実践においてはほとんどのプレイヤーは、考えうるすべての状況に対して、この計算にかなり近いことを頭の中で行っているのではないかと思う。何が起ころうとしているのか、そしてそれぞれの状況で何を得るのか、何を失うのかを自問自答し、それに対処しようと行動しているはずだ。物事をこのように確率的に見るということはすなわち、Leagueにおいての結果がランダム性を含んでいるということを常に思考の最前面に意識している、ということに他ならない。solo queueに突入しているとき、こういう考え方をしている人をよく見る。──JaxはTopでキルを取って、プッシュして、Gankを受けて、死んだ。だからTopをプッシュしたのは良くない判断だった。我々がこの記事で考えてきたモデルにしたがって考えることができれば、この考え方は無意味なものだとわかる。確かに彼の判断は良くない結果を招いた。しかし、彼が死ぬまでにTopをプッシュした際に得たゴールド換算での有利は依然として価値があるし、数多くのゲームプレイにおいてこれと似た状況が発生した場合に、Jaxがプッシュしても毎回Gankを受けるわけではない、ということがわかるだろう。この場合の上記の「良くない判断だった」という考え方は明らかに間違っている。プッシュするという判断が実際には正しかった可能性が常にあり、Jaxは悪運に見舞われただけだということがわかるはずだ。
この考え方を好まない人間はたくさんいるだろう。確かに説得力に欠けて見えるというのは事実だ。ただ単に死んだだけのJaxの行動を見ずに、どうしてFeedじゃないと判断できるだろう。我々はなんとかして他のすべての味方の妨害要素とならないよう、危険なプレイを避け、Feedしないようにし、それらが難しいようならせめて「悪いプレイ」だけはしないようにと心がけている。しかし、もしもこの記事で示してきたような、こういった状況を表すことのできる数学的なモデルを受け入れられるなら、他のプレイヤーが下した判断に対して、あなたが取るべき批判は2つだけでよくなる。「Jaxがプッシュすることと死ぬことを比べた際のゴールド換算有利の比率が間違っている(彼の頭の中にある「ゴールド換算有利の表」が間違っている)」もしくは、「JaxはGankされる率の認識が間違っている(彼の頭の中での確率Pが間違っている)」この2つだけだ。確かに言えることは、Leagueでの全てのゲームにおいて、運の要素が絡まないゲームは存在せず、それは特定のゲームにおけるプレイの良し悪しとは切り離して考えられるべき要素だということだ。
最後に、こういった価値基準の話はAll Chatなどで押し付けるべきものではない。どちらの判断が(平均的にみて)より価値があるかというのは状況判断をするうえで中心となる問題であり、それらは実際のゲーム状況下では不完全情報の状態で判断が下されているからだ。「何が本当に価値があるのか」を自問自答し続けることはより良い判断を下すための材料となり、究極的にはその場で何が起こっているかに関わらずもっと試合に勝てるようになるはずだ。
著者について
Fridgecake Cloth5.comで方法論と数学的手法についてのブログを担当する。現在はLoL、The Walking Dead、SC2、Game Dev Tycoon、GTA 5をプレイしている。Twitterで@LolFridgecakeをフォローしてね。
原文
Cloth5 | Decision making in League; Why you might be right, even when you’re wrong
※この翻訳記事は、Cloth5.comさまの許諾のもとに翻訳しています。
※この翻訳記事の無断転載は原著の著作権侵害になりますので、ご遠慮ください。