Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗センターを守るあなたに、ひたすらセンターフライが飛んでくる。 100球すべて捕れるか!? を競うブラウザゲームです。
画面は 野手の背中越しにホームベースを見る3D視点(ホームラン競争をセンター側から見た構図)。 ナイター照明のスタジアムで、打者・投手・満員のスタンドを正面に見ながら打球を追います。
index.html をブラウザで開くだけで遊べます(Web 版はビルド不要)。Android / iOS アプリ版もあります(下記)。
docs/play-qr.png)Web 版のタイトル画面の左上には Google Play へのリンクを出しています(アプリ版では出しません)。
3D描画に同梱の three.js(vendor/three.min.js, MIT License)を使っています。
GitHub Pages などの静的ホスティングにそのまま置けます。
日本語と英語に対応しています。端末(ブラウザ)の言語が日本語なら日本語、それ以外は英語で表示し、タイトル画面左下のボタンで切り替えられます(設定は保存)。
文言は i18n.js にまとめています(構成は techgymjp/jet-fighter の js/i18n.js と同じ)。Android アプリは英語の端末ではアプリ名も「Center Fly」になります。
| 操作 | タッチ / マウス | キーボード |
|---|---|---|
| 移動 | 左下の 方角リング をタッチ(16方位に合わせる・中心からの距離で速さ) | 矢印キー / WASD / テンキー 1〜9(8方向) |
| ダッシュ | ダッシュボタン長押し(スタミナ消費) | Shift / Space / C |
| ジャンプ | ジャンプボタン | Z / J |
| ダイブ | ダイブボタン(移動方向へ飛び込む) | X / K |
| 一時停止 | — | P / Esc |
| 音のオン/オフ | 画面上部のスピーカーボタン | M |
| 着地点ナビのオン/オフ | 画面上部の「ナビ」ボタン | N |
移動方向は画面基準です(上 = 前進 = ホーム方向、下 = バック = フェンス方向)。 捕球は自動です。ボールが近づくと野手がグラブを差し出し、グラブの届く範囲(高さ・距離)にボールが入ると捕れます。 立っているときは高さ 2.3m・半径 1.1m、ジャンプ中は最高 3.8m まで、ダイブ中は飛び込んだ前方 2.5m 先まで届きます。
球数が進むほど難しい打球が増えます。
横画面で遊ぶゲームです。縦向きのときは「横向きにしてください」と表示して一時停止します。 対応ブラウザ(Android の Chrome など)ではスタート時に全画面・横向き固定になります。 画面は横長のスマホいっぱいに広がります(縦横比 4:3〜2.4:1)。ホーム画面に追加すると全画面で起動します。
着地点ナビ: 打球が上がると地面に黄色い輪が出ます。最初は大きく、落下が近づくほど落下点に絞られます。 フェンス際の打球は輪がオレンジになり「ジャンプ!」、走っても間に合わない打球には「ダイブ!」と表示します。
芝に落ちるボールの 影 が地面上の位置です。影の動きで落下点を読みましょう。
頭上を越える打球など画面外のボールは、画面端の矢印で方向と高さを表示します。
右上のミニマップ(画面と同じくホームが上)では打った直後から打球の方向が見えます。
フェンス際ではカメラがフェンスの外に出て、フェンスが半透明になります。
スコアは捕り方で加点(普通 100 / ランニング 150 / ジャンピング 250 / ダイビング 300 / ホームランキャッチ 500)+ 連続捕球ボーナス。
ベスト記録はブラウザに保存されます。
結果画面の「結果をシェア」から成績をシェアできます(対応スマホは成績画像つき。X・LINE・コピーにも対応)。 シェア文には紹介記事 https://techgym.jp/column/claude-code-game-center-fly/ と、ナビあり/なしが入ります。
音はすべて Web Audio API で合成しています(音声ファイルなし)。
Capacitor でゲームのファイルをアプリに同梱し、Android アプリにしています(オフラインで遊べます)。
構成は techgymjp/jet-fighter の docs/ANDROID_PORTING.md と同じです。
jp.techgym.centerflyビルドは GitHub Actions(.github/workflows/android.yml)で行います。
npm ci → npm run build(www/ に Web ファイルをコピーし、ads-config.js と build-info.js を生成)→ npx cap sync android → ./gradlew assembleDebugandroid-latest の center-fly.apk を差し替え(動作確認用・テスト広告)
https://github.com/techgymjp/center-fly/releases/tag/android-latest(QR コード: docs/apk-qr.png)https://github.com/techgymjp/center-fly/releases/latest/download/center-fly.apkANDROID_KEYSTORE_BASE64 / ANDROID_KEYSTORE_PASSWORD / ANDROID_KEY_ALIAS / ANDROID_KEY_PASSWORD)があれば、本番広告で署名付き AAB を作り Artifact に上げる手元で試すとき: npm install → npm run android:sync → npm run android:open(Android Studio が必要)。
アイコンと起動画面は assets/ の元画像から npx @capacitor/assets generate --android で生成しています。
Android 版と同じ Capacitor のプロジェクトに ios/ を足して作っています(構成は techgymjp/jet-fighter と同じ)。Mac での作業手順は docs/IOS_BUILD.md です。
jp.techgym.centerfly(Android と同じ)。iPhone 専用・横画面固定・全画面・プレイ中は画面を消さないnpm run ios:sync(テスト広告)/ npm run ios:release(本番広告。App Store 用)/ npm run ios:open.github/workflows/ios.yml で push のたびに Xcode でビルドできるかを確認(署名なし)、.github/workflows/ios-release.yml で本番広告の設定でビルドして TestFlight にアップロード(ビルド番号は実行回数 + 100)docs/store/ios/、掲載文は docs/store/ios/listing-appstore.md、審査用の説明は docs/store/ios/review-notes.md著作権はテックジム株式会社に帰属します(All rights reserved)。許可なく複製・改変・再配布すること、Web サイトやアプリ(Google Play、App Store など)として公開・販売すること、名前・ロゴ・アイコン・画像を使うことを禁止します。 テックジムの受講生が学習目的で複製・改変することは許可しますが、アプリストアでの公開・広告の掲載・販売などの商用利用は禁止し、著作権表示を残してください。 同梱の three.js は MIT License です。詳しくは LICENSE を見てください。
Center Fly — you play center field, and 100 fly balls are coming your way. Can you catch them all? A 3D baseball game viewed from behind the center fielder, looking in toward home plate under the stadium lights.
index.html in a browser to play. An Android app (Capacitor) is also built by GitHub Actions.