スポンサーリンク

Shadowverse AI シミュレータ開発構想と勝利への想い

calc
Pocket

1年くらい前からこんなの欲しいなと思っていたのですが、この1年間あまりにも行動に起こせなかったので、記事に書くことである程度前に進む推進力を得られればな、という思いと、一度頭の中にあるものを整理したい、という思いで記事を書きます。

1.背景

なぜシミュレータが欲しいと思ったか?

私はサービス開始直後くらいからずっとシャドバをやっていますが、かなり状況が変わってきたと思っています。

大きくは下記二つの点でそう思っています。

・競技性が強くなり、細かい議論がたびたび生じるようになった

・カードの種類が増え、複雑化してきた(と思う)

その一例として下記記事なんかがその象徴ではないかと思います。

知恵の光をマリガンで返して戻ってきて1ターン目にプレイしたときを考慮した欲しいカードが引ける確率計算について
前回の記事(マナリアウィッチデッキにおける知恵の光をマリガンで単キープするかどうかについての計算検討)の続きの検討になります。背景等はそちら...

この記事を見ていただければわかるかと思いますが、確率計算がかなり複雑です。Excelのような表計算ツールを使って計算しているとはいえ、計算式を考えるのは自分の頭ですし、それだけでも相当つらいです。

確率って、出てきた結果が妥当かどうか検算しにくいという特徴もあるので、よほど専門にしている方でない限りつらいと思います。(ちなみに私の確率計算レベルは高校数学レベルでしかないですので、この感覚も専門家から見ると違うかも?)

それを解決する手段としてシミュレータを活用、というものがあります。これは力業でPCに計算してもらって試行回数を増やして統計的に問題を解くというものですね。複雑な計算式を解かなくても、比較的シンプルな考え方でアプローチできます。

実は私は過去(3年前)にこの考えで下記のような計算を行ったことがあります。


結構適当なシミュレーションなんですが、これに近い結果を理論的に解いて導こうとするととても大変です。試行回数でごり押ししてなんとかできる、このあたりがシミュレータの強みですね。

そして、一度、ある程度の汎用性のあるシミュレータを作っておけば、それを再利用して色々な検討ができるようになります。

そんなわけで、「なぜシミュレータが欲しいと思ったか?」についての回答のまとめは下記です。

手計算による確率計算に限界を感じ、再利用性を含めて効率的にいろいろな現象を検討する際に有効であると思うため

です。

なぜ”AI”とつけているのか?

さて、シミュレータの有用性について述べてきました。基本的にシミュレータがあればそれなりに色々できそうです。

しかしながら、やはり壁はあります。

例えば下記のような問題を解きたいとしましょう。

問題:

現在のカードプールであらゆる組み合わせのデッキに対して最大勝率を出せる40枚の組み合わせは?

これをシミュレータを使って解こうとする場合、シミュレータ上で2つのデッキで対戦してもらう必要があります。

シャドウバースは複雑なゲームです。あらゆるカードを使ったデッキに対して、ルールベースで「こういうときはこうプレイしてね」とシミュレータに人手でルールを決めてあげることは実質上不可能です。

そのルール(プレイ方針)が妥当か?という点でも厳しいですし、対戦で生じる状況なんて膨大なのでそのルール(プレイ方針)をすべてに対して与えてあげるのが、数的に無理です。

そんな問題を解決してくれるのが、AI(ここでは機械学習の意)利用ではないかと思っています。

言うのは簡単ですが、果たしてAIを使えば解決するのか、という疑問はあります。世の中的には、将棋や囲碁のAIがプロといい勝負という話は聞きます。時代の流れ的にいつかはAIも進化していくものと思っています。なので、そういうことを想定した状態でシミュレータを作っておくと幅は広がるでしょう、といったスタンスでいます。

このあたりは実際にやってみないとなんとも言えません。

AI自体の開発をするつもりは無いので、そこは完全に世の中の研究成果に依存する形となります。

これができるとこんなメリットもあると思っています。

私は社会人です。1週間のほとんどを職場で過ごしています。今は通勤時間や限られた休日の隙間時間を使ってシャドバをやっています。

そんな中、RAGEのためにいろんなデッキを試して可能性を追求する、というのは時間的に厳しいのです。(甘えた言い訳かもしれませんが。。)

ここでAIシミュレータなるものがあったとします。「あのカードを軸としたデッキ試したいな、どんなデッキに勝てて、どんなデッキに弱いのかな、知りたいな」といったものをAIシミュレータに計算してもらうのです。私が普段仕事している時間に。

そして、迎えた休日、私は計算結果を見るのです。「なるほど、このカードを使うと全体勝率こんなもんで、あのデッキには有利だけどこのデッキには不利なのね。ちょっとRAGEで使う意義ないかな。。」みたいな判断ができるのです。

すばらしい!

そんな世界を夢みているので、このシミュレータに”AI”の文字をつけています。

2.目標

このシミュレータを使ったデッキ選定・戦略構築・プレイングの妥当性検証などによって、世界大会で優勝すること、が目標となります。

私がここまで一つのゲームに対して熱量を持てているということもすごいことですし、そんな大好きなシャドウバースの大会で勝つと高額な賞金をもらえるという環境があること自体が奇跡だと思っています。

獲らぬ狸の皮算用になりかねないので、あんまり具体的なことは考えていないですが、あれだけの賞金があれば、税金引かれるとしても、家建てたり、資産運用したり、社会貢献できる事業立ち上げたり、と少し大きなことにチャレンジできるようになるかもな、と思っています。

シミュレータが完成したあとに無くなっちゃうと悲しいので、世界大会が何年も続きますように。

3.現時点で考えていることを列挙

シミュレータ用のプログラミング言語はPythonか

色々AI(機械学習)について調べていくと、現状Pythonに行きつきます。AI関係のライブラリが豊富みたいです。じゃあ、シミュレータもPythonで作るのがいいのかな、と思っています。

一人でつくるのかどうか

今は一人で1から10作ろうと思っています。できるかどうかはわかりません。

後の項目でも書きますが、成果の開示性についても悩んでいます。なので当面は一人かなと思っています。

ソースコードの開示について

汚い話でいうと、成果を独り占めしたいので開示したくないという思いがあります。

あとは、開示したことで発生する責任問題や、保証できないものが独り歩きして変な問題とか起こると嫌だなという思いから今は開示しない方向で考えています。

しかし、「シミュレータを使って〇〇を検討してみた」的な記事や動画を作る場合、ある程度の開示は必要かなと思うので、うまい方法を考えたいなと思っています。

4.日程感

下記のように進めたいなと思っています。

基本的に新カードの実装されてから各RAGEまでは、ひたすら練習します。そしてRAGEが終わって次の環境までの間に開発を進めるというスタンスです。

(基本的にRAGE予選敗退前提の日程なのが後ろ向きですが笑)

ターゲットとしては、2021年の世界大会です。ここまでになんとか運用まで漕ぎ着ければと思います。

最初のPythonの勉強期間が長いですが、私がPythonの経験やそれなりの規模のプログラミングの経験が無いので、この期間で色々やって経験値を積んでおこうと思います。

経験上、本当に力を入れたいところの前に、いかにたくさん失敗できているかでクオリティに差が出るかなと思っているので、この期間を厚くとっています。逆にここをしっかりやれれば後の開発もスムーズにいけるんじゃないかなと思います。

5.さいごに

最後に、ぼんやりと思っていることを書きます。

シャドウバースは本当に勝つのが難しくなったと思います。うまい人も相当多いです。かなりレッドオーシャンです。

私のツイッターとかよく見てくれている人は知っているかもしれませんが、私は今年、某ゲームで日本大会優勝して世界大会に出ています。そのゲームはシャドウーバスに比べればはるかに競争率の低いゲームなのです(少なくとも日本は)。ぶっちゃけ勝てたのは運が良かっただけです。でもそんなちょっとした運で世界まで行けます。

それに比べてシャドウバースはどうでしょうか?

私は3年以上シャドウバースをやってきて、日程や抽選的に出れるRAGEや大型大会はほとんど出てきましたが、まったく勝ててないです。私なりに色々考えてやって来たつもりですが、どうもダメみたいです。残念ながらセンスないです。

じゃあ、人がやっていることと同じようなことやるのか?残念ながら無理だと思っています。抱えている生活環境的に、毎日シャドウバースの配信やっている人やプロと同じ土俵に立てる気がしないです。今抱えているものを放り投げてまで、その土俵に上がる度胸もありません。

となると人と違う道を模索するしかないのです。

かなり昔にとあるAI雑誌の記事で見かけたんですが、将棋のプロは一生懸命将棋を研究することで強くなる道を歩んでいるが、科学者はまったく違うアプローチ(AIの研究)で将棋を勝とうとしている、というものが印象的でした。これを見て私がとるアプローチは後者だな、と思うようになりました。

いろんなカードを自分なりに試して遊ぶのがカードゲームの楽しみの一つであって、その過程をすっとばして結果を求めてゲームとして楽しんでいるのか?的な批判を持つ方がひょっとしたらいるかもしれませんが、シミュレータとかを使って分析やらなんやらの科学しながらやるという手段がぶっとんでいるだけで、勝利を追い求めるために試行錯誤する、という点ではなんら変わらなくて、それもまた私は楽しいものだと思います。(やっていく中でむなしくなったら辞めますが笑)

スポンサーリンク
レクタングル大広告336
レクタングル大広告336

シェアする

  • このエントリーをはてなブックマークに追加

フォローする