夢の穴12階のねぼけまなこモニター

ここに記事を書くのは2年振りだそうです。お久しぶりです。

 

夢の穴12階には、ねぼけまなこモニターというお宝が埋まっています。しかし、大量の候補地点とカマドフマの存在によって短時間での発見は難しく、RTAなどでは厄介な存在です。そこで、捜索の際に役立つ(かもしれない)情報を置いておくことにします。

 

まず、大前提として、埋まりの場所がどのようにして決まるかを整理しておきます。埋まりの場所を決める時点で既に地形は完成しており、このフロアの場合、土の壁以外の配置についてもすべて既に決まっています。その状況で、

拠点からの距離(遠いほど高評価)
そこまでにいる敵(多いor強いほど高評価)
ポッドの有無(ないと高評価)
袋小路かどうか(袋小路だと高評価)

の4項目を数値化して最も高いスコアを得る候補地点(既に穴が配置されている袋小路は当然ながら候補地点からは外されます)にお宝が埋められます。平たく言うと、たどり着くのが最も困難な場所に埋められるということになります。ただし、1位が2か所以上ある場合はその中からランダムで決められます。

 

そのため実際にプレイするときも、候補地点ごとのスコアを調べて最大となる場所を探せばいいわけですが、この4項目のうち、2個目の敵については、どの敵がいるかによって得られるスコアが異なる上に、そうでなくても敵の数が多いためカウントが大変で、おまけに見えない敵(ここでは落石が該当)もいるため、瞬時に計算するのは全然現実的ではありません。また、1個目の距離についても、そこまでの行き方が2通り以上あるような地形だと、どのルートが最短かを考慮しなければならずこれも大変です。

 

そこで、すべての候補地点を比較するのは諦めて、比較対象を限定することを考えます。たとえば下の図のような、ポッドがなく入口が1個しかない広場の内部、またはその広場に(通路を介して)隣接する袋小路に話を限定すれば、見通しはかなり良くなります。なぜなら、この条件下では、敵の比較については基本的に同数なのでする必要がなく、距離の比較についてもあらかじめ決まった数値だけ覚えておけばよいからです。また、この条件下では袋小路が必ず広場のスコアより高くなるので、実際には袋小路だけを比較すればよいです。

 

この条件を満たすもののうち基本的なパターンを列挙すると次のようになります。袋小路に書いてある数字は入口からそこまでの距離(の\frac{1}{10})を表していて、これがそのまま相対的なスコアの値になります。つまり、この値が最も大きい袋小路にお宝が埋まっているということです。ただし既に穴が配置されている場合は穴がある場所以外で最大のところということになります。1番高い値を赤、2番目をピンクで強調しておきました。

 

通路やガス管の影響を考慮しないのであれば、ここまでの9個の画像における赤とピンクの位置を覚えればそれでよいのですが、通路とガス管の存在にも対応したい場合は、広場と袋小路の間にそれらが入るたびにその分だけ袋小路のスコアが増加することを考慮して比較する必要があります。具体的には上述した袋小路の値に次の値を、その個数だけ加算して比較しなければなりません。

通路はともかく、ガス管が袋小路の前にあることは日常茶飯事なので、先ほどの図で差が5以下だった袋小路の組には特に注意が必要です。

 

今回の話だけでは埋まりの場所を必ずしも特定できるわけではありませんが、存在しうる場所を確実に絞っていける方法だと思ったので紹介しました。1フロアのためにこれらの値を全部覚えるのは非効率だと思われるので、各自の判断で使えそうな部分だけチェックしておくのがよいかと思います。

何もないのに壁だけ置かれた袋小路

チャレンジモードで土の壁が存在するフロアは、あのひとの庭、コンクリート迷路1階、コンクリート迷路2階、土とんの洞窟1階、倍々ゲームの穴2階、倍々ゲームの穴3階、どっすん迷路の七つです。これらのフロアではしばしば、何もない袋小路の前に壁が置かれているのを見かけます。

f:id:fuji_luck:20210305204451j:plain

何もない袋小路の前に置かれた壁

 

ほとんどの場合、その壁の奥には穴(間欠泉)が出現するのですが、そうではなく完全に無駄な壁である場合もあることが知られています。

f:id:fuji_luck:20210305231859j:plain

この配置では左上の壁を壊す意味は全くない

 

今回は、このような壁の奥に穴(間欠泉)が出現するのか、それとも無駄な壁であるのかを判断できないかについて書きます。

(袋小路には、物を置くことができるものとできないものがありますが、前回と同じく今回も、物を置くことができるもののみを指して袋小路という言葉を使います。)

 

まず、最も単純な倍々ゲームの穴3階について。倍々ゲームの穴3階では、余った袋小路には一つずつタマゴが置かれていきます。それゆえ、本当の意味で何も置かれていない袋小路は存在せず、一見何もないように見える袋小路には必ず間欠泉が隠れています。したがって、何もない袋小路の前に置かれた壁は必ず壊す必要があります。

 

次はどっすん迷路です。どっすん迷路で袋小路があるとき、そのうちの一つに必ず間欠泉が置かれます。壁は全部で5枚ですが、間欠泉の前と、ポッドが置かれていない四つの広場の入口(ポッドに最も近い接続口)で5枚分なので、本当に何もない袋小路の前に置く分の壁はありません。したがって、ここでも一見何もない袋小路の前に置かれた壁は必ず壊す必要があります。
(このあたりの詳細は前回の記事を参照)

 

どっすん迷路と似ている(そしてどっすん迷路より単純)のがコンクリート迷路1階と土とんの洞窟1階です。コンクリート迷路1階は広場の入口5に対して壁4、土とんの洞窟1階は広場の入口3に対して壁3なので、やはり本当に何もない袋小路の前に置く分の壁はありません。

 

ここまでに挙げた四つのフロアについては、一見何もない袋小路でも、その前に壁があればそこには穴(間欠泉)が必ず隠れているということになります。

 

一方あのひとの庭、コンクリート迷路2階、倍々ゲームの穴2階については、本当に何もない袋小路の前にも壁が置かれていることがあります(すべて実機での目撃例もあります)。その理由を見ていきます。

f:id:fuji_luck:20210511000034j:plain

あのひとの庭の例

 

まず、あのひとの庭については、広場が二つでそのうち片方にポッドが置かれるので入口は1。それに対して壁は2枚置かれます。したがって、袋小路は存在するが袋小路に置かれているものが一つもないという状況であれば、余った2枚目の壁が本当に何もない袋小路に置かれる可能性があります。

実際には、

(物を置くことができる)袋小路が存在する地形を引く
→間欠泉、オレの色、勝負石の三つがすべて袋小路以外の場所に置かれる
→1枚目の壁が広場の入口に置かれる(これはこの場合確定で起きる)
→2枚目の壁が何も置かれていない袋小路の前に置かれる

というステップをすべて踏む必要があるため、あまりお目にかかれるものではありませんが。

 

次にコンクリート迷路2階について。このフロアは、広場の数が10なので入口は9。それに対して壁は6枚なので一見壁が余ることはなさそうですが、これまでと異なるのは、7体のDoor Enemy(ゼンマイ、タンポポ、クローバー、ヒカリキノコ、若芽、ツクシ、マーガレット)が存在するということです。Door Enemyは接続口に、壁よりも先に置かれ、既にDoor Enemyが置かれている場所には壁が置かれることはないという規則があるので、九つある広場の入口のうち四つ以上にDoor Enemyが置かれてしまうと壁が余る可能性があります。ただし、こちらも実際に引く確率はかなり低いと考えられます。

 

最後は倍々ゲームの穴2階です。このフロアは地形のバリエーションが少なく、いつも三つの広場と八つの袋小路で構成されます。八つの袋小路のうち、五つはポポガシグサが置かれます。残りの袋小路は三つですが、ポポガシグサ以外で袋小路に置かれる可能性のあるものが穴、あのカギ、レアメタルGの三つしかないので、この三つが広場に置かれると、その分だけ何もない袋小路が生まれます。また、壁は10枚あり、接続口の数も10で固定なので、いつでもすべての接続口に壁が置かれます。

すなわち、穴、あのカギ、レアメタルGのいずれかが広場に置かれるだけで本当に何もない袋小路の前に置かれる壁が存在することになります。先ほどの2フロアとは異なり、この確率はそこまで低いものではなく、日常的に起きます。

 

確率の低いあのひとの庭、コンクリート迷路2階はともかく、日常的に起きる倍々ゲームの穴2階では、壊す必要のない壁を見極める方法があると便利です。このフロアでは、袋小路に5体のポポガシグサが置かれますが、その場所は、穴、あのカギ、レアメタルGのいずれも置かれていない袋小路(五つ以上ある)のうち、隣接する広場が置かれたのが早かったものから順に五つとなっています。同じ広場に隣接している袋小路どうしについては、次の図のように順番が決まります。

f:id:fuji_luck:20210305232258p:plain

したがって、何もない袋小路を見つけたときは、それよりも順番が遅い袋小路にポポガシグサが置かれているかを調べ、置かれていれば先ほどの袋小路に確実に穴が出現するということになります。特に、八つの袋小路のうち順番が早い五つの袋小路は何もなければ必ず穴が出現することになります。最後に置かれた広場に隣接している袋小路はつねに三つで、それらの順番が最も遅いことを考えると、最初またはその次に置かれた広場に隣接した袋小路の壁はいつでも壊さなければならないということがわかります。

f:id:fuji_luck:20210305232349j:plain

最初に置かれた広場に隣接した袋小路なので必ず穴が出現する

f:id:fuji_luck:20210305232402j:plain

二つ目の広場に隣接した袋小路なので必ず穴が出現する

ただし、最初に置かれた広場(ポッドが置かれている広場)が三つの広場のうち真ん中にある地形の場合、二つ目と三つ目の広場の区別をつけることが基本的に不可能であることに注意が必要です。

 

このようにどの袋小路に穴(間欠泉)が出現するかを見極める方法は壁の話とは無関係なので、ほかのフロアでも使えることがあります。と言っても、現実的に有用と思われるのは倍々ゲームの穴1階とデメマダラの巣窟3階くらいかもしれません。

 

倍々ゲームの穴1階の場合、図の上三つの袋小路は、何もなければそこに必ず穴が出現します。

f:id:fuji_luck:20210305232614j:plain

 

デメマダラの巣窟3階の場合、ポッド周辺と図の上の袋小路は、何もなければそこに必ず穴が出現します。

f:id:fuji_luck:20201114170530j:plain

どっすん迷路のタマゴの数

どっすん迷路ではタマゴが広場に二つ、袋小路に三つ出現します。ただし、置ける場所がそれより少なければその分までしか出ません。スコアアタックではなるべく多くのタマゴムシを出すことが求められるため、タマゴの数が少ない配置でプレイすることは場合によっては時間の無駄になりかねません。今回はどっすん迷路の地形とタマゴの数の関係性から、タマゴの数を開始直後にある程度把握する方法を書きます。

 

まず袋小路のタマゴについて書きます。このステージの袋小路には、割れた土管タイプと、その半分の大きさである土タイプのものがありますが、物を置くことができるのは割れた土管の方だけなので、以下では割れた土管の方だけを指して袋小路という言葉を使います。

袋小路のタマゴは、間欠泉のない袋小路に一つずつ、三つになるまで配置されます。このステージの間欠泉は、袋小路が一つ以上存在するときは必ず袋小路に配置されるようになっているため、袋小路のタマゴの数は

袋小路の数が0または1のとき 0
袋小路の数が2のとき 1
袋小路の数が3のとき 2
袋小路の数が4以上のとき 3

となります。

 

ここで、土の壁の数に注目します。このステージには壁が5枚置かれます。壁が優先的に置かれる場所は、何かが地面に置かれている袋小路です。このステージで袋小路に置かれる可能性のあるものは、間欠泉、レアメタルG、レアメタルS、知られざる功の四つしかないので、これらが置かれている袋小路の前には必ず壁が存在します。

次に壁が置かれるのは、ポッドが置かれていない四つの広場の接続口です。それぞれの広場の接続口のうち最もポッドに近いもの(いわば入口)に壁が置かれます。したがって、そのような壁は最大で4枚存在します。

これでもまだ壁の数が5枚に満たない場合は、ほかの場所に適当に置かれます。

 

袋小路が一つ以上存在するときは、必ず間欠泉の前に壁が置かれ、それ以外の4枚も袋小路の前か広場の入口に置かれるため、それら以外の場所に置かれる壁は存在しないことになります。逆に言えば、袋小路の前でも広場の入口でもない場所に置かれた壁が存在するとき、袋小路は一つも存在しないことがわかります。

これを踏まえると、タマゴが三つ以上の配置でプレイしたいときは、袋小路の前でも広場の入口でもない場所に壁が置かれているのが見えた時点でリセットしてよいということになります。

f:id:fuji_luck:20210302202928j:plain

タマゴが二つ以下しかないことがすぐにわかる配置

 

また、袋小路が一つ以上存在するときは、間欠泉が存在しない袋小路の前と四つの広場の入口に存在する壁が合わせて4枚あることになります。このことから、入口に壁が置かれていない広場があるのが見えたときは、そのような広場の数以上のタマゴが袋小路に存在することがわかります。

f:id:fuji_luck:20210302204547j:plain

袋小路にタマゴが一つ以上存在することがすぐにわかる配置

 

(とても珍しい乱数を引けば、そもそも広場の数が5より少ない地形もあり得るかもしれません。そのような地形の場合には、上に書いてきたことが必ずしもすべて正しいわけではありませんが、あったとしても天文学的な確率と考えられるので、ここでは無視します。)

 

次に、広場のタマゴについて書きます。広場のタマゴはEasy Enemyに属しており、下の図のピンクの地点に置かれます。

f:id:fuji_luck:20210302210150p:plain

Easy Enemyが置かれる地点

 

ほかにEasy enemyに属している敵として、黄色いビー玉をもつエレキムシ(×2)、青いビー玉をもつエレキムシ(×2)がいて、タマゴも含めて同一の敵が2体同じ地点に置かれるか、別々の地点に置かれるかは、ここではすべて\frac{1}{2}となっています。したがって、Easy Enemyは最小三つ、最大六つの地点にわたって置かれることになります。

 

タマゴはEasy Enemyのうち最後に置かれるようになっているので、Easy Enemyを置くことのできる地点が六つ以上ある地形では必ず二つとも置かれますが、五つ以下しかない地形の場合はタマゴが一つ以下になる可能性が生まれます。

 

Easy Enemyを置くことができなくなるのは、その地点とポッドとの距離が300未満のときです。したがって、ポッドがある広場の3地点はいずれもEasy Enemyを置くことができません。ポッドがない残りの四つの広場についても、次のような位置関係の場合には、ポッドからの距離が300未満となってしまうような地点が存在します。

f:id:fuji_luck:20210304110342p:plain

ぴったり隣り合うときのうち3パターン

f:id:fuji_luck:20210304110959p:plain

左斜め奥にあるときのうち6パターン

 

スコアアタックでは、ポッドが置かれていない四つの広場のうち二つまたは三つが四角い小部屋である地形でプレイします。上の図から、それら一つにつき最低でも二つの地点にEasy Enemyを置くことができるとわかるため、三つが四角い小部屋である場合には広場のタマゴは必ず二つとも存在します。しかし、二つだけが四角い小部屋である場合には、その位置関係と乱数によって広場のタマゴが一つ以下になる可能性があります。

コンクリート迷路の運要素を少しでも減らす

チャレンジモードではあのカギを回収するまでは穴(間欠泉)の位置が原則わからないようになっています。ステージによっては穴(間欠泉)の位置が事前にわかっているかどうかがタイムに大きく影響し、その最たる例がコンクリート迷路と言えるでしょう。今回は穴(間欠泉)の位置をカギを回収する前から推定する話を書きます。

 

Hard Enemyは穴(間欠泉)から距離が200以上離れた場所にしか出ないというルールがありますが、逆に考えるとHard Enemyがいるところから距離が200未満の地点には穴(間欠泉)が存在しないということになります。実際のプレイでは多くの場合敵の位置が先にわかっているので、このルールを利用して穴(間欠泉)の位置を推定することができます。

 

コンクリート迷路1階のHard Enemyは、タンポポ、クローバー、ヒカリキノコ、若芽、ツクシ、マーガレット、モモフグリ(大)(×2)
コンクリート迷路2階のHard Enemyは、サクレショイグモ(×36)、バクダン岩(×9)、モモフグリ(大)(×2)

となっているので、穴の位置を推定するためにはこれらの位置に目を向ければよいです(要するに、1階は大きい植物、2階はバクダンと大きいモモフグリを見ればよい)。

 

それでは、どの位置にHard Enemyがいるとどの穴の位置が候補から外れるのかを具体的に見ていきます。

f:id:fuji_luck:20210103004021p:plain

1階2階共通

f:id:fuji_luck:20210103004056p:plain

1階のみ

f:id:fuji_luck:20210103004131p:plain

1階のみ

f:id:fuji_luck:20210103004151p:plain

1階のみ。Y座標が変だがミスではない

f:id:fuji_luck:20210103004311p:plain

2階のみ

部屋をまたぐ例もありますが、煩雑になるので今回は一つの部屋の中で完結する例のみ挙げておきました。

 

2階は基本的に自分が通った場所についてしか判断できませんが、1階の植物たちは遠くからでも視認できるので、壊す必要のない壁を見分けることができます。

f:id:fuji_luck:20210103011806j:plain

タンポポとツクシがあるので壁を壊す必要がない

f:id:fuji_luck:20210103011944j:plain

クローバーがあるので壁を壊す必要がない

 

コンクリート迷路ほど有用ではありませんが、この推定法はほかの29ステージでも使えるものなので、比較的役に立ちそうな例(独断と偏見)を最後にいくつか載せておきます。(スコアアタックよりはCMALで役に立ちそう?)

 

f:id:fuji_luck:20210103165202p:plain

新参者の試練場、地下の温室、かくしもちの洞窟

Hard Enemy

新参者1階 オオガネモチ、オナラシ、コガネモチ、ムラサキポンガシグサ(×3)、タマゴ(×2)
新参者2階 フーセンドックリ、オオガネモチ、オナラシ、コガネモチ、タマゴムシ(袋小路でない方)
温室1階 ポポガシグサ(3体中2体)、チビクマ
温室2階 ミズブタ、ポポガシグサ、ブタドックリ
かくしもち2階 ミズブタ
かくしもち3階 キショイグモ
かくしもち4階 ヤキチャッピー

 

f:id:fuji_luck:20210103165301p:plain

神々のおもちゃ箱

Hard Enemy

おもちゃ箱1階 アカコチャッピー(レアメタルG、レアメタルS、手動工作マシンの3体)

 

f:id:fuji_luck:20210103165334p:plain

コレクタールーム

f:id:fuji_luck:20210103165355p:plain

コレクタールーム

Hard Enemy

コレクター2,6階 テンテンチャッピー

 

f:id:fuji_luck:20210103165410p:plain

コレクタールーム、デメマダラの巣窟

Hard Enemy

コレクター5階 アカチャッピー
デメ巣1階 ケチャッピー、アカチャッピー、間欠炎(4体中1体)

 

f:id:fuji_luck:20210103165433p:plain

炎と水の試練場、土とんの洞窟

Hard Enemy

炎と水1階 ブタドックリ、ミズブタ、アカコチャッピー(×4)、ルリショイグモ
土とん1階 びっくり菊(×2)、ハオリムシ(×3)、オオガネモチ、マーガレット(5体中3体)

 

f:id:fuji_luck:20210103165518p:plain

土とんの洞窟(コンクリート迷路と共通)

f:id:fuji_luck:20210103165601p:plain

土とんの洞窟

f:id:fuji_luck:20210103165617p:plain

土とんの洞窟

Hard Enemy

土とん1階 びっくり菊(×2)、ハオリムシ(×3)、オオガネモチ、マーガレット(5体中3体)

 

f:id:fuji_luck:20210103165643p:plain

さらいの洞窟、天罰の穴

f:id:fuji_luck:20210103165710p:plain

さらいの洞窟

f:id:fuji_luck:20210103170100p:plain

天罰の穴

Hard Enemy

さらい オオマンマン、サクレウラメ(×4)、トテツチホカシ(3体中2体)、サライムシ
天罰 キショイグモ(2体中1体)、サクレショイグモ(×6)、バクダン岩(×3)

 

f:id:fuji_luck:20210103170130p:plain

デメマダラの巣窟

Hard Enemy

デメマダラ1階 ケチャッピー、アカチャッピー、間欠炎(4体中1体)

 

ちなみに、新参者のオオガネモチ、オナラシ、コガネモチ、タマゴムシ、炎と水1階のルリショイグモ、土とん1階のオオガネモチのようにHard Enemyかつ隠れている敵については、逆に穴を先に出しておくことで探すときのヒントにできます(チャレンジモードに限ったことではない)。

 

(話題に上がったので追加)

f:id:fuji_luck:20210302163959p:plain

あのひとの庭

Hard Enemy

あのひと ブタドックリ、シャコモドキ(×2)、イモガエル

さらいの洞窟のサライムシ

今回からは洞窟生成アルゴリズムの実用的な使い方について書きます。理屈の説明は最小限にとどめようと思います。

 

さらいの洞窟ではたまに敵が少なくなることがあり、そのような配置でプレイすることはスコアアタックにおいては時間の無駄でしかありません。今回はさらいの洞窟で敵が足りるかどうかをすぐに見分ける方法について書きます。

 

まず、さらいの洞窟の地形について簡単におさらいします。この洞窟は三つの広場から構成され、使われる広場には次の3種類があります。

f:id:fuji_luck:20210101192201p:plain

ポッドを置ける広場

f:id:fuji_luck:20210101192320p:plain

クロワッサン(俗称)

f:id:fuji_luck:20210101192400p:plain

さらい山(俗称)

ただし、座標はポッド、間欠泉、Hard Enemy、Door Enemyのみ記しました。また、これらのY座標はすべて0なので省略しました。

 

ポッドは一番上の図の広場にしか置くことができないので、この広場は必ず一つ以上存在します。今回はスコアアタックのための応用編ということで、以下では残りの二つの広場がどちらもポッドが置かれている部屋に隣接している(間に余計な広場や通路がない)場合のみを考えることにします。

間欠泉は、ポッドからの距離の制約があるため、今回の場合ポッドと同じ部屋に置かれることはありません。さらいの洞窟では袋小路に間欠泉が置かれることもないので、ポッドが置かれていない残りの二つの広場のうちどちらか一方に間欠泉が置かれます。

 

それでは、どのような場合に敵が少なくなるかを見ていきます。

このフロアにはHard Enemyが8体設定されており、オオマンマン→サクレウラメ×2→トテツチホカシ×2→サクレウラメ×2→サライムシという順番になっています。したがって、フロア中にあるHard Enemyの地点(図の赤丸)のうち敵を置くことができるものが8個より少なければ、後ろのサライムシから順に消えてしまいます。

 

Hard Enemyを置くことができなくなる条件として次の二つがあります。

1.ポッドからの距離が300未満
2.間欠泉からの距離が200未満

この距離に相当する円を、あらかじめ先ほどの図に載せておきました。これを踏まえてHard Enemyを実際に置くことができる地点の数をまとめると、

ポッドを置ける広場(ポッドがあるとき) 0
ポッドを置ける広場(間欠泉があるとき) 3
ポッドを置ける広場(どちらもないとき) 5
クロワッサン(間欠泉があるとき) 4
クロワッサン(間欠泉がないとき) 6
さらい山(間欠泉があるとき) 3
さらい山(間欠泉がないとき) 4

となります。ただし、この距離の制約は別の部屋にも影響をもちます。具体的に言うと、次の三つの場合にはさらに敵が減ることになります。

f:id:fuji_luck:20210101202515p:plain

距離268

f:id:fuji_luck:20210101202533p:plain

距離278

f:id:fuji_luck:20210101202547p:plain

距離271

 

以上を踏まえて、あり得る(良)地形について敵が足りるかどうかを考えると次のようになります。

 

【クロワッサンもさらい山もあるとき】
クロワッサンがポッドから一番近い接続口に接続している場合は敵が足りない可能性があり、間欠泉がさらい山にあると仮定してプレイしてよい。それ以外の場合は間欠泉の位置によらず敵が全部存在する。

f:id:fuji_luck:20210101213650p:plain

間欠泉がさらい山に出ないと敵が消える地形

 

【さらい山がないとき】
間欠泉の位置によらず敵が全部存在する。

 

【クロワッサンがないとき】
常に敵が足りない可能性があり、間欠泉がさらい山にあると仮定して動いてよい。ただし、間欠泉がさらい山にあってもダメなパターンが一つだけ存在する。

f:id:fuji_luck:20210101213750p:plain

間欠泉がさらい山に出ないと敵が消える地形。右下は例外

洞窟生成アルゴリズムの補足

今までの記事でマニアックなので省略したことを補足しておきます。

 

一つ目は、各接続口の座標をどこで定めるかという話です。

マップの座標軸は次のようになっており、接続口の座標は、X(またはZ)座標の小さい側の端の点で定めます。

f:id:fuji_luck:20201114181328p:plain

そのため、一見同じような位置関係でも向きが違うために、通路の生成のされ方が異なることがあります。

 

例としてスナイパールームを見てみます。

f:id:fuji_luck:20201114182005p:plain

生成途中のスナイパールーム

簡単のために図の右上以外の接続口はすべて通路を作らないようにマークされているとします。すると、右上の接続口から左上の接続口に向かって伸びていた通路は、元の場所から4区画分伸ばしたところで左上の接続口より先まで行ったことになり、どの接続口に向かうこともできなくなってしまうのでここで通路の生成は終了し袋小路を作ることになります。

しかし、同じ位置関係で座標軸だけが90^\circ回転している次の場合を考えると、この時点では伸びた通路が左上の接続口より先まで行っていないので、まだ通路の生成が止まらないことがわかります。

f:id:fuji_luck:20201114182734p:plain

座標軸だけが先ほどと異なる

実際には左の部屋が邪魔するため、1区画だけ通路を伸ばしたらやはり袋小路になってしまうのですが、全く同じ位置関係でも向きが異なるために通路の生成のされ方が異なることがあると確認できました。

 

さて、ゲーム中ではX軸やZ軸を直接見ることはできませんが、実はその向きを間接的に知る方法があります。次の4枚の画像はすべて辺境の洞窟6階のもので、広場の位置関係は全く同じですが、これを見て気づくことはないでしょうか。

f:id:fuji_luck:20201114185359j:plain

f:id:fuji_luck:20201114185437j:plain

f:id:fuji_luck:20201114185927j:plain

f:id:fuji_luck:20201114185942j:plain

西

本編ではマップを開いたときに方角が表示されますが、西に行くほどX座標が小さく、北に行くほどZ座標が小さくなるという対応関係があります。確かに先ほどの4枚を見ると、画像の上側が北もしくは西になっているもののみ通路が生成されています。

なお、このフロアではキャップ最大数(CapVsHallProb)が0ではないので、実際には次のように通路が生成されないこともあります。

f:id:fuji_luck:20201114190720j:plain

 

また、チャレンジモードでは本編と違いマップを開くことができませんが、開始時のカメラの向きで方角を知ることができます。開始時の画面は、操作しなければおおよそ西南西の方角から撮ったものになっているのでそれで判別できます。

 

二つ目は、ゲーム内での平方根の計算の方法の話です。

このゲームでは\sqrt{0} = 0というように0については正確なのですが、正の数の平方根を計算するときに誤差が生じます。その原因を理解するために具体的な計算のアルゴリズムを記述します。

 

aを正の数とします。初めに、このゲームでは\sqrt{a} = a\times \frac{1}{\sqrt{a}}として計算していることを注意しておきます。したがって、\frac{1}{\sqrt{a}}の計算方法が大切です。

\frac{1}{\sqrt{a}}を計算するために、まず、a=2^m \times (1+b)を満たすm(整数)とb(0\le b\lt 1)を求めます。これを用いると\frac{1}{\sqrt{a}}

mが奇数のとき 2^{-\frac{m}{2}-\frac{1}{2}} \times \frac{\sqrt{2}}{\sqrt{1+b}}

mが偶数のとき 2^{-\frac{m}{2}-1} \times \frac{2}{\sqrt{1+b}}

という式で表すことができ、ゲーム内ではこの式を用いて値を求めています。そのためには\frac{\sqrt{2}}{\sqrt{1+b}}\frac{2}{\sqrt{1+b}}の値が必要となるのですが、このときにおそらく次のような近似がなされています。説明のためにグラフを描きます。

f:id:fuji_luck:20201114205919p:plain

まず、横軸を16個の区間に分割します。

f:id:fuji_luck:20201114210154p:plain

区間は右端の点を含まない

次に各区間の真ん中における接線と、左端での値を用いて、曲線を直線で近似します。

f:id:fuji_luck:20201114210246p:plain

赤い直線で近似

\frac{\sqrt{2}}{\sqrt{1+b}}\frac{2}{\sqrt{1+b}}のそれぞれに対して、上のように近似してできる関数の式をあらかじめ用意しておくことで、与えられたbの値に対して、\frac{\sqrt{2}}{\sqrt{1+b}}\frac{2}{\sqrt{1+b}}の近似値を容易に得られます。

この値がわかれば、上で書いたようにして\frac{1}{\sqrt{a}}\sqrt{a}の値を順々に求めていくことができます。

 

以上が\frac{1}{\sqrt{a}}及び\sqrt{a}の計算方法なのですが、見てわかるように、bの値が\frac{1}{16}の整数倍やそれより少し大きいところでは値が小さくなってしまいます。逆に\frac{1}{32}の奇数倍の近くでは値が大きくなってしまいます。そのため\sqrt{1} \lt 1などといったことが起きてしまうのです。

いろいろな確率を求める話 その3

今回はデメマダラの巣窟に関係する確率を求めていきます。確率の話は今回で終わりにしようかなと思います。

 

まず、2階の敵の配置について考えます。2階の地形は固定で、次のようになります。

f:id:fuji_luck:20201112164921p:plain

図の上か下のどちらかにポッドが置かれ、上に置かれる確率が86.4186\%となっています。

 

それ以外の配置について考えるためには、各地点の座標が必要になります。各部屋の名前をhttps://github.com/JHaack4/CaveGen/tree/master/files/gc/arcで参照して、texts.d→layout.textと開けば座標がわかります。ポッド、穴、Hard Enemy、Easy Enemyだけ抜き出すと次のようになります(Y座標は省略)。

f:id:fuji_luck:20201112170924p:plain

f:id:fuji_luck:20201112171043p:plain

こちらは座標軸は省略

青がポッド、緑が穴、赤がHard Enemy、ピンクがEasy Enemyの地点を表していて、これらの座標の数値から、穴をポッドがない側にしか置けないことがわかります。また、ポッドがどちらにあっても、Hard Enemyを置くことのできる場所は二つしか残らず((-85,0)の地点はポッドもしくは穴のどちらかが必ず近くにあるためいつでも置けないことに注意)、それらをクマチャッピーとテンテンチャッピーで埋め尽くすことがわかります。

 

Easy Enemyについては最小匹数と最大匹数の情報も必要になりますが、それも座標と同じところに書いてあって、抜き出すと次のようになります。

f:id:fuji_luck:20201112173456p:plain

ポッドが上に出た場合は周辺の三つの地点、下に出た場合は周辺の一つの地点にはEasy Enemyを出すことはできません。ここで、2匹のテンコチャッピーがどちらも真ん中の四つの地点のいずれかに出る確率を求めてみます。

まず、実際にはチビクマから配置されますが、テンコチャッピーから配置されると考えても確率は変わらないことに注意します。最小匹数が2匹の地点を最初に選べばその時点で2匹ともその地点に出ることが確定します。1匹の地点を選んだ場合は\frac{1}{2}の確率で2匹ともその地点に置かれますが、残りの\frac{1}{2}の確率で1匹だけその地点に置かれ、次に選んだ地点にもう1匹が置かれます。以上を踏まえると、2匹のテンコチャッピーがどちらも真ん中の四つの地点のいずれかに出る確率は

0.864186\times (\frac{2}{5} + \frac{2}{5} \times \frac{1}{2} + \frac{2}{5} \times \frac{1}{2} \times \frac{3}{4}) + 0.135814\times (\frac{2}{7} + \frac{2}{7} \times \frac{1}{2} + \frac{2}{7} \times \frac{1}{2} \times \frac{3}{6}) = 0.716047

ということで、71.6047\%となります。

 

2匹のチビクマは、クマチャッピーよりも奥にさえいなければクマチャッピーが連れてきてくれると考えると、穴周辺に敵がいない確率は上で求めたものの半分なので35.8024\%となります。

同じように計算すると、

穴周辺がテンテンチャッピーのみ

\frac{1}{2} \times (0.864186\times \frac{1}{2} + 0.135814\times \frac{57}{490}) = 0.223946

22.3946\%

穴周辺がコチャッピー(チビクマ含む)のみ

\frac{1}{2} \times (0.864186\times \frac{1}{4} + 0.135814\times \frac{1}{2}) = 0.141977

14.1977\%

穴周辺がテンテンチャッピー+コチャッピー(チビクマ含む)

\frac{1}{2} \times (0.864186\times \frac{1}{2} + 0.135814\times \frac{433}{490}) = 0.276054

27.6054\%

となります。

 

次に、3階の配置について考えます。3階にはタマゴが二つ置かれるのですが、水辺より手前にあるか奥にあるかどうかで手間が大きく変わるので、その確率を求めます。

まず、地形はほぼ固定となっており、具体的には次の二つの広場を接続したものになります。

f:id:fuji_luck:20201114170506j:plain

ポッドはこちらに置かれる

f:id:fuji_luck:20201114170530j:plain

 

便宜的に、各部屋の接続口を、図で上にあるものから時計回りにa0、a1、a2、a3、a4 及びb0、b1、b2、b3と名付けます。すると、a3にb1を接続することができないこと、逆にa2にはb1しか接続することができないことがわかります。

f:id:fuji_luck:20201114171652p:plain

a2の前がふさがってしまうので接続できない

f:id:fuji_luck:20201114171722p:plain

a3の前がふさがってしまうので接続できない

 

以上を踏まえて、ポッドが置かれる部屋に接続されるのがb0、b1、b2、b3のどれになるかの確率を求めます。仮にa3にb1も接続することができるとするとその確率は順に20\%40\%20\%20\%となるので、そのなかからa3にb1を接続してしまうパターンだけ計算し直せば比較的楽かと思います。すると確率は順に22.04468\%35.06309\%21.26797\%21.62426\%と求まります。

 

次に、穴をどこに置くかの確率を計算します。ポッドの周辺にある四つの袋小路の重み付けはいつでも10なので、それ以外の三つの袋小路の重み付けを見ます。

b0、b1、b2、b3間の距離の\frac{1}{10}(小数点以下切り捨て)は次の表のようになっているので、そこに1を足して平方根を求めた後に10を足すことで求めることができます。

  b0 b1 b2 b3
b0   43 87 59
b1 43   96 68
b2 87 96   58
b3 59 68 58  

 

f:id:fuji_luck:20201114174723p:plain

b0

f:id:fuji_luck:20201114174741p:plain

b1

f:id:fuji_luck:20201114174751p:plain

b2

f:id:fuji_luck:20201114174803p:plain

b3

 

このフロアでは、穴が置かれなかった袋小路のうち番号が最も若い三つにポポガシグサが、四つ目と五つ目にタマゴが置かれるので(a4はb0より若いと見なす)、たとえばb3が接続された場合は、ポッド周辺の四つの袋小路のいずれかに穴が置かれてしまうとタマゴが二つとも水辺の奥に置かれることになります。

それを表にまとめると次のようになります。

  b0 b1 b2 b3
手前2 36/92 37/93    

近1

奥1

16/92 16/93 55/95 52/92

遠1

奥1

40/92 40/93    
奥2     40/95 40/92

(近1奥1というのは、片方が水辺の奥でもう片方がポッドの周辺に置かれる配置のことで、遠1奥1というのは、片方が水辺の奥でもう片方が水辺の手前だがポッドの周辺ではない配置のことを表します。また、空白は0を表します。)

 

先ほど求めた地形の接続の確率と合わせることで

手前2 22.5760\%

近1奥1 34.4017\%

遠1奥1 24.6655\%

奥2 18.3568\%

となります。