プロクラシスト

今日の寄り道 明日の近道

パズドラのコンボシミュレータを自作・ガチ分析をして「オトナ」の10コンボを目指してみた


スポンサーリンク

こんにちは、ほけきよです。

皆さんはパズドラやったことありますか?僕は割と古参のユーザーです。ランクは720くらいです。

先日、こんな動画を観ました。

www.youtube.com

これを観てて、そういえば、こういうの作って、コンボの実験をしてみたかったんだよなぁ。と思い出しました。なので、コンボシミュレータを自作することにしました。

パズドラコンボの原理

実は、さっきの動画はコンボに関しては2点の意味で正しくありません

  • ドロップ*1の消え方が少しまちがっている
  • 落とし/落ちコンが無い

しかし、コンボシミュレータではこれをきちんと実装する必要があります。なので、UI部分は作らず、ここのロジック部分に注力して作ってみました。

パズドラの基本

パズドラは基本、6×5個で6種類のドロップで構成されます。 これらのドロップを3つ以上連結させることでドロップが消え、相手に攻撃ができます。

消え方

ドロップは、3つ以上連結していると消えます。この3つ以上というのが、パズドラでは縦横一方向において、3つ以上の連結なのです。詳しくは下図をご覧ください。

f:id:imslotter:20190513193255p:plain
消え方の基本

パズドラのコンボ数は、この消えたまとまりの数です。連結すると1コンボに集約されちゃうので、分けたほうがお得です*2

落としと落ちコン

ドロップを消したときに、上部にドロップが残っていると、そのドロップが落ちてきます。 そこで3つ以上のドロップが連結したら、またドロップが消えます。これを 落としといいます。

一回盤面内のコンボが終わると、ドロップがランダムに補充されます。ランダムに補充されたあと、3つ以上のドロップが連結したら、またドロップが消えます。これを落ちコンといいます。

落としと落ちコンの違いは、

  • 落としは 「狙ってできる」 ところ
  • 落ちコンは 「完全運任せ」 なところ

です。

f:id:imslotter:20190513193329p:plain
落とし vs 落ちコン

これらを実装していきます。

実装

まず、実際にみてもらいましょう。(※今回はUIやグラフィックは皆無なので、出力を画像で可視化してパラパラ漫画のように流しているだけです。)

f:id:imslotter:20190513193601g:plain
シミュレータ

ドロップを消す/落とし/落ちコンを(多分)きちんと実装できました。

シミュレータの良いところは、盤面やドロップの種類を自由に設定できるところですね。 あとでじっくりと遊びます。

実装コード自体はgithubに上げたので、詳しくはそこでみてください。

pazdra(hokemiscディレクトリ内)

  • ドロップの種類
  • 縦横に配置するドロップの数

をパラメータにコンボ数のシミュレーションができるので、楽しいと思います。

やってて結構悩んだのが、「消すルール」のところでした。連結が意外に難しい。おそらくもっと簡単な方法があるはずです。*3

「大人の10コンボ」をしたい。

パズドラだと誰でも憧れるヤツ。

大人の10コンボってなに?

ところで、パズドラをしている方なら「マックスむらい」さんという方を一度は聞いたことあるのではないでしょうか。 パズドラ公式生放送に出て、我々ユーザのために石をもぎ取ってくれる存在です。パズドラの全盛期は彼とともに作られたといっても過言ではないでしょう。

www.youtube.com

ここで最後に言われている「みたか、これが大人の10コンボ!」はあまりに有名なセリフです。 生放送で10コンボを組み、勝利特典の石をもぎ取ってくれる様は、まさに英雄でした。

「オトナ」の10コンボ

そんな私も、大人の10コンボをしたい!!とあこがれを抱いたのです。 しかし、パズルの練習をしたくありません。めんどくさいので。そこで考えました。

「運」だけで10コンボ行かないかなぁ。それが良いなぁ。

と思いました。私にはパズル力はありませんが、作ったシミュレータがあります。 どのくらい試行回数を積めば10コンボできるのか、シミュレーションをしてみよう。そう思いました。

コレが 「オトナ」の10コンボ です。

しかし、通常盤面だと...

パズドラの通常版面は、縦5マス横6マスの6色盤面です。 どのくらい落ちコンして、どのくらいのコンボ数が見込めるのか。意気揚々とシミュレータを回しました。 意気揚々と100回試行した結果の統計量はこちら

min max average std 10combo
0 5 1.11 1.34829522 0

0回...100回やってもmaxは5コンボで、10コンボは0回でした。平均1コンボくらいだし...こりゃ駄目だ。

分析

こうなってくると、もっぱら気になるのはどういう盤面なら「オトナ」の10コンボを達成できるの?というところです。 コンボを増やす方法は2種類あって、

  • 盤面の大きさを大きくする
  • ドロップの種類を減らす

これらの施策によって、つながっているドロップが存在する確率が増えるので、自ずとコンボ数は増えていきます。

というわけで、盤面の高さ,盤面の幅,ドロップの種類をパラメータにとって調べてみました。

すべての結果はgithubpazdra_results0.csvにおいてあります。

現状のパズドラでは、7×6の6色盤面、6×5の4色盤面のダンジョンもあるので、さっきの6×5盤面と比べどうなのか見てみましょう。

Height Width Kind min max average std 10combo
6 5 4 0 12 2.79 2.3970607 3
6 5 6 0 5 1.11 1.34829522 0
7 6 6 0 7 1.81 1.598092613 0
9 8 6 0 14 3.31 2.335358645 2

4色盤面だと、100回中3回も10コンボを達成できるっぽいです!!4色盤面ダンジョンなら、3%くらいの確率でドヤれることがわかりました。 *4

ちなみに、6色だとどのくらいの盤面の広さが必要なの?というのも気になったので調べてみました。9×8盤面で可能性が見えてくるみたいです。

ガンホーさん。実装をよろしくおねがいします

ちなみに、平均コンボ数はこんな感じ。

f:id:imslotter:20190513184304p:plain

ドロップ盤面と種類とコンボ数の関係性

さて、ここまでシミュレーションができるようになってくると、いろいろと気になることが増えてきました。 盤面と種類とコンボ数には、なんらかの関係性があるのではないか?

実は昔、数を減らしていくと、パーコレーション起こって無限にコンボができるんじゃないのか??とか、いろいろと妄想していたことがありまして。今回はせっかくだし数値的に検証してみようと思ったわけです。

ここで、ドロップ消え方の性質上ほとんど縦横の対称性は保たれそうだったので、n×nの正方形盤面で考えることにしました。

  • 盤面のドロップ数( n^{2} (3\leq n\leq 50))
  • 盤面のドロップの種類( k (2\leq n\leq 10))
  • コンボ数

4種類から10種類までの落ちコン数の関係性をグラフにしたものがこちら。

f:id:imslotter:20190513184534p:plain

種類には反比例して、盤面の大きさには比例しているような感じがあります。

この、直線の比例係数が気になりますね。それが分かれば、ドロップの種類と盤面の大きさの関係性がわかるってものです。

実はこの直線の比例係数、並べてみるとめちゃくちゃキレイな関係があるんです! 縦軸に比例係数の逆数の平方根をとって、横軸にドロップの種類を取ると、そのグラフはこんな感じになります。

f:id:imslotter:20190513185005p:plain

数式で表すと、比例係数aとドロップの種類kの関係は下記になります。

\frac{1}{\sqrt{a}} = 0.75k -1.43

 a = \frac{1}{(0.75k-1.43)^{2}}

ドロップの大きさとコンボの関係性の比例係数は、ドロップの種類で記述できそうです。 これから、パズドラコンボ関数が算出できるわけです!!

パズドラ平均コンボ関数

 Combo(N,k) = \frac{N}{(0.75k-1.43)^{2}}
  •  k : ドロップの種類
  • N : セルの数

たとえば、盤面100×100で、6種類のドロップだったら、この関数にぶち込んで

 Combo(10000,6)= \frac{100}{(0.75*6-1.43)^{2}}=1061.0...

というわけで、平均1000コンボが期待できると推測できるわけです!素晴らしい。

まとめ

というわけで、今回はパズドラに関していろいろと遊んでみました。 「オトナ」の10コンボ、したいですねぇ。 ちゃんと練習して大人の10コンボもできるようにしたいと思います。。。

シミュレーション的にはかなりきれいな結果が出ましたが、これ、理論的にどうなんでしょう? 結構きれいな結果なので、マクロに見たときに何らかの考察ができるのでは??と期待しています。

誰かよろしくおねがいします!ではではっ

*1:パズドラでは、セル1つ1つをドロップといいます。

*2:たくさんドロップつなげたほうがお得なスキルという特殊なアレもありますが、基本は3ドロップひとまとまりを作っていくゲームです。

*3:縦横に3つまとまりのものを集めておいて、連結できるかの判断を下すようにしました。

*4:なお、このコンボ平均値は、ドロップチェンジした後、どのくらいのコンボを平均的に叩き出せるかの指標になります。現行パズドラ盤面だと、高々2.5くらいなので、過度な期待は禁物ですね。

PROCRASIST