読者です 読者をやめる 読者になる 読者になる

FERRY's game blog

ドミニオンとか アグリコラとか

"鍛冶屋、打っちゃダメ、ゼッタイ"な鍛冶屋とは?

やって参りました"鍛冶屋ステロ"回。今回も、VBAで組んだお手製シミュレーターを使って、単純な速度検証の他に、「どういう時に鍛冶屋を打ってはいけないのか?」についても検証してみました。

早速ですが、鍛冶屋1枚回し、属州場、屋敷場、初手ランダム、一万回のシミュレーションの属州4枚の速度検証結果です。

f:id:zFERRY:20140326004303j:plain

平均値=14.9T、中心値=15T、最大値=22T、最速値=9T、3σ=5.2となりました。単純なお金プレイが平均値=16.8T、中心値=17T、最大値=24T、最速値=10T、3σ=5.5ですから、平均して2T速く、バラツキも若干小さいという結果です。

13Tまでに属州4枚の可能性が21%あるので、約5回に1回は13Tより速い速度がでることになります。また、12Tまでに属州4枚取れる可能性は6%です。遅い方は、17Tより遅くなる確率合計が17.9%ありますから、約6回に1回は17Tより遅い速度がでることになります。3σの数値ではイメージしにくいですが、ドミラニで一人回しをされた方は、なんとなくイメージと合うなぁと思っていただけるかもしれません。

このあたりの平均速度はいろんなブログや書籍にも書いてありますが、度数分布とそこから算出できる速度確率はあまり見かけたことがありませんので、ご参考いただけると思います。

ちなみに、最速の9T属州4枚の時の推移は以下の通りで、全体の0.02%という非常にレアなケースです(銀屋と銅銅の入れ替わり等はあり得ます)。
 01T:銅銅銅銅屋→鍛冶屋購入
 02T:銅銅銅屋屋→銀貨購入
 03T:/鍛Play銅銅銅銅銅銅屋→金貨購入
 04T:銀銅屋屋/鍛Play銅銅銅→金貨購入
 05T:金銅銅銅屋→金貨購入
 06T:/金金銀屋屋→属州購入
 07T:鍛Play金銅銅銅銅銅屋→属州購入
 08T:銅銅/金金属→属州購入
 09T:金銀銅銅銅属→属州購入
  ※"/"はシャッフルタイミングを表す

ところで、上記10000回のシミュレーションの中には、初手4-3の場合も5-2の場合も含むのですが、それらも含めて、3T目、4T目の購入で場合分けをして、属州4枚購入までの速度をまとめたのが以下の表です。

一番左が、3T目、4T目に鍛冶屋を使ったかどうか。次の二行が3T目、4T目の購入の組み合わせです。"属州4枚"、"属州5枚"の欄は、平均獲得ターン数を、また、一番右の確率は、10000回のうち、該当するケースが何%あったかを示します。初手5-2の場合も含んでいるので、初手4-3の場合のみで集計したケースと値にズレがあるものと思います。

f:id:zFERRY:20140326004916j:plain

このままだと分かりにくいので、属州4枚の平均速度順に並べたのが、以下の表です。3T目、4T目で金貨が購入できるほど速いのは想像通りですが、同じ購入内容でも、3Tで鍛冶屋を打った場合と4Tで鍛冶屋を打った場合の平均速度の振る舞いは、必ずしも想像通り(4Tのみで鍛冶屋を打つとシャッフルが入るので遅くなるのではないか?)ではないところもあります。

これは、各ケースで10000回のシミュレーションをしているわけではないため、少ないケースでは100回以下のケースを平均していることによる、母数の揺らぎが結果に影響しているものと思います。全てのケースで10000回シミュレーションを実行すると、かなり時間がかかってしまうため、おおよその参考データということでご理解ください。

f:id:zFERRY:20140326005613j:plain

このデータから、鍛冶屋ステロ対決をした場合、3T目、4T目の引き次第で、結果平均で3Tにもなる大きな差がついてしまうことがわかります。ステロ場が"運ゲー"と呼ばれることがあるのはこういう側面を指してのことでしょうし、比較的初心者でも勝ちやすいのがステロ場であることも、同じ理由からでしょう。

 

一方で、二人戦の時の安全圏、属州5枚獲得の速度については、平均値=17.6T、中心値=17T、最大値=30T超、最速値=12T、3σ=6.6となりました。属州4枚獲得の平均値14.9Tから2.7T遅れていますが、属州残り枚数が4枚になると公領を買い始める購入アルゴリズムを採用しているため、よりデッキ内の勝利点が増えやすい環境でのデータです。いずれにせよ、勝利点が入ると失速しやすい鍛冶屋ステロの傾向が見て取れます。このあたりは、いろんなカードを実装して、属州3-4-5枚購入の平均速度を比較してみると、継戦能力などの特徴が見えてくると思います。

f:id:zFERRY:20140326004551j:plain

ちなみに、有効回数が9952回となっていますが、シミュレーションの上限を30Tに制限しているため、30Tで属州5枚買えなかったケースは結果欄が"空白(Null)"になり、無効扱いとなっています。平均回数にも計上されていません。

 

ところで、ドミニオン中級者?へのステップアップに必要な注意点として、山札シャッフルが入るタイミングを意識する、というものがあります。

例えば、鍛冶屋1枚が入っているデッキ20枚の最後の5枚の中に鍛冶屋がある場合、そこで鍛冶屋を打ってしまうとその時点で山札シャッフルが入り、そのターンのクリーンナップフェイズで新たに捨札の山が作られるため、デッキ二周で鍛冶屋が一回しか打てない(少なくとも後3ターンは鍛冶屋が打てない)弱い状態に陥ってしまうことを避けよう。というものです。

では、どんな状態で鍛冶屋を打つのが悪手なのか、アクション実行の判定ルーチンを組んで、検証してみました。

Case1:手札に鍛冶屋があれば、常に3ドロー実行する
Case2:7ターン目から、山札が残り3枚未満ならドローしない
Case3:7ターン目から、山札が残り3枚未満ならドローしない。ただし、残り山札をカウンティングできているとし、手札と足して8金出る場合はドローする。
Case4:手札の金量が既に8金以上ならドローしない。山札の残り枚数は気にしない。
Case5:手札に鍛冶屋があれば3枚ドロー実行する。
    ただし、7ターン目以降
    デッキに金貨0枚で手札に6金あって、山札が3枚未満ならドローしない。←次の山札に金貨と鍛冶屋を入れる
    デッキに金貨1枚以上で手札に8金あって、山札が3枚未満ならドローしない。←次の山札に鍛冶屋を入れる

Case2~5で、"7ターン目以降"という条件が入っているのは、例えば4T目に鍛冶屋が手札にある場合に同様のルールを適用するとドローしない場合が発生し、序盤のデッキ構築が遅れてしまうため、ルールの適用を意図的に遅らせています。

 

結果を、属州4枚獲得と、5枚獲得の平均ターン数で、それぞれ鍛冶屋を1枚しか買わない場合、4~5金でれば二枚までは鍛冶屋を買う場合とで示しています。これは、デッキシャッフルを考慮してドローしない場合を想定した時に、鍛冶屋が1枚だと次の山札に鍛冶屋が含まれず影響が大きいが、鍛冶屋が2枚だとその影響が軽減されるのではないか?との比較を行うためです。


属州4枚獲得の平均ターン数は
    鍛冶屋1枚 :鍛冶屋2枚
Case1:14.9T(5.2):14.9T(5.8)
Case2:15.4T(5.7):15.6T(6.0)
Case3:15.3T(5.5):15.5T(5.9)
Case4:14.9T(5.2):14.9T(5.8)
Case5:14.9T(5.1):

属州5枚獲得の平均ターン数は
    鍛冶屋1枚 :鍛冶屋2枚
Case1:17.5T(6.6):17.4T(7.1)
Case2:18.0T(7.0):18.1T(7.4)
Case3:17.9T(7.0):18.0T(7.1)
Case4:17.6T(6.6):17.4T(7.1)
Case5:17.5T(6.7):

 

アクション実行の判定ルーチンが単純すぎるために、ちょっと極端な結果になった気もしますが、Case2の山札が3枚未満の場合鍛冶屋を打たないケースでは、0.5T~0.7T平均ターン数が悪化してしまい、バラツキも大きくなります。多少調整を加えたCase3でもやはり平均ターン数は遅くなってしまうため、鍛冶屋が次の山札に入らないデメリットよりも、鍛冶屋を打たないことによる機会損失(金貨や属州を買えない)のデメリットの方が大きいことがわかります。

一方、手札に8金あれば鍛冶屋を打たないCase4については、必ず鍛冶屋を打つCase1とほぼ等しい速度を示しました。事前にCase4はCase1よりも良い結果になるのではないか?と考えていたのですが、鍛冶屋が次の山札に入らないデメリットと、デッキ回転が落ちるデメリットが相殺する形になっているか、そもそも"手札に8金あれば鍛冶屋を打たない"ケースがほとんど起こらないか、のどちらかなのでしょう。

結果として、少しでも良くなったと思えるのは、平均ターン数は変わらないものの、バラツキが少なくなるCase5のみでした。基本的にはデッキ回転を優先して、鍛冶屋を打った方がよく、金貨、属州など、その時に必要なものが鍛冶屋を打たなくても手に入る場合のみ、鍛冶屋を打たずに次の山札に入れるのが良い。という結果になりました。

グラフで表すと、Case2とCase3のピークがなだらかになっています。また、ピークが最も鋭いのはCase4ですが、ターン数が遅い方に分布が広いことがわかります。

f:id:zFERRY:20140326024326j:plain

また、鍛冶屋1枚と2枚の比較では、総じて鍛冶屋2枚の方がばらつきが大きい結果となりました。毎ターン鍛冶屋を打てるような引きになれば非常に強い反面、+アクションカードが手札に無い状態で、ターミナルアクションが手札でかぶる、いわゆる"アクション事故"のケースがバラツキに大きな影響を与えることが原因です。属州4枚獲得の平均速度は鍛冶屋1枚の場合と同等か、少しだけ遅いようです。こちらもグラフで比較すると、鍛冶屋2枚の方が分布が広く、その分4枚獲得のターン数が速い側の確率は、鍛冶屋1枚の場合よりも高いことがわかります。鍛冶屋ステロのデッキ二周目の購入で出遅れたような場合には、アクション事故が起こらないことを祈って、早目に二枚目の鍛冶屋を入れて逆転を狙うのがよさそうです。

f:id:zFERRY:20140326024306j:plain

一方、属州5枚獲得の平均速度は鍛冶屋2枚の方が速いケースもあることから、今回は購入ルーチンを組んでいませんが、属州vs特殊勝利点など、属州ノルマが増える状況では、デッキがある程度の枚数以上になったら2枚目の鍛冶屋を購入するのがよさそうです。

 

今回は、"明らかに鍛冶屋を打たない方が良い一般的なルール"は抽出できませんでしたが、このアクション実行の判定ルーチンを煮詰めていけば、上級者の実戦での思考に近づいていけるものと思います。その中にはデッキ全体の構成の把握と、山札のカウンティング、および、そこから導き出される確率計算などが含まれているはずであり、そこから鍛冶屋ステロ以外にも一般化できる要素を抽出できれば、FERRY自身が強くなれるはずです。

 

あくまでも、この検証は属州4枚獲得の速度シミュレーションです。"相手に勝つ"という視点は一切入っていません。例えば、サプライに残り属州1枚で公領差で勝っていて手札に鍛冶屋と4金。この鍛冶屋を打つべきか否かは、上記の判定ルーチンとは根本的に異なった基準で考えなければなりません。蛇足ではありますが、鍛冶屋を打って属州を買える確率、鍛冶屋を打って公領を買える確率、鍛冶屋を打たなかった場合に次ターンで属州を買える確率、相手が次に属州を買える確率の概算(相手の山札に鍛冶屋と金貨が残っているか否か)など、一般化とは対極にあたる、その場に特化した状況判断が必要です。

 

さて、シミュレーションをこねくり回し、新しいカードを実装することに楽しみを見出してしまったFERRYですが、大きな一つの楽しみ(目標?)は、ブログを始めた頃に書いた、強いAIの構築です。将棋の電王戦で用いられるような強い将棋ソフトは、プロ棋士棋譜を読み込んで評価関数を構築するそうですから、上級者のGokoやIsoのログをインプットして、なんらかの傾向を抽出するようなアプローチも楽しそうです。

次回は、カードのコストとドロー数の相関関係から、既存カードのコストの妥当性や、1ドローの価値のコスト化などに迫ってみたいと思います。