🕹️ ミニゲームゲームズ / 積みバトル の遊び方
🐧

積みバトル

AI対戦・物理ジャンル・所要 約5分・ブラウザで無料・インストール不要
▶ 積みバトル を遊ぶ

ルール

AIと交互に、ペンギンを1体ずつ積んでいきます。1体でも台から落ちたら、落とした側の負けです。本物の2D剛体物理(Matter.js)で動いていて、落下・回転・摩擦・接触がそのまま効きます。左右になぞって位置を決め、 (キーボードは )で角度も決めてから落とします。予測の表示はありません。置いてみるまで、どうなるかは分かりません。

3本先取で競います。1局は数手で決まるので、勝敗は3局とった方につけています。1局ごとに盤面はまっさらに戻り、スコアだけが持ち越されます。

ペンギンは6種類。ふつう(クセがない)/ぽっちゃり(重い。下の段がきしむ)/ほっそり(背が高くて立たせにくい)/ばんざい(翼が横に広い)/まんまる(足がなく転がる)/ヒナ(小さくて軽い)。そして頭の王冠は飾りではなく足場です。両端がすこし立ち上がっていて皿の形になっているので、そこに次のペンギンが乗ります。

攻略のコツ

まず狙うのは王冠の上です。丸い頭に直接乗せるより、皿になっている王冠に乗せるほうがはるかに安定します。王冠の両端を立てる前は、真上から落としても乗るのが56%、狙いのずれは左右6pxまでしか許されませんでした。両端を立てたあとは左右24pxまで受け止めます。ばんざいの広い翼は橋として使えます——離れた2体の間に渡せば、その上が新しい足場になります。逆にまんまるは足がないので、谷になっている場所に置くと転がり出します。ぽっちゃりを高い位置に置くと、下の段がきしんで全体がゆっくり傾いていきます。

覚えておきたいのは、負けるのは「自分が落としたペンギンが落ちたとき」だけではないことです。置いた衝撃で、先に積んであったペンギンが押し出されて落ちることがあります。この場合も、押し出した側の負けです。だから「自分のペンギンが安定して乗ったか」だけでなく、その1体が山全体に何をしたかまで見る必要があります。

この作品を作った理由

じつはこれは作り直した2代目です。最初の版は「支えの上に乗った全体の重心が、支えの外に出たら倒れる」という計算式で判定していました。升目に板を置くだけなので、傾かないし、ずれないし、置く前に結果が確定していました。だから「ここに置くと崩れます」と赤で先に表示するしかなく、それは遊びとして意味がありませんでした。

そこで本物の剛体物理に載せ替えました。落として、当たって、回って、ずれる。置いてみるまで分からない——ゲームとして成立させるために必要だったのは、賢いAIではなく、この不確かさのほうでした。

技術的な仕掛け

AIは3段階ありますが、いずれもAI専用の評価式を持ちません。プレイヤーとまったく同じ物理エンジンで、候補の手を実際に落としてみて結果を見るだけです。見習いは候補を順不同に見て「落ちない手」が1つ見つかった時点で決め、本気は候補11手を全部試していちばん揺れない手を選び、鬼は候補65手を試したうえで、上位6手について「その形を渡されたら相手はどれだけ置けるか」まで数えます。思考は Web Worker で別スレッドに逃がしています(メインスレッドでやると盤面によっては1秒以上固まるためです)。

王冠の幅と両端の高さ・落下の高さ・台座の幅といった数値は、AI同士に延々と積ませて実測して決めました。既定の難易度(本気)どうしで500局回すと、崩れるまでに積めたのは平均8.9体・いちばん多いときで20体・高さは平均4.4段でした。見習いAIと本気AIを戦わせると、先に崩すのは見習い側が65%です。ただしこれはAI同士の話で、人の勝ちやすさとは別物でした。「いちばん高いペンギンの真上に、角度をつけずに落とす」だけで挑む打ち手を500局ぶん自動で回すと、勝率は見習い19%・本気9%・鬼6%でした。すべてブラウザ内で完結します。

※数値は、公開しているゲームと同じコードを使い、AI同士は各500局、人の勝率は「てっぺんの真上・角度0」の打ち手で各500局試行した実測値です(誤差は約±3ポイント)。

v1を捨てて作り直した理由

最初のバージョンは「重心が支えの外に出たら倒れる」という計算式で判定していました。升目に板を置くだけなので、傾かないし、ずれないし、置く前に結果が確定していたのです。だから「ここに置くと崩れます」と赤で表示するしかなく、それは遊びとして意味がありませんでした。

v2は本物の2D剛体物理(Matter.js)に載せ替えました。落として、当たって、回って、ずれる。置いてみるまで分からない。予測表示(赤/緑で結果をネタバレする表示)は廃止し、操作も「ドラッグして離す」から「位置+角度を決めて落とす」に変えました。積むものも板からペンギン6種になり、形も重さも違います。

ペンギン6種と、王冠の話

ふつうはクセがない基本。ぽっちゃりは重く、下の段がきしみます。ほっそりは背が高くて立たせにくい。ばんざいは翼が横に広いので、引っかけて橋にできます。まんまるは足がなく転がります。ヒナは小さくて軽く、すき間に置けます。

覚えておくと得なのは、頭の王冠は飾りではなく足場だということ。上面が平らなので、そこに次のペンギンが乗ります。

AIは専用の評価式を持っていない

3段階のAIはいずれも、プレイヤーとまったく同じ物理で実際に落としてみるだけで、AI専用の評価式を持ちません。見習い(L1)は落ちない手を3つ見つけた時点で満足します。本気(L2)は候補33手を全部試して、いちばん揺れない手を選びます。鬼(L3)は候補65手を試したうえで、上位6手について「その形を渡されたら相手はどれだけ置けるか」まで数えます。思考はWeb Worker(ai.worker.js)で別スレッドに逃がしています——メインスレッドでやると盤面によって1秒以上固まるためです。

数値は実測で決めた

パラメータは思いつきではなく、AI同士に積ませて実測して決めています。王冠の幅(頭の半径比)は x1.55→平均5.9体 / x1.9→6.3体 / x2.2→8.1体 / x2.5→6.5体 という結果から x2.2 を採用。落下の高さは74pxが最良(58pxで7.6体、46pxで7.1体)。台座の幅は170px(150pxで6.6体、190pxで7.8体)。手番の変わり目で揺れを止める処理を入れると5.6体→6.2体に改善しました。

本番とまったく同じ進め方(1つのエンジンを回し続ける)での対局は平均6.2体・最長9体。そして10局中7局は見習いAI側が崩しました——人間にも十分勝ち目があるということです。検証は world.test.js(ペンギンの剛体・落下・AIで12件)と match.test.js(本番と同じ進め方での対局5件)で行っています。

物理エンジンはMatter.js 0.20.0(MIT・同梱)。計算はすべてブラウザ内で完結し、外部送信はありません。

▶ 実際に遊んでみる
© D-studyLab / ミニゲームゲームズトップへ運営者情報プライバシーポリシー
近いものを遊ぶ
✂️ ヨミキリあなたの癖を学習する限定ジャンケン  └ ヨミキリの解説を読む 🧩 つみおろし逆向きテトリス。積んだ順を暴く  └ つみおろしの解説を読む