見出し画像

【SVアドカレ2021】投げ順に革命を起こそうと試みた結果

月光波(げっこうは)です。(@gekkouha)

名前の由来は月光(げっこう)という単語の響きが好きで月光~という名前にしようしたら、なんか頭にカエルが浮かんだので月光波にしました。()

画像1

剣盾では出禁にされていることを最近知り、悲しいような嬉しいような気持ちです。

さて、最近ではコンピュータがゲームの解析を行い、人間のレベルアップに貢献し始めてきています。その分野はいわゆる完全情報ゲームと呼ばれるチェスや将棋にとどまらず、サイコロを振るバックギャモン、めくられたカードが大きく勝敗に影響するポーカーでもコンピュータを駆使しているプレイヤーは少なくありません。

じゃあ、

bo9の投げ順も全部コンピュータに決めてもらえば、勝率上がるのでは??
強いデッキから投げるべきか否かがわかるのでは??

始まりはそんな安易な発想でした。

どのように計算させるか?


結論から言うと、bo9のシミュレーションを100万回行います。

というわけで、コンピュータ上にbo9を100万回やってくれる以下のような”計算機”を用意します。

Ⅰ.5面ダイスを振って相手と自分のデッキをランダムに決める(あらかじめ1が出たらエルフ、2が出たらウィッチ・・のようにダイスの出目と投げるクラスは対応させておく)
Ⅱ.決めたデッキが既に抜けていたらもう一度5面ダイスを振って決めなおす
Ⅲ.100面ダイスを振り、相性表を参照して勝敗を決める(こちらも同様に、6割マッチは100面ダイスの出目が60以下で勝ち!61以上で負け!のようにダイスの出目と勝敗は対応させておく)
Ⅳ.Ⅰに戻る
(以後このような操作をコンピュータにさせることを”計算機にかける”と言います)
これで疑似的なbo9を行うことができます。
疑似的なbo9を100万回ほど繰り返せば、ランダムにデッキを選択する相手に対してどのデッキを投げた時にどれくらい勝てるか、すなわち期待勝率がわかります

作成した計算機でできたこと

まずはこの”計算機”を用いて、「相手の出し方がランダムだったら、自分の出し方によらず勝率は一定なのか」を調べます。

使用する架空の相性表はこれ!
アルファベット大文字が自分、小文字が相手です。
(自分のCというデッキは相手のbというデッキに9割勝てるが、dというデッキには2割しか勝てないということがわかります)

画像4

こんな相性表は存在しない!!という声が聞こえてきそうですが、すべての数字が5に近くなればなるほど投げ順の重要度は下がるので一旦これで実行します。

結果2

どうやらデッキAを出した時の期待勝率が最大で、適当にデッキ決めたら49.7%勝ちます。(相手もランダムにデッキを決めている場合)
このことから、「相手の出し方がランダムだったら、自分の出し方によらず勝率は一定」ではなさそうです。
ちなみにこんなこともできます。

画像7

2勝1敗の状況で何を出すのが期待勝率が最大か?

43結果2

デッキCがいいよと教えてくれてはいます。
同じような方法で5対5の状況でデッキa、デッキbが来ない前提の期待勝率や
初戦の相手のデッキ選択比率が2:2:2:2:2ではなく1:2:2:1:4などの場合も計算してくれます。
そしたら、それなりの役割を果たせる計算機かと思いきや、、、、




こちらをご覧ください。
下の相性表はQ&Bさんが作成した相性表の一部を切り取ったものです。

画像5

引用元 相性表のすゝめ

これを計算機にかけてみます

1.1回

うー-ん全部同じ!!
仕方がないので面倒ですが、bo9を100万回10セットやって平均を求めてみました。

10回

どのデッキを投げても期待勝率が62.1%~62.3%の間に収まっていて、もう一度100万回10セットをやると結果が変わることもありそうな差です。
この計算機を信じて一番勝率の高いセッカや狂乱を投げる考えもあるとは思いますが、個人的にはもうちょっと勝率に差が出ることを期待してました。

とまあ、見てもらった通り「この計算機だけ使ってれば勝てる!」には程遠いです。
察しの良い方はお気づきだとは思いますが、この計算を精度よく行うのがゴールではありません。
今後乗り越えなければならないであろう課題を紹介します。


今後の課題

課題1 正確に期待勝率を出せても差が小さすぎる

ほとんどの人が感じたと思います。
仮に正しい計算を行うことができるようになっても、結局作成した相性表によっては0.1%単位での期待勝率の差だからあんまり頼りになりません。その期待値の差が出てくるほどの試合数をするかもかなり怪しいです。


課題2 相性表の重要度が非常に高くなってしまう

どんなに計算の精度を高めたところで結局は相性表通りの勝率の時しか計算できないのは仕方のないことですが、これも大きな問題です。

実際のbo1は相性表通りの勝率になるとは限らず、相性表を正しく書くのは難しいです。

例えば、壁打ち10戦やって5分だったから、セッカEを使えば対戦相手のアクセラEには50%勝てる!と思っていたら実際は壁打ち相手よりも対戦相手の方が対面の理解が進んでいて本当は50%も勝てないというケースもあります。

話し合いでデッキを決める場合には「50%勝てるって書いたけど、あんまり相性わかってないんだよね」や、「両方40%しか勝てないって書いたけど、A対bよりはA対cのほうが勝ちやすい」など相性表には書かれていない要素も考えて投げるデッキを決めることができるので多少ずれていても修正できます。

しかし、計算機を用いたデッキ決めは相性表だけから投げるデッキを決める上に期待勝率の差も数%のため、多少のズレも間違ったデッキ選択になりかねません。


課題3 結局期待値計算に過ぎない 

このあたりから予想になってしまうのですが、課題1、2を仮に解決できたとしてもこの計算機が人間よりも優秀なのは対面デッキを読みにくいbo9のせいぜい4戦目くらいまでだと思ってます。経験上bo9後半になると相手に読まれるの承知で~を投げるみたいな選択肢があって、相手にそれをとられそうな時は人間が考えた方が当て勝ちできそうだな感はあります。

要するに、計算できているのは対戦相手がデッキをランダムに選択している場合のみで、実際の対戦では”計算機”で導かれる期待勝率が高い行動をとるのかが最善である保証はどこにもないということです。

結論

コンピュータが投げ順を決めて投げ順で優位をとるのは難しそう。

今のスペックの計算機を有効活用しようとしたら
・相手の投げてくるデッキが本当にわからない時に使う
・人間が話し合っていい感じの相手のデッキ選択確率を2:0:5:2:1みたいに割り振って期待値は参考程度にデッキを決める
・計算機で色々試してbo9はどういう状況が見た目より勝ってるかor負けているかの感覚を養って結局は人間が決める

このくらいの利用が現実的かと思います。(当初はポケモンのダメージ計算機的な立ち位置になってほしかった)


まとめ

・ランダムにデッキを選択する相手には、自分の出し方によらず勝率は一定ではない。ただし、5分に近いマッチアップが多いほど勝率が一定に近づく

・相手がどのデッキを投げるかが等確率に近ければ近いほど”計算機”で導かれる期待勝率に近づく

・紹介した計算機を使うなら人間の頭脳と併用する方がよさそう



最後までお付き合いいただきありがとうございました!
改良案を何か思いついたり試したいことがあればやってみてください。
筆者はCプログラミングでコードを書いて計算しました。


明日のAdvent Calenderは
昼の部 ウィンの三番弟子(@ananegeki45)さんの
『紅茶/PaRから学ぶ、投げ順の心理』
夜の部 ハルトマ(@harutoma901)さんの
『16歳の高校生が死ぬ気で世界大会に行こうとする話』です!

お楽しみに~




この記事が気に入ったらサポートをしてみませんか?