ペンギンを1体ずつ積んでいきます。
崩した方が負け。3本先取。
置いてみるまで、どうなるかは分かりません。
本物の2D物理で動いています。
ほかのゲーム ・ D-Study Lab
「積みバトル」は、ペンギンを1体ずつ積んでいく対戦ゲームです。ルールはひとつ、先に崩した方が負け。遊び方は、まず画面を左右になぞって(マウスなら動かすだけで)ペンギンを横に動かし、↺ ↻ のボタン(キーボードなら ← →)で傾け、「ここで落とす」か画面タップ、または スペース キーで落とします。1体でも台から落ちたら、落とした側の負けです。自分の手番でも、先に積んであったペンギンが押し出されれば自分の負けになります。
最初のバージョンは、「重心が支えの外に出たら倒れる」という計算式で判定していました。升目に板を置くだけなので、傾きもしないしずれもしない。つまり置く前に結果が確定していたのです。そうなると「ここに置くと崩れます」と赤で表示するくらいしかできず、それは遊びとして意味がありませんでした。v2 では本物の2D剛体物理(Matter.js)に載せ替えています。落として、当たって、回って、ずれる。置いてみるまで分からない、という状態をつくるための作り直しでした。積むものも板からペンギン6種(形も重さも違う)に変わり、操作は「ドラッグして離す」から「位置と角度を決めて落とす」に、結果をネタバレする予測表示は廃止しました。
ペンギンは6種類です。ふつうはクセがなく、ぽっちゃりは重くて下の段がきしみ、ほっそりは背が高くて立たせにくい。ばんざいは翼が横に広いので引っかけて橋にでき、まんまるは足がないので転がり、ヒナは小さくて軽いのですき間に置けます。頭の王冠は飾りではなく足場で、上面が平らなのでそこに次のペンギンが乗ります。AIは3段階で、いずれもプレイヤーと同じ物理で実際に落としてみるだけです。AI専用の評価式は持っていません。見習い(L1)は落ちない手を3つ見つけたらそこで満足し、本気(L2)は候補33手を全部試していちばん揺れない手を選び、鬼(L3)は候補65手を試したうえで上位6手について「その形を渡されたら相手はどれだけ置けるか」を数えます。思考は Web Worker で別スレッドに逃がしています。メインスレッドでやると盤面によって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側が崩しています。人間にも勝ち目がある、という確認です。