このプロジェクトについて

singedTerraは、Wendell Hicken氏のScorched Earth (1991) へのオマージュとしてTypeScriptでゼロから書き上げられた、ブラウザベースのターン制砲撃ゲームです。角度を選び、風を読み、パワーを設定して発射し、地形にその結果が刻まれるというクラシックなループを継承しています。単一のブラウザでの2〜4人ホットシート対戦、またはSupabaseの公開・非公開ルームを通じたオンラインプレイが可能です。 コアメカニクス:地形はピクセル単位のビットマップで構成されており、爆発によって実際に穴が開き、支えを失った地面は崩落し、戦車はクレーターに沈み込みます。また、土系武器で新たな遮蔽物を構築することも可能です。各ラウンドにはシード値が設定され、各ターンに決定論的な風ベクトルが割り当てられるため、すべてのクライアントで同一の弾道が計算されます。16種類の武器には、直接射撃、空中爆発、跳ね返る爆弾、ナパーム、地形構築、トンネル掘削、防御などが含まれます。移動には燃料を消費し、ダメージを与えるとクレジットを獲得でき、複数ラウンドにわたる試合の中で弾薬、シールド、バッテリー、燃料に分配する必要があります。演出面では、自作の戦車、黄昏の戦場、弾道計測器、衝撃ライティング、画面シェイク、合成オーディオが盛り込まれています。 タンクガレージ:各プレイヤーにはガレージが用意されています。Foundry、Ranger、Bulwark、Jackalのいずれかのシャーシから開始し、機動力、車体、砲塔、砲身のパーツを組み合わせてカスタムシルエットを作成でき、それがロースタープレビューに表示され、試合に反映されます。 モードとネットコード:コンピュータ制御の席は人間と同じ決定論的物理演算を使用しており、ホットシートモードとオンラインモードで物理演算に差異はありません。ホットシートはHotSeatClientを介してブラウザ内で共有エンジンを直接実行します。オンラインプレイでは、各ブラウザが同じエンジンのコピーを実行します。Supabaseがルームのアクションを検証し、シーケンス番号を割り当て、順序付けられたログを保存し、確定した行をRealtime経由でブロードキャストします。オンライン対戦の正典は「シード値+順序付けられたアクションログ」であり、ゲーム状態はサーバーからストリーミングされるのではなくローカルで再構築されます。これにより、固定タイムステップ、シード付き乱数、リプレイの同一性が設計上の契約として組み込まれています。 操作方法:矢印キーで砲身の方向調整とパワーの増減を行い、AおよびDキーで移動(燃料消費)します。Qキーで選択武器を切り替え、SpaceまたはEnterキーで発射または選択中のシールドを起動します。Gキーで弾道ガイドを切り替え、Mキーで合成オーディオのミュート/解除を行い、Fキーを長押しすると現在のショットをローカルで早送りします。タッチレイアウトでは、キーボードの代わりにAim、Power、DriveをまとめたCommand Deck、ユーティリティとしてのWeaponとMenu、そして戦術レールに配置されたFire、Store、fuel、Arsenalを使用します。デスクトップでは、アクティブな戦車から外側へドラッグすることで、発射せずに角度とパワーを設定できます。 実行と検証:本プロジェクトにはNode 24 LTSラインのNode 24.15以降およびnpmが必要です。npm install後にnpm run devを実行すると、Viteクライアントがlocalhost:5173で提供され、ホットシートプレイにバックエンド設定は不要です。オンラインプレイにはclient/.envにVITE_SUPABASE_URLとVITE_SUPABASE_ANON_KEYが必要です。anonキーは公開クライアントに同梱されますが、サーバー側のデータは行レベルセキュリティ(RLS)とEdge Functionの検証によって保護されています。検証コマンドには、npm run check(型チェックおよび決定論的エンジンハーネス)、npm run test:client(VitestクライアントおよびDOMテスト)、npm run check:edge(Supabase Edge Functions用のDenoテスト)、npm run test:e2e(プロダクションChromiumでのレイアウトおよびゲームプレイチェック)、npm run buildがあります。CIはすべてのプルリクエストで同様のゲートを実行し、shared/src/engine/配下の変更は決定論的なリプレイを維持する必要があります。 リポジトリ構成とドキュメント:client/にViteアプリ、Canvasレンダラー、HTML HUD、入力およびロビーを格納し、shared/に決定論的エンジン、リプレイロジック、共有型を格納しています。supabase/にはPostgresマイグレーションとステートレスなEdge Functionレフェリーを、scripts/checks/に決定論的エンジンとコントラクトハーネスを、e2e/にプロダクションブラウザのゲームプレイおよびレイアウトガードレールを、docs/にプレイヤー、アーキテクチャ、開発およびプロジェクト記録を格納しています。ドキュメントには、プレイ方法、アーキテクチャ、開発と運用、UIシステム、および現在の仕様が記載されています。本プロジェクトはMITライセンスの下で公開されており、オリジナルのScorched Earthの作者とは提携しておらず、承認も受けていません。