
2026/07/31 16:16
ベルトラナー:ゲームデザインポストモーテム
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
BELTRUNNER は、Jinks エンジンを基盤として開発された独自のアーケードシューティングゲームであり、#GMTKjam 2026 でコンテストに出展されています。コード行数は約 1,300 行です。このゲームはクラシックな『Asteroids』の形式を再解釈し、時間とのハイリスクレースを導入しています。プレイヤーは番号付きゲート(5→1)を通過し、ブラックホールからの重力の影響を管理しつつ、限られた「時計ステーク」を守ります。従来のクローンとは異なり、このゲームでは番号で種付けされた決定論的な軌道を利用しており、これは公平で学べるしくみであり、様々なリスタートにおいて完璧な記録可能な対局を可能にしています。
難易度は 4 つの幕に分けられた計 16 のウェーブを通じて増大し、各幕にはプレイヤーの熟練度を試す新たなゲート挙動が提示されます。パワーアップには [T] TIME、[I] INVINCIBLE、[S] STOP が含まれ、さらに特定のクローバー石の順序によって発見される隠された [E] EXTRA ジャックポット(時間を、無敵性、そして凍結を組み合わせる)も用意されています。『Bomb Jack』をインスピレーション源としており、完全なキャンペーンをクリアすることで元祖ゲームがアンロックされ、PUSH START コントロльを使用してタイトル間をシームレスに切り替えることができます。
技術面では、BELTRUNNER は実在するベクターグラフィックス、エッジ衝突のための正直なトーラスラップピング、多角形・楕円体衝突ボディ、そして Jinks エンジンに構築された高度な弾性物理を備えています。また、岩石の密度を報酬のスケーリングに活用する「フィールドエコノミー」を採用しており、タイポグラフィックグリッドやグリーニッチタイムシグナルのピップのような動的な音声キューといった明確なビジュアルインターフェースで、プレイヤーを複雑な重力への習熟へと導いています。追加機能としては、ブラックホールサン重力効果が含まれます。このシステムはこれらのメカニクスを汎用化するように設計されており、将来的なゲームが再構築を必要とせずに共有コードライブラリを継承できるようになっています。さらに、SDL2/GLES2 バージョンを Linux、Wii、Dreamcast など様々なプラットフォームへの移植も計画されています。
本文
Jinks エンジンで構築した「BELTRUNNER」開発ポストモルテム
アステロイドスのアーケード忠実バージョンJinksを公開して以降、同じシステム上で構築されたオリジナルゲーム『BELTRUNNER』の開発とデザインについて事後報告します。本稿では、古き良き手法を踏襲しつつも、ゲームの存在がシステム自体を成長させた具体的なエピソードを紹介します。
探求の過程:コンセプトの変遷
プロトタイプ当初は、アステロイドスとは全く異なる**オービタルシューター(スペースデュエルに近い)**として構築されました。しかし、プレイしてみて面白味がなかったため、方向性を転換しました。
- 決定論的軌道の限界: アステロイドスの面白さは不確かな隕石の漂流にあります。「獲物」を撃つのではなく、「回避」が主役であるべきです。
- モーションのカオス: ターゲットの配置よりも、モーション自体の無秩序さが面白さの源となります。
- 守り抜いた要素: 番号付きターゲットは「ハイライト」として残されました(このアイデアは Phoenix の曲『Countdown』に触発されています)。
最終的に、アステロイドスの骨格に戻りつつも、全貌を「ドンキーコンゴ'94」の仮面の下に隠すように設計しました。
仮面の裏側:ゲームプレイの流れ
ゲームは大きく分けて 2 つのフェーズから構成されます。
ステージ 1:アステロイドスの復刻
- 古典的要素: 巨大な岩、スラストと漂流、分裂と復活を再現しました。
- 唯一の手がかり: ヒット時に出現する**「レースタイマー」**です。これにより「すべてがいつものようではない」とプレイヤーに気づかせます。
- ゴール: フィールドクリア後、ブラックホールが開くことで重力を利用してダッシュできます。
ステージ 2:本格的なゲーム開始
- ゲート通過のループ: 漂流する岩フィールド内に散らばる番号付きゲートを「5…4…3…2…1…」の順で通過します。
- カウントダウン中は飛行し続け、最後の「0」でワープしてループを完了します。
- 学習プロセス:
- 最初は機体(シャシー)の操縦を習得させます。
- アステロイドスの操作ができれば筋肉記憶だけでクリア可能ですが、レースタイマーに押され続けることで移動モデルをマスターさせます。
リソース設計
- 時間こそがリソース: ライフはありません。時間が唯一の制約です。
- 二つのカウントダウン:
- 通過すべき**「ゲートの数」**(ゼロに向かう)。
- 迫りくる**「レースタイマー」**(ゲートごとに + 秒、隕石への衝突で - 秒)。
このシンプルな構造が、複雑な帳簿処理を一瞬の賭け事に凝縮しています。
ステップアップ式難易度:ニンドンタの流儀
ゲームは16 波にわかれ、4 つのアクトに分けて進行します。無限に飽和する Ramp ではなく、明確な終了を迎える構造です。
| アクト | 波数 | メカニック・学習内容 | 目的 |
|---|---|---|---|
| I | 1〜4 | リビール: 純粋なアステロイドス 楕円ゲート | 導入と基本操作の習得 |
| II | 5〜8 | 方向性(一方通行)ゲート: 経路探索 | 練習と技術の定着 |
| III | 9〜12 | 回転するゲート: タイミング | 高度な操作の実践 |
| IV | 13〜16 | 両方の要素同時運用: 統合試験 | 締めくくりと応用 |
-
学習リズム: 「導入 → 練習 → 練習 → 締めくくり」という構成こそが任天堂流です。
- 新しいメカニックは一度教え、3 波かけて丁寧に練習させます。
- チュートリアルではなく、画面に新しい要素が表示された時にのみヒント(乾杯)を与えます。
-
ゲートの進化:
- 初期は丸いリングでしたが、擦り抜ける感覚が違和感があったため楕円スロットに変更しました。
- 方向性と回転性は単なる装飾ではなく、経路探索やタイミングの問題として実装されています。
決定論的なゲームプレイ:アーケードの流儀
パックマングやドンキーコンゴなど、愛するアーケードゲームの魅力は**「コース」**にあります。レイアウトを覚えればスキルが向上します。
-
全要素の決定論:
- 岩の出現、ゲート配置、パワーアップ位置などすべてのランダムさは、一つのシードされたストリームから生成されます。
- 同じシードと入力なら同じ進行となり、公平で再現性の高い環境を提供します。
-
学習とチューニングの利点:
- プレイヤーはフィールドを記憶できます(学習)。
- リプレイ性が保たれます(記録の無効化回避)。
- デバッグや調整が容易です(偶然に頼らずルールで解決)。
-
固定リズムのパワーアップ:
- 8 個目の岩破壊後に循環する
→[T]
→[I]
で発動します。[S] - 「1/8 の確率」などのごまかしはなく、スケジュールは学習可能です。
- 8 個目の岩破壊後に循環する
-
ボムジャック式ボーナス:
- 光るターゲットを順番に集めることで達成されます(マニュアルなしで教えられる仕組み)。
- 岩のフィールドにも適用:一度に一つの巨大な岩をハイライトして順次分割します。
ヒントと秘密の埋め込み
- 音声による導線: 並べ替えられた岩を順番通りに分割すると、持続的な音声が和音(ルート→三度→五度→オクターブ)になります。欠けているノートの点が見えなくても、和音が止まることで「何か間違っている」と気づかせます。
- クローバーの儀式: ライトに従って飛ぶと最後のストップは幸運の四葉クローバーのような岩です。これを完了すると
がドロップし、秘密のジャックポット(時間+無敵+フリーズ)を獲得します。[E] - 隠された要素: パワーアップの説明最初は
として表示され、発見後に????
と書換わります。岩自体に番号をつける試みは clutter になりすぎたため廃止しました。[EXTRA]
アトラクションモードと起源の物語
- 16 波全クリアでアトラクションモードが解放されます。
- 「PUSH START」ボタンが「Beltrunner/Asteroids」選択器に変わり、子孫(Beltrunner)は自身の起源物語を語ります。
緩やかな収集型パワーアップ:パンクの流儀
メニューでのアップグレードではなく、フィールド上のトークンを獲得するシステムです。
ドロップアイテム
ボッファのポップアップではなく、描かれたリングや彩色された文字で表示され、スローな漂流と最後に加速する点滅(期限切れの警告)が特徴です。
- [T] TIME: タイマー +10。ゲームの主要通貨。
- [I] INVINCIBLE: 数秒間無敵。岩に接触しても破裂せず、ビリヤードのように分裂します。
- [S] STOP: 岩とレースタイマーをフリーズ。本物の休憩時間です。
配置の秘訣:[E] EXTRA と [W] WARP
- [E] EXTRA(クローバー儀式):
- ジャックポットとして、時間+無敵+フリーズのセットを提供します。
- アンクライマックスな報酬から、最大のリスクとリターンへと進化しました。
- [W] WARP(ワープバンク):
- アクト I〜III の最終波のみ出現。
- ホスト岩を回して削り取り(shaving past)、撃破するとトークンを放出します。
- 効果: ブラックホールを開き、残りのゲートを放棄し、タイマーを銀行に預ける(即座の脱出手段)。
- 波 16 では出現しません(逃げるべきものがないため)。
重視されるループ: フィールドを擁護してゲートを太くし、ドロップを釣り上げ、保護された状態で経路を現金化する。ツールとリスクは心地よく並存します。
その他多数:システムとデザインの詳細要素
FIELD というリスクスロットル
- 全ての岩には不可視の重み(大 1 / 中 2 / 小 3)が負荷されます。
は画面全体に散らばっている岩の合計値です。FIELD- 岩を分割すると FIELD が上がり、ガンによるレーンクリアは「衛生管理」ではなく「意図的な賭け金上昇」となります。
- コマンド
はこれを倍増させます。[COMBO]
ラップエッジレース(本物のトーラス)
- 岩と船舶は画面の境界をまたいで存在します。
- クラシックなアステロイドスとの違い:中心点がエッジを跨ぐ際、反対側へ瞬時移動するのではなく、境界を越えて衝突処理されます。
- これにより、エッジを通る高速ルートが本物のスキルとなり、視覚的バグではなく機能として認識されます。
ブラックホール太陽
- アリーナ中央の微小なイベントホライズンです。
- 穴の縁を飛んだりリングを擦ったりすることでのみワープできます。
- サウンドデザインが支配的で、ダイブ(落下)によって解決される音楽的要素でもあります。
経済を知る高得点
- アトラクションの高得点テーブルは手動入力ではなく、ゲームが実際に支払える値から派生しています。
- ゲートやワープバンクのリチューニングに合わせて全体テーブルも連動します。
は理論上の最大スコアを提示する検査器として機能します。Jinks IDE
タイポグラフィグリッドシステム
- 4 サイズのテキストが、役割に基づいた同じ地点に表示され、プレイヤーは慣れを通じて学習できます。
- テーブル情報は「トップ」と「ステップ」として記述されます。
- BELTRUNNER ロゴは手調整されたグリッドを使用し、ベクトルモノスペースフォントによる穴を埋める工夫がなされています。
オーディオによる教育
- グリニッジ時間の信号音が最後の 6 秒に鳴り、B5(ほぼ 1000Hz)をトニックとします。
- ドローンベッドはサウンドトラックとして配置され、点灯シーケンスの和音を彩ります。
スヌーカーとしての無敵バンプ
が有効な間、バンプで岩を割り当てると両方の体が接触面に沿って離れます。[I]- 大きな岩にはバウンスし、小さな岩には突っ込んでいきます(形状から生まれる感触)。
ゲームがシステムに強制した要素
開発過程で、ゲームの実装要件によりエンジン自体が以下のように進化しました(これらの機能は他でも利用可能です)。
1. より優れたベクトル対応
- ラスタースクリーンではなく、白背景黒文字の真正なベクトル面を実装しました。
- シェルの描画ストロークグリフ、ディスプレイプロパティに基づく真正なビーム強度、フォスフォアブロームを維持する太いラインを追加しました。
2. 真のトーラスラッピング
- エッジを跨ぐ際の衝突処理を最短距離で行い、境界を超えます(角まで 4 コピーまで描画)。
- マップをスナップさせることなく、世界全体が本物のトーラス構造となります。
3. 見ているものと同じコライダー
- 初期の円形コライダーでは不正確な衝突が発生したため、多角形コライダーと回転する向きの楕円コライダーを採用しました。
- ゲートは細いフェーズの枝を通れるように調整され、実際の飛行ルートに即した接触判定を実現しました。
4. 本物のデフレックス(弾性衝突)
- 無敵状態で岩を叩く際、接触法線に沿った2D 弾性デフレックスを実装しました。
- 質量は幾何学から計算され、魔法のノックバックテーブルなしで「大きなものにはバウンスし、小さなものに突っ込む」挙動が再現されます。
5. いくつかの小規模な必要性
- 復活シールドの演出: グレース(Grace)が点滅し、岩に対して無敵だがギフトに対しては盲目です。
- ホストの脱出: ホスト(ブラックホール)が死ぬと衛星が離脱して漂流できます。
- デュアルバインド: スラストを方向キーまたはフェイスボタンで操作可能にしました。
- 静かな勝利: カート一つで「Beltrunner」と「Asteroids」の切り替えが可能で、CRT 電源オフスイッチのように目立たない設計です。
ジャム後の新天地:プラットフォームへの展開
開発は Jinks エンジンでのみ終わるものではありません。
- 第二のエンジンシェル: SDL2 と GLES2、および raylib デスクトップシェルなどを導入し、コアを未改修で Linux(デスクトップ/ハンドヘルド)、Nintendo Wii、Sega Dream Cast へと展開しました。
- 移植ではなく再構築ではない: 同じ 1,300 行、同じティックループ、同じ決定論シードストリームを保ちつつ、新しいシェルが満たすフレームごとの契約を読み取るだけで動作します。
- プラットフォーム非認識のコア: この契約を理解する機械は、このゲームを含む全てのライブラリを無料で継承できます。
約 1,300 件のアクティブな行:全体像
これがBELTRUNNER の全てです。アステロイドススクートの精神と同様、「本物」のコードが別の場所に存在するのではなく、全体ループが一つのアリーナに生息しています。
- 共有された骨格: 波、アトラクション、高得点、パワーアップ、サウンド、勝利、秘密解放——これらはコレクションの一部と骨格を共有しています。
- ゲームの進化: アステロイドスのように始まり、カウントダウンレースへと変化し、任天堂風に学び、ボムジャックのように隠れ、パンクのようにドロップし、そして16 波で学べるように終わります。
システム内部の詳細については引き続き控えますが、デザイン手法とそれがマシンに何を学習させたかについて、次回までお楽しみください!