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
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗首都高速をフォーミュラマシンで駆け抜ける、ブラウザで遊べる 3D レースゲームです(three.js)。 最初のコースは 高井戸IC → 4号新宿線 → 三宅坂JCT → C1都心環状線(内回り)霞が関 → 谷町JCT → 3号渋谷線 → 用賀(約26km)。 12台のマシンがドライバー目線で全開バトルします。
| 操作 | キーボード | スマホ |
|---|---|---|
| アクセル | ↑ / W / Space / Z | ACCEL ボタン |
| ブレーキ | ↓ / S / X | BRAKE ボタン |
| ハンドル | ← → / A D | ◀ ▶ ボタン |
| 一時停止 | P / Esc | ❚❚ ボタン |
| ERS(末脚) | Shift / E / C | ERS ボタン |
| 消音 | M | 🔊 ボタン |
Shift / E(スマホは ERS ボタン)を押している間、最高速と加速が上がる。風よけ(スリップストリーム)とブレーキで溜まるダービージョッキー の脚質の考え方をフォーミュラマシンのレースに置き換えています。
マシンの脚質は最初にランダムで決まり、隠れていて、走りながら見抜きます(テスト用に index.html?debug&style=sashi のように開くと脚質を指定できます)。
マシンには「走っていて心地よい順位」があり、そこで走ると ERS がよく溜まり、前に出すぎるとマシンが熱を持って回生できず ERS が減っていきます。
| 脚質 | 心地よい位置 | 特徴 | 先頭の重圧 |
|---|---|---|---|
| 逃げ | 先頭 | 最高速・加速・コーナーが強い。ERS は短い | −5% |
| 先行 | 2〜4番手 | 前の集団で風よけを使い、残り1kmで抜け出す | −10% |
| 差し | 5〜8番手 | 中団で ERS を溜めてゴール前で差す | −12% |
| 追込 | 9〜12番手 | 最高速は控えめだが ERS が大容量。最後の直線でまくる | −14% |
js/main.js の SHARE_URL)が付く道路の線は OpenStreetMap の首都高(4号・C1・3号と三宅坂JCT・谷町JCT のランプ)を一方通行どおりにつないだ実際の経路で、橋・トンネルの区間と高さ(layer)から高架・地下の高さを決めています。 沿道のビルは 国土交通省 PLATEAU の3D都市モデル(東京都23区)の実際の輪郭と高さ(コース沿い約4.8万棟)で、道路にかかる建物だけ除いています。 道路は片側2車線(車線幅3.5m)、壁高欄・遮音壁・中央分離帯の照明柱・対向車線、首都高の緑の案内標識(出口・JCT の 1km / 500m 予告)を置いています。
| 区間 | 主な景色 |
|---|---|
| 高井戸〜永福 | 環八との交差、杉並清掃工場の煙突、甲州街道の上の高架と遮音壁 |
| 幡ヶ谷〜初台〜西新宿JCT | 東京オペラシティ、新宿パークタワー、東京都庁、コクーンタワー |
| 新宿〜代々木〜外苑 | タカシマヤ タイムズスクエア、NTTドコモ代々木ビル、新宿御苑、東京体育館、国立競技場、明治神宮野球場、聖徳記念絵画館と銀杏並木、右手に明治記念館 |
| 信濃町〜三宅坂 | 迎賓館赤坂離宮、赤坂御用地の下のトンネル、弁慶濠、左手にホテルニューオータニと東京ガーデンテラス紀尾井町、プルデンシャルタワー、左手にテックジム東京本校(永田町4番出口。千代田区平河町2-7-2 VORT永田町 6F。屋上の鉄塔の上の看板、高さ約520m・直径約140mのアドバルーン(外苑あたりから見える)、首都高の左側の広告看板2枚)、最高裁判所、国立劇場、国会議事堂 |
| C1 霞が関 | 三宅坂JCT から地下へ。霞が関の官庁街、霞が関ビル、虎ノ門ヒルズ |
| 谷町JCT〜六本木〜渋谷 | アークヒルズ、東京タワー、東京ミッドタウン、国立新美術館、テレビ朝日、六本木ヒルズ森タワー、青山霊園、渋谷スクランブルスクエア、ヒカリエ、SHIBUYA109、セルリアンタワー |
| 池尻〜三軒茶屋〜用賀 | キャロットタワー、駒沢オリンピック公園の記念塔、世田谷ビジネススクエア、晴れた日は正面に富士山 |
沿道の名所に近づくと、画面の上に「左手に 国立競技場」のように案内が出ます(第1コースは34か所、ほかのコースも5〜15か所。トンネルの中の名所は出入口で案内)。 遠くには東京スカイツリーと富士山も見えます。ビルにはタイル・ガラスの色と窓を付け、屋上には(架空の)広告看板や給水塔、公園の木には10月らしく銀杏の黄色と紅葉の赤を混ぜています。 PLATEAU では箱になってしまう特徴的な建物(迎賓館・明治記念館・絵画館・国会議事堂・国立競技場・神宮球場・東京タワー・SHIBUYA109・東京ビッグサイト・テックジム)は手作りのモデルに置き換え、ホテルニューオータニの青いラウンジやキャロットタワーの橙の屋上は、PLATEAU のビルの屋上に飾りを付けています。
レインボーブリッジ(3・4・16番のコース)は、白い2本の主塔の間を主ケーブルが放物線で垂れ下がり、ハンガーロープで路面を吊る吊り橋です。上の段が首都高、下の段が一般道とゆりかもめの2階建てで、両わきを白いトラスでつないでいます。 夜は主ケーブルが虹色に光り、塔の頂上に赤い航空障害灯が灯ります。ゆりかもめ(6両)は芝浦ふ頭から橋の下の段を通って、お台場海浜公園・台場の高架を行き来します。お台場にはフジテレビ本社ビル(球体展望室)と自由の女神像があります。
PLATEAU のデータがある東京23区内でそろえています。新しいルートは、下の「コースデータの作り方」で OSM の経路と PLATEAU の建物からデータを作り、js/courses.js に区間テロップ・出口・ランドマークを足せば遊べます。
Web 版はビルド不要です。静的ファイルとして配信してブラウザで index.html を開きます(ES Modules を使うため file:// では動きません)。
python3 -m http.server 8000
# → http://localhost:8000/
Capacitor で Android アプリにしています(パッケージ名 jp.techgym.shutoko)。ゲームのファイルはアプリに同梱するので、オフラインでも遊べます。
docs/apk-qr.pngANDROID_KEYSTORE_BASE64 など 4 つ)が登録されていれば、本番広告の署名付き AAB(Google Play 用)も作り、Actions の Artifact shutoko-release-aab に置きますnpm ci
npm run android:sync # www/ にコピーして Android プロジェクトへ反映(テスト広告)
npm run android:open # Android Studio で開く
Google Play の掲載情報(日英の紹介文・アイコン・フィーチャーグラフィック・スクリーンショット)は docs/store/ にあります(listing.md)。
Google Play 用は ADMOB_MODE=production npm run build && npx cap copy android で本番広告に切り替えてから ./gradlew bundleRelease(CI が自動で行います)。
Android 版と同じ Capacitor のプロジェクトに ios/ を足して、iPhone 用のアプリにしています(Bundle ID jp.techgym.shutoko、iPhone 専用・横画面固定)。
docs/IOS_BUILD.mdjs/ads.js の UNITS.ios.github/workflows/ios.yml)docs/store/ios/(listing.md、スクリーンショット 2622×1206 日英各 4 枚、ヘッダ 3840×1646、検索結果 3840×2560)npm ci
npm run ios:sync # テスト広告で iOS プロジェクトへ反映
npm run ios:release # App Store 用 (本番広告)
npm run ios:open # Xcode で開く
js/course-data.js(道路の線・高さ・トンネル区間・建物)は次の手順で作ります。
/api/0.6/relation/<id>/full で、三宅坂JCT・谷町JCT 付近を /api/0.6/map?bbox= で取得python3 tools/osm_route.py … 一方通行どおりに 高井戸 → 霞が関 → 用賀 の経路を求めて path.json に出力
(C1 一周は python3 tools/osm_loop.py rc1.osm "Inner directions" 35.65385 139.74786 > path_c1.json、
ほかのルートは python3 tools/osm_path.py --osm <路線のデータ…> --via 緯度,経度 --via … > path_xx.json で通過地点をたどる。
路線リレーション: 11号台場線 4257564・湾岸線 4256202・中央環状線 4256077・6号向島線 4256960・1号羽田線 4256244・5号池袋線 4256611・2号目黒線 4256339・7号小松川線 4257465・9号深川線 4257496)udx/bldg)の輪郭(lod0RoofEdge)・高さ(measuredHeight)・名前を取り出すpython3 tools/build_course.py path.json <建物のディレクトリ> > js/course-data.js
(C1 一周は python3 tools/build_course.py path_c1.json <建物のディレクトリ> C1_DATA --loop > js/course-c1-data.js。ゴールのあともスタートの先へ道とビルが続く)データの出典: © OpenStreetMap contributors(ODbL)/ 国土交通省 Project PLATEAU(PLATEAU サイトポリシー、CC BY 4.0 互換)。
| ファイル | 内容 |
|---|---|
js/course-*.js | 各コースの道路の線・高さ・トンネル区間・建物(自動生成) |
js/courses.js | コース定義(区間・出口・緑地・ランドマーク)と提案ルート。テックジム(アドバルーン)・東京タワー・国会議事堂・スカイツリー・富士山は全コース共通の目印 |
js/route.js | 道路の線を 2m 間隔にし、位置・向き・曲率・高さを引けるようにする |
tools/ | コースデータを作るスクリプト(OSM の経路探索・PLATEAU の建物の取り込み) |
js/world.js | 高架・壁高欄・遮音壁・トンネル・照明・標識・PLATEAU のビル群・空(チャンク単位で生成) |
js/models.js | レーシングマシン、ランドマーク、テクスチャ(路面・窓・標識) |
js/cockpit.js | ドライバー目線のコクピット(ノーズ・前輪・ヘイロー・ステアリングの表示とシフトランプ) |
js/main.js | レース進行、操作、AI、接触、カメラ、HUD |
js/effects.js | 火花・破片・タイヤスモーク |
js/traffic.js | 対向車線の一般車 |
js/audio.js | 効果音(すべて WebAudio で合成) |
テスト用に index.html?debug で開くと、コンソールから dbg.warp(距離m) で好きな地点へ移動できます。
著作権はテックジム株式会社に帰属します(All rights reserved)。許可なく複製・改変・再配布すること、Web サイトやアプリ(Google Play、App Store など)として公開・販売すること、名前・ロゴ・アイコン・画像を使うことを禁止します。 テックジムの受講生が学習目的で複製・改変することは許可しますが、アプリストアでの公開・広告の掲載・販売などの商用利用は禁止し、著作権表示を残してください。 three.js(MIT)・OpenStreetMap(ODbL)・PLATEAU(CC BY 4.0 互換)などは、それぞれのライセンスのままです。詳しくは LICENSE を見てください。