ゲーム紹介
ブロブアリーナ3Dは、.ioスタイルの成長バトルをThree.jsとWebGLで作り直した作品です。平たい円ではなく本物の球体で、半透明のシェルの中でコアが光り、壁に囲まれたアリーナの床には太陽が一体ごとに本物の影を落とします。カメラは斜め見下ろしの角度でプレイヤーを追い、質量が増えるほど滑らかに引いていくため、相手が「エサ」から「脅威」に変わる瞬間を数字ではなく視覚でつかめます。ダウンロードするファイルはひとつもありません。すべてのメッシュは球・円錐・箱のプリミティブから読み込み時に生成され、420個のエサと9個のトゲ球はそれぞれ1回のインスタンス描画、ネームタグはブラウザ上のキャンバスに描かれます。
ライティングの下にあるのは2D版とまったく同じゲームです。半径は3.4 × √質量なので、質量を倍にしても体は41%しか大きくなりません。速度は240 × (18/r)^0.38で落ちていき、大きくなるほど鈍くなりますが、逃げられなくなるほど遅くはなりません。相手を飲み込むには質量が14%以上重く、かつ実際に相手の上に乗っている必要があり、吸収できるのは92%です。質量320を超えると超過分の1%が毎秒腐って消えます。スコアが「死んだときの質量」ではなく「到達した最大質量」なのはこのためです。AI15体は同じルールの下でそれぞれ違う食欲と度胸を持ち、ただ漂うのではなく狩り、逃げ、標的の未来位置を読んで先回りします。
操作方法
- PC: マウスを動かすとブロブがポインターの方向へ進みます。ポインターが遠いほど強く押し込みます。矢印キーやWASDも使えます。
- モバイル: 画面のどこでもドラッグしてください。指を置いた位置に仮想スティックが現れます。
- 最初の操作をするまで、そしてその後2.5秒間は誰にも食べられません。無敵の間はブロブが点滅します。
- ゲームオーバー後はSpaceかEnterで新しいランを開始します。ポーズはアリーナ全体を止めます。
- ⛶ ボタンでフルスクリーンになり、3Dビューが画面いっぱいに広がります。
- ミニマップの赤い点は自分を飲み込める相手、灰色の点はそうでない相手です。白い枠は今カメラが映している範囲です。
ルール
- 半径は3.4 × √質量です。すべての勝敗は質量で決まり、半径はアリーナをどれだけ覆うかを表すだけです。
- 大きいほど遅くなります。速度は240 × (18/r)^0.38で下限は62です。ただし最大サイズでもトップスピードの42%を保つので、完全に安全な者はいません。
- 他のブロブを飲み込むには質量が14%以上重く、なおかつ相手の中心が自分の体の中に入るほど深く重なる必要があります。すれ違うだけでは何も起きません。
- 吸収できるのは相手の質量の92%です。エサは自分の大きさに関わらず常に質量2なので、エサは序盤の手段であって戦略ではありません。
- 質量320を超えると、超過分の1%が毎秒消えていきます。首位は止まっている間ずっと縮み続けます。
- 緑のトゲ球は質量260以下では無害で、小さなブロブにとっては要塞です。260を超えると質量が72%に削られ、208を下回ることはありません。
- AI15体は同じルールで動き、それぞれ攻撃性(0.55〜1.35)と慎重さ(0.7〜1.5)が個別に割り振られます。しつこく追う個体もいれば、すぐ諦める個体もいます。
- 倒された相手は1〜2秒後に自分から離れた場所へ再出現し、こちらの現在の質量を基準にサイズが決まります。エサのこともあれば、互角のこともあれば、一口で飲み込む捕食者のこともあります。
- スコアはそのランで到達した最大質量です。腐敗が良い結果を静かに削り取ることはありません。
- カメラは成長に合わせて引いていき、アリーナの大部分が一望できる大きさになるとそれ以上は広がりません。
攻略とコツ
「小さい相手」ではなく「14%差」を狙う
単に自分より小さいだけでは飲み込めません。質量が14%以上重く、相手の中心が自分の体内に入っている必要があります。自分の90%の質量の相手は獲物ではなくにらみ合いで、その周りを回る1秒は本物の捕食者が距離を詰める1秒です。3分の1以上重い相手だけを狙えば、一度の突進で決着します。
小さいうちが最速 — 序盤は欲張れ
開始時の質量ならほぼトップスピードで動け、初期フィールドの約半分はすでに食べられる状態です。この最初の30秒がゲームで最も安い質量です。エサをついばむより小さなブロブに突撃しましょう。質量20の一体はエサ10個分で、かかる時間ははるかに短いのです。
巨大な相手が来たらトゲの上に座れ
質量260以下ではトゲは何のダメージも与えず、破裂するほど育ったAIは積極的にトゲを避けます。つまりトゲの一つひとつが、小さなブロブが入り込める要塞になります。序盤にミニマップで9個の位置を覚えておきましょう。後で必ず必要になります。
目の前のブロブではなくミニマップを読む
成長するとカメラが引くため、周囲の相手が本当に危険になるまさにその瞬間に、かえって小さく見えます。ミニマップは嘘をつきません。赤は「今すぐ飲み込める相手」という意味です。赤い点が二つ寄ってきているなら、距離が詰まる前に離脱してください。全速の追跡戦は先に舵を切った方が勝ちます。
首位に立ったら止まらず食べ続ける
質量320を超えると超過分の1%が毎秒腐ります。隅に陣取った首位は、静かに勝ちを返上しているのと同じです。価値がないように見えてもエサの群れを掃き続けてください。重要なのは質量2ではなく、自分が空けた場所にエサが補充され、その場所でAIが育つという事実です。
逃げる相手は壁へ追い込む
AIは標的の先を読んで動き、脅威しきい値5%を超えた瞬間に逃げ出します。こちらが実際に食べられるようになるずっと前です。直線での追跡は通用しません。相手はほんの少し遅いだけだからです。代わりに壁へ押し込み、相手が向きを変えるところでインを取りましょう。アリーナの境界が代わりに追い込んでくれます。
よくある質問
これは本当に3Dですか、それとも3D風の2Dですか?
本物の3Dです。Three.jsを通してWebGL上で動作し、透視投影カメラ、プレイヤーを追いかけるシャドウマップ付きの平行光源、半球ライト、距離フォグ、グラデーションのスカイドームを備えています。すべてのブロブは実際の球体で、半透明のシェルの内側に別の発光コアメッシュが入っています。床の影も描き込んだ円ではなく本物のシャドウマップです。
明らかに自分より小さいのに、なぜ食べられないのですか?
二つの条件が同時に成立する必要があります。質量が最低14%重いこと(自分の90%の質量の相手は永久に食べられず、振り切ることしかできません)、そして相手の中心が「自分の半径 − 相手の半径の35%」の距離まで入り込むことです。二つ目のルールがあるため、かすめるだけでは何も起きません。ぶつかるのではなく実際に飲み込む必要があります。
誰にも攻撃されていないのに質量が減るのはなぜ?
質量320を超えた分は毎秒1%ずつ腐ります。暴走した首位が無敵になるのを防ぐ唯一の仕組みであり、スコアが「死んだときの質量」ではなく「到達した最大質量」である理由でもあります。減っているなら食べ足りていないということです。質量520あたりからは腐敗が毎秒エサ1個分に相当します。
緑のトゲ球には近づく価値がありますか?
質量260以下ではまったくダメージがないため、アリーナで最良の隠れ場所になります。自分を食べられるほど大きい相手はトゲで破裂するほど大きくもあるので、AIは大きく迂回します。260を超えると質量が72%に削られるため、本物の強者になった後は必ず計算に入れるべき唯一の地形になります。
ダウンロードやインストールは必要ですか?
いいえ。このゲームは、このサイトにあるThree.jsのローカルコピーを読み込むひとつのESモジュールです。プラグインもアプリストアもアカウントも不要で、ブラウザのタブでそのまま動き、ページが一度キャッシュされればオフラインでも遊べます。
ブラウザがゲームを実行できないと表示される、またはスマホの画面がPCよりぼやけて見えます。
このゲームにはWebGLが必要です。3Dビューの代わりにメッセージが表示される場合は、最新のChrome・Edge・Firefox・Safariに更新するか、ハードウェアアクセラレーションを有効にしてください。小さな画面ではアンチエイリアスを外し、シャドウマップを半分にし、球のポリゴン数を落とします。アリーナの広さ、エサの数、AI15体、すべてのルールはまったく同じで、描画予算だけが変わります。WebGLがない場合は、このサイトの2D版ブロブアリーナを遊べます。