Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
A shooting game based on accurate orbital mechanics.
Translation pending
GamesTypeScript · JavaScriptGitHub @MikanixonableOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
軌道遷移、姿勢制御、時間加速、会合、射撃を一つのゲーム状態の上で扱う、WebGPU 製の 3D 軌道力学シューティングです。詳細なコードベースの読み方は 開発 WIKI、ゲームがどう振る舞うべきかは SPEC を参照してください。 GitHub Pages 版を WebGPU 対応ブラウザで開き、ステージを選択してください。ゲーム中は H で操作説明を表示できます。 戦闘ビューでは姿勢・推力・照準を直接操作し、マップビューでは軌道・マニューバーノード・時間加速を扱います。近距離戦と軌道遷移は別ゲームではなく、同じシミュレーションの異なる時間スケールです。 マニューバーノードは噴射後の状態と実行時刻を持ち、PRO / RET、NRM / ANM、IN / OUT の3軸で Δv を編集できます。L1〜L5 は二天体系の回転座標から ECI 状態へ変換され、航法やマップ表示の基準として使われます。 最適遷移を自動生成する方式ではなく、プレイヤーが予測軌道を見ながらノードを置いて軌道を組み立てます。 船体は ShipAssembly として、モジュール実体と接続辺からなるグラフで保持されます。cockpit、tank、thruster、RCS、weapon、dock、solar_panel、radiator、booster などが個別の状態を持ちます。Read the full README ↗
軌道遷移、姿勢制御、時間加速、会合、射撃を一つのゲーム状態の上で扱う、WebGPU 製の 3D 軌道力学シューティングです。詳細なコードベースの読み方は 開発 WIKI、ゲームがどう振る舞うべきかは SPEC を参照してください。
| 項目 | 内容 |
|---|---|
| 実行環境 | ブラウザ / WebGPU |
| 描画 | Three.js WebGPU 描画器 + TSL |
| 言語 | TypeScript |
| 物理 | RK4、Kepler 軌道、2次重力場、大気抵抗、太陽放射圧、剛体姿勢 |
| 航法 | マニューバーノード、ラグランジュ点、慣性系 / 回転系 |
| 保存 | ブラウザの localStorage + エクスポート |
| 公開 | GitHub Pages |
[!TIP] GitHub Pages 版を WebGPU 対応ブラウザで開き、ステージを選択してください。ゲーム中は H で操作説明を表示できます。
戦闘ビューでは姿勢・推力・照準を直接操作し、マップビューでは軌道・マニューバーノード・時間加速を扱います。近距離戦と軌道遷移は別ゲームではなく、同じシミュレーションの異なる時間スケールです。
| モード | 内容 |
|---|---|
| stage 00 | 弾薬を回収してから始まる無限耐久サバイバル |
| stage 0 | 周囲 5 km の敵を相手にする 120 秒スコアアタック |
| stage 1 | 高度 420 km の地球低軌道で近傍軌道の敵 5 機を撃破 |
| stage 2 | 通常軌道と高楕円軌道が混在する戦域 |
| CREATIVE | 軌道要素・ラグランジュ点などを使って物体を配置するサンドボックス |
マニューバーノードは噴射後の状態と実行時刻を持ち、PRO / RET、NRM / ANM、IN / OUT の3軸で Δv を編集できます。L1〜L5 は二天体系の回転座標から ECI 状態へ変換され、航法やマップ表示の基準として使われます。
最適遷移を自動生成する方式ではなく、プレイヤーが予測軌道を見ながらノードを置いて軌道を組み立てます。
船体は ShipAssembly として、モジュール実体と接続辺からなるグラフで保持されます。cockpit、tank、thruster、RCS、weapon、dock、solar_panel、radiator、booster などが個別の状態を持ちます。
ドッキングした船体は一つの統合船体として扱われ、燃料・損傷・展開状態などもモジュール単位で保存されます。
敵との交戦では距離だけでなく相対速度が重要です。ターゲット運動と弾速から見越し点を求め、実体弾を発射します。射撃は高倍率の時間加速中には行えません。
地球は一枚の画像ではなく、地表タイル / 地形 / 大気 / 雲 / 大気光 / オーロラ / 照明を別系統として構成します。地表はタイル要求・常駐キャッシュ・ページテーブルを経て GPU 材質へ渡されます。
描画側には WebGPU / TSL、レイマーチング、ブルーノイズ、熱放射、複数の雲描画経路などの実装があります。
軌道伝播は単純な二体問題だけではありません。点質量重力に加えて J2 / C22 の2次重力場、多体重力、大気抵抗、太陽放射圧、日照・遮蔽を扱います。地球では主に J2、非軸対称性を持つ天体では C22 も評価できます。
大気圏では空力荷重・加熱・燃え尽きも計算します。物理計算は src/physics/ に分離され、Three.js に依存しません。
マップビューは表示原点と回転を分けて選択でき、慣性系、公転回転系、自転系を扱います。軌道線は各サンプル時刻で座標変換されるため、回転する基準系でも時間変化を保ったまま表示できます。
同じ画面上でラグランジュ点、予測軌道、マニューバーノード、Δv 操作を確認できます。
| キー | 操作 |
|---|---|
| W / S | 前進 / 後退 |
| A / D | 左 / 右並進 |
| Q / E | 上 / 下並進 |
| I / K | ピッチ |
| J / L | ヨー |
| U / O | ロール |
| P | RCS 回転制動 |
| F | プログレード方向へ向く |
| C | プログレード姿勢保持 |
| 1〜4 | 推力レベル |
| T | ターゲット選択 |
| Z | 照準ズーム |
| Space / 左クリック | 射撃 |
| 5 / 6 | ブースター分離 / 点火 |
| 7 / 8 | 太陽電池パドル |
| 9 / 0 | ラジエーター |
| キー | 操作 |
|---|---|
| , / . | 時間倍率を下げる / 上げる |
| N | 次のマニューバーノードまでワープ |
| M | 戦闘ビュー / マップビュー |
| W / S | Δv: PRO / RET |
| A / D | Δv: NRM / ANM |
| Q / E | Δv: IN / OUT |
| X | ノード / 軌道計画を削除 |
| キー / 操作 | 内容 |
|---|---|
| 矢印キー / ドラッグ | カメラ回転 |
| 二本指 / 中ボタンドラッグ | パン |
| ピンチ / ホイール | ズーム |
| ダブルタップ / ダブルクリック | 注視 |
| G | 機体姿勢へ追従 |
| H | 操作説明 |
| ESC | ポーズ / 設定 |
| F3 | デバッグ情報 |
| F5 | 手動セーブ |
| F9 | セーブ管理 |
物理・ゲーム状態を正本とし、HUD・軌道線・マーカーなどはそこから導出します。描画や DOM がゲーム状態の所有者にならないよう、フレーム処理は概ね 入力 → シミュレーション → 表示同期 → 描画 の順に進みます。
コードベースを詳しく読む場合は 開発 WIKI を参照してください。層・import・正本の規則は ARCHITECTURE、コードの書き方は CODING-RULE が正本です。
npm install
npm run dev
Node.js 20 以上、WebGPU 対応ブラウザを推奨します。
| コマンド | 用途 |
|---|---|
npm run typecheck | TypeScript 型検査 |
npm run test | 全テスト |
npm run test:physics | 物理テスト |
npm run test:game | ゲームテスト |
npm run test:render | 描画テスト |
npm run lint | ESLint |
npm run check:boundaries | アーキテクチャ境界検査 |
npm run render-lab | 描画実験環境 |
npm run cloud-lab | 雲の実験環境 |
npm run bgm-lab | BGM 試聴環境 |
npm run ci | 総合検証 |
より詳しい開発手順、ディレクトリ構造、テストの使い分けは 開発 WIKI にまとめています。
| データ | 出典 / 用途 |
|---|---|
| 惑星テクスチャ | Solar System Scope — CC BY 4.0 |
| 惑星全球モザイク | USGS Astrogeology Science Center |
| 地球表面 / 地形 / 気象 | NASA Earth Observatory、NOAA NCEI ETOPO、ERA5 |
| 海岸線 | Natural Earth |
| タンパク質構造 | RCSB Protein Data Bank |