2013年11月28日木曜日

和訳:Leagueにおける状況判断;なぜ間違っているときでも「正しいかもしれない」と思ってしまうのか

decision making 

やあみんな。今週はSylowにゲスト投稿をしてもらっている。彼はイギリスで数学を専攻していて、Leagueにおける状況判断について、素晴らしい見解を記事にしてくれた。楽しんでほしい。


イントロダクション

こういった想定をしてみよう。私はSolo queueでJaxをプレイしている。場所はTopで対面はIreliaだ。ゲーム開始から8分が経過し、ラストヒットの数はほぼ同じ、レベルも双方6になった。私は幸運にも戦闘の機会を逃さず飛び込むことができ、200HPを残した状態で、1対1のキルを取ることができた。ミニオンの群れは徐々にIreliaのタワーをプッシュしている。敵のジャングラーはマップ上には見えないが、もしここで私が場を離れる前にジャングラーが到着したら、確実にキルを取られるだろう。このような状況で、私が取るべきベストな判断とは一体どのようなものだろうか?
この記事で私は、この状況をちょっとした数学的な要素でモデル化し、こういった状況に直面した際に正しい判断をした場合でも、実際のゲームでは死につながることがある、ということを示していこうと思う。「三行で」だって?

  • LoLはアベレージを取っていくゲームだ
  • 毎回それができるなら強いプレイヤーだ
  • そんなプレイヤーも一度の幸運に負けることはある


判断

実際のところ、LoLは複雑なゲームであり、このような状況でJaxのプレイヤーが取るべき選択肢はたくさんある。深いタワーダイブを除けば、我々はこの選択をシンプルなモデルからはじめていくことができる。この章ではこういったモデルを作成する過程を示していこうと思っている。もちろん、完璧なモデルというものは存在しない。実際の複雑な状況から、有用な特定のセオリー部分を切り取っていく過程だということを心に留めておいてほしい。
状況として以下を想定しよう。
  • 1人のプレイヤーがいる(Jaxをプレイしている私だ)
  • 彼には2つの選択肢がある - プッシュするか、ベースに帰るか
  • 2つの結果が存在する - 死ぬか、死なないか

さて、上記に想定される4つの状況において、それぞれが「どれくらい勝っているか」を定義しなければならない。言い換えると、可能性のある各結果に数字を割り振れなければならない、ということだ。単に数学的に便利なようにそうするだけで、特に怖がる必要はない。これを参照することで、「勝利度」としてどれくらいの有利を得ているかを数値的な指標として考えることができる。例としていくつかの「勝利度」数値を入れていくところから始めよう(以下の表参照)。これらは概算で、後にもっと正確な値になる。
勝利度プッシュベース
死んだ-5-10
死ななかった100
さて、もし私がプッシュした場合に、敵ジャングラーが私をキルできる位置にいられるチャンスについてはどう扱うべきだろうか。これはジャングラーがTopにいるかいないかに関わらず、状況判断をするための助けにはならないという向きもあるかもしれない。良いプレイヤーは常にこういう状況では、プッシュしたらジャングラーがGankに来るものと考えて行動するからだ。これはLoLに戦場の霧(Fog of War)があり、専門用語で言う「不完全情報ゲーム」であることに起因する。しかし、非常に似た状況に何度も何度も直面していれば、なんらかのパターンがあるのではないかと考えるのが自然だろう。プッシュした場合に、一定の確率でジャングラーが現れてキルを取られ、それ以外の率でジャングラーは適切な位置にいない。これを数値で表せるとするなら、0から1の間の数値を取る確率Pとして表記し、状況判断の参考として取り込むモデルとすることができるはずだ。(これは同時に「Gankを受けない確率」がシンプルに1-Pで表せることを示す)

これらを踏まえると、モデルの中で最適な状況判断を導くためのちょっとした計算ができるようになる。取りうる2つの選択肢の中で、それぞれがどれくらいの期待値でどれくらいの勝利度を得られるかを計算してみよう。ただ、モデルが正確だったとしても、期待値が含まれている以上、名前通りそれは期待される値であることに注意されたい。各戦術を取ることで、それぞれどれくらい勝てるか、という期待値量が示される。短期的に見れば状況に適さない、良くない選択となるかもしれない。しかし、より多くのゲームのすべての状況判断において実行すれば、我々は大数の法則(law of large numbers)という美しい数学の法則によって、状況判断による期待値は保証されるだろう。それだけではない。期待値の素晴らしいところは、事象全体を考える際に計算がとても簡単なところだ。すべきことは全ての選択における結果の勝利度を全て合計し、それぞれが発生する確率で掛け算をすることだけだ。

では実際に仮定された状況を合計して解説していこう。


「プッシュする」判断をした場合の期待値は、「Gankを受けて死ぬ確率」Pを、死んだ場合の「勝利度」で掛けたものプラス、「Gankを受けず死ない確率」1-Pを、死ななかった場合の「勝利度」で掛けたもの、と表せる。

数学的にはこうだ。

E(プッシュ) = (-5)*P + 10*(1-P)
E(プッシュ) = 10 -15*P

もう想像がついているかもしれないが、大文字Eは期待値を表している。別の判断をした際も同様に計算できる。ベースへ帰った場合の期待値はこうだ。

 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到達時の
ステータス上昇分
ステータスごとの
ゴールド換算係数
Health16662.64
Health Regen9.3536
Mana5952
Mana Regen11.960
AD57.37540
Attack Speed0.36833.33
Armour59.520
Magic Resist21.2520
これらの数値をそれぞれ掛けあわせて合計すると、レベル1のJaxがレベル18になるためのゴールド的なコストは10561 goldとなる。Jaxの経験値1点ごとにつき、10561/19720 ≈ 0.53555ゴールドとなる計算だ。私見だが、この数値はさほど的外れなものではないと思える。数学的に厳密ではないようにみえるかもしれないが、こういった考え方は状況をモデル化する際には常に有効だ。

さて、モデルの話に戻ろう。現在の状況(1対1でキルを取って、プッシュするか否か)でプッシュすることを選択した場合、ミニオン1ウェーブからのゴールドと経験値を得られることになる。(ラストヒットを完璧にすることで勝利度の計算がどんどん楽になる。知ってた?)さらに、Ireliaはウェーブのすべての経験値、ゴールドを完全に取り逃すことになる。試合開始8分時点のレーンのミニオンウェーブは309経験値と126ゴールドの価値を持っており、Jaxはこれを全て取り、Ireliaは全てを逃す、と仮定した場合、レーンをプッシュすることを選択したときに得られるゴールド換算はこうなる。

[(309 * 0.53555) + 126] *2 ≈583
(訳注:Jaxが得た分とIreliaが取り逃した分で×2)

これは私が死ななかったと仮定した場合の結果だ。もし私が死んだとして、Ireliaが逃したのと同じだけのミニオンウェーブを取り逃すとする。さらに、Gankに来たジャングラーに300goldと622経験値を献上することになる。ただし、ここでは計算を簡単にするため、ジャングラーのチャンプが誰かは考えず、Jaxと同じレートを適用することとする。プッシュして死んだ場合の価値はこうなる。

[(309*0.53555)+126] – [(622*0.53555)+300] ≈ -342

この分析でいくと、ベースに帰還して死ななかった場合の価値は0であり、レーン中央で拮抗しているときのように、どちらもゴールド換算価値でいう有利を得ていない。最後に、起こる確率を0として設定してはいるが、ベースに帰還しようとして死んだ場合のことも考えておこう。この場合は単に敵ジャングラーにゴールドと経験値を献上するのみとなる。

-[300+(622*0.53555)] = -633

さあ、これでゴールド換算有利を表す2つ目の表を完成させられる。「勝利度」と呼んでいた1つ目の表よりもいくらか正確な基準となっているはずだ。
ゴールド優位プッシュベース
死んだ-342-633
死ななかった5830
ここまでに使っていた計算式に、新しい「勝利度」を当てはめて計算してみよう。(実際に計算してみたい読者のため、詳細な計算過程を書くことは避ける) P < 583/925 ≈ 0.63 のとき、プッシュすべき、という結果が導かれる。逆にPがこの数値以上であると推測される場合は絶対にプッシュするべきではない、ということだ。ここにきてこのモデルはいくらか筋の通ったものとなりはしたが、依然として完璧でないことは明白である。例えば、レベル上昇によるスキルが与える数値については考慮されていない。もちろん、我々が到達したこの0.63という数値が単純化されすぎている、と感じるなら、いくらでもこういった情報を取り込んでいって構わないのだが、正直にいうと手間が掛かり過ぎるのであまりおすすめしない。このモデルをどうやって実用に耐えるレベルまで正確にできるかの手法は示せたと思うし、この手法を応用することで、Leagueにおける状況判断を考える際の十分な枠組みを作れるはずだ。


まとめ:悪い状況判断だったのか、それとも悪運だったのか?

この手法が狂っていて実用的じゃない、と考える向きもあるだろう。別に、実際の状況判断の際にこれらの数値を計算すべきだ、と言っているわけではない。ただ、実践においてはほとんどのプレイヤーは、考えうるすべての状況に対して、この計算にかなり近いことを頭の中で行っているのではないかと思う。何が起ころうとしているのか、そしてそれぞれの状況で何を得るのか、何を失うのかを自問自答し、それに対処しようと行動しているはずだ。物事をこのように確率的に見るということはすなわち、Leagueにおいての結果がランダム性を含んでいるということを常に思考の最前面に意識している、ということに他ならない。

solo queueに突入しているとき、こういう考え方をしている人をよく見る。──JaxはTopでキルを取って、プッシュして、Gankを受けて、死んだ。だからTopをプッシュしたのは良くない判断だった。我々がこの記事で考えてきたモデルにしたがって考えることができれば、この考え方は無意味なものだとわかる。確かに彼の判断は良くない結果を招いた。しかし、彼が死ぬまでにTopをプッシュした際に得たゴールド換算での有利は依然として価値があるし、数多くのゲームプレイにおいてこれと似た状況が発生した場合に、Jaxがプッシュしても毎回Gankを受けるわけではない、ということがわかるだろう。この場合の上記の「良くない判断だった」という考え方は明らかに間違っている。プッシュするという判断が実際には正しかった可能性が常にあり、Jaxは悪運に見舞われただけだということがわかるはずだ。

この考え方を好まない人間はたくさんいるだろう。確かに説得力に欠けて見えるというのは事実だ。ただ単に死んだだけのJaxの行動を見ずに、どうしてFeedじゃないと判断できるだろう。我々はなんとかして他のすべての味方の妨害要素とならないよう、危険なプレイを避け、Feedしないようにし、それらが難しいようならせめて「悪いプレイ」だけはしないようにと心がけている。しかし、もしもこの記事で示してきたような、こういった状況を表すことのできる数学的なモデルを受け入れられるなら、他のプレイヤーが下した判断に対して、あなたが取るべき批判は2つだけでよくなる。「Jaxがプッシュすることと死ぬことを比べた際のゴールド換算有利の比率が間違っている(彼の頭の中にある「ゴールド換算有利の表」が間違っている)」もしくは、「JaxはGankされる率の認識が間違っている(彼の頭の中での確率Pが間違っている)」この2つだけだ。確かに言えることは、Leagueでの全てのゲームにおいて、運の要素が絡まないゲームは存在せず、それは特定のゲームにおけるプレイの良し悪しとは切り離して考えられるべき要素だということだ。

最後に、こういった価値基準の話はAll Chatなどで押し付けるべきものではない。どちらの判断が(平均的にみて)より価値があるかというのは状況判断をするうえで中心となる問題であり、それらは実際のゲーム状況下では不完全情報の状態で判断が下されているからだ。「何が本当に価値があるのか」を自問自答し続けることはより良い判断を下すための材料となり、究極的にはその場で何が起こっているかに関わらずもっと試合に勝てるようになるはずだ。



著者について


 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さまの許諾のもとに翻訳しています。
※この翻訳記事の無断転載は原著の著作権侵害になりますので、ご遠慮ください。