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
ジョッキーとしてレースに参加し成績を管理して競走する
Translation pending
AI summary · website content
GamesJavaScript · CSSGitHub @techgymjpOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗騎手目線で JRA の平地G1全24戦を駆け抜けるブラウザゲーム。
ファンファーレが鳴り、ゲートが開いたら、あなたは相棒の背中の上。 進路どり・追う/抑える(体重移動)・ムチを駆使して頂点を目指します。
JRA の平地G1全24戦を、G1のある週ごとに1戦ずつ戦います(日付は2025年の開催日程)。
| # | 日付 | レース | コース |
|---|---|---|---|
| 1 | 2/23 | フェブラリーステークス | 東京 ダ1600m |
| 2 | 3/30 | 高松宮記念 | 中京 芝1200m |
| 3 | 4/6 | 大阪杯 | 阪神 芝(内)2000m |
| 4 | 4/13 | 桜花賞 | 阪神 芝(外)1600m |
| 5 | 4/20 | 皐月賞 | 中山 芝2000m |
| 6 | 5/4 | 天皇賞(春) | 京都 芝(外)3200m |
| 7 | 5/11 | NHKマイルカップ | 東京 芝1600m |
| 8 | 5/18 | ヴィクトリアマイル | 東京 芝1600m |
| 9 | 5/25 | オークス | 東京 芝2400m |
| 10 | 6/1 | 日本ダービー | 東京 芝2400m |
| 11 | 6/8 | 安田記念 | 東京 芝1600m |
| 12 | 6/15 | 宝塚記念 | 阪神 芝(内)2200m |
| 13 | 9/28 | スプリンターズステークス | 中山 芝1200m |
| 14 | 10/19 | 秋華賞 | 京都 芝(内)2000m |
| 15 | 10/26 | 菊花賞 | 京都 芝(外)3000m |
| 16 | 11/2 | 天皇賞(秋) | 東京 芝2000m |
| 17 | 11/16 | エリザベス女王杯 | 京都 芝(外)2200m |
| 18 | 11/23 | マイルチャンピオンシップ | 京都 芝(外)1600m |
| 19 | 11/30 | ジャパンカップ | 東京 芝2400m |
| 20 | 12/7 | チャンピオンズカップ | 中京 ダ1800m |
| 21 | 12/14 | 阪神ジュベナイルフィリーズ | 阪神 芝(外)1600m |
| 22 | 12/21 | 朝日杯フューチュリティステークス | 阪神 芝(外)1600m |
| 23 | 12/27 | ホープフルステークス | 中山 芝2000m |
| 24 | 12/28 | 有馬記念 | 中山 芝2500m |
夏(7〜8月)や G1 のない週は飛ばして次の G1 へ進みます。年齢・性別の出走条件はゲームでは気にせず、相棒はすべての G1 に出走できます。 各コースは直線の長さ・コーナー半径・回り・芝/ダートを実際の競馬場に近づけて再現(直線の短い中山は前が有利、東京は末脚が生きる)。 24戦を終えるとシーズン総括。同じ相棒で翌年へ続きます(脚質は変わりません)。
index.html をブラウザで開くだけ(ビルド不要・外部ライブラリなし)。
# ローカルサーバーで開く場合
python3 -m http.server 8000
# → http://localhost:8000/
| 操作 | キー | スマホ |
|---|---|---|
| 進路(内へ/外へ) | ← / → | ◀ ▶ |
| 追う(前傾) | ↑ | 追う |
| 抑える(手綱を引く) | ↓ | 抑える |
| ムチ・スタート | Space | ムチ |
| 消音 / 一時停止 | M / Esc | ♪ |
相棒の脚質(逃げ・先行・差し・追込)は最初に決まり、乗り替わらない限り変わりません。 脚質は画面に表示されません。
レース結果画面の「シェアする」で結果を共有できます(スマホはOSの共有シート、PCはXの投稿画面。最終戦の有馬記念はシーズン総括)。「結果をコピー」で文章をコピーすることもできます。共有文には紹介記事のURL(https://techgym.jp/column/claude-code-game-keiba/ 。js/game.js の SHARE_URL)が付きます。
データはブラウザ(localStorage)に保存されます。「新しい馬に乗り替わる」で脚質ごとリセット。
端末の言語が日本語なら日本語、それ以外は英語で表示します。タイトル画面の「日本語 / English」でいつでも切り替えられます(選んだ言語は保存)。
画面の文言は js/i18n.js、レース名・競馬場・馬名・騎手コメントなどレースまわりの文言は js/sim.js にあります。
Android のアプリ名も、日本語の端末では「ダービージョッキー」、それ以外では「Derby Jockey」になります。
vercel.json で、Vercel が npm run build を実行して www/ を公開するよう設定しています(Android アプリに同梱するのと同じファイルです)。
Capacitor でゲームのファイルをアプリ内に同梱しているため、ネットにつながっていなくても遊べます。
v1.0.0 (build 12) など)とプライバシーポリシーへのリンクを表示アプリ ID は jp.techgym.keiba です(Google Play に一度公開すると変更できません)。
Android アプリでのみ広告を表示します(Web 版には広告は出ません)。
| 広告 | タイミング |
|---|---|
| バナー | トップ画面・相棒の画面・一時停止画面・結果画面の下(レース中は出さない) |
| インタースティシャル(全画面) | 新しいレースへ進むとき(出走する・次走)、タイトルへ戻るとき、一時停止から再開するとき。ただし前回から 60 秒以内は出さない(js/ads.js の INTERSTITIAL_GAP_MS) |
| リワード | 勝てなかったレースの結果画面で「広告を見て、このレースをやり直す」を選ぶと、結果を取り消して同じレースにもう一度挑戦(1 レース 1 回まで) |
android/app/src/main/res/values/strings.xml の admob_app_id、広告ユニット ID(バナー・インタースティシャル・リワード)は js/ads.js の UNITS.production にあります。derby-jockey.apk)は常に Google のテスト広告 を表示します。自分でタップしても問題ありません。ADMOB_MODE=production で本番の広告に切り替えます(scripts/build-web.js が js/ads-config.js を書き換えます)。GitHub Actions(自動): Web 版や android/ を変更して push すると、.github/workflows/android.yml が動作確認用の APK を作ります。
既定ブランチのビルドは GitHub の Release(android-latest)に自動で載るので、Android 端末で次の URL を開くか QR コードを読み取るだけで最新版をダウンロードできます。
https://github.com/techgymjp/keiba/releases/latest/download/derby-jockey.apk
ダウンロードした derby-jockey.apk を開き、「提供元不明のアプリ」のインストールを許可するとインストールできます。
動作確認用の署名鍵(android/app/debug.keystore)はリポジトリで固定しているので、新しいビルドもアンインストールせずに上書きインストールできます。
(Release に載る APK はデバッグ版です。Google Play には下の手順で作る署名済み .aab を使います)
手元の PC(Android Studio):
npm ci
npm run android:sync # Web ファイルを www/ にまとめて Android プロジェクトへコピー
npm run android:open # Android Studio で開く
アイコンと起動画面は assets/ の元画像から npx @capacitor/assets generate --android で生成しています。
upload.jks)は他のアプリと同じものを使えます。GitHub のリポジトリの Settings → Secrets and variables → Actions に次の 4 つを登録する
| 名前 | 内容 |
|---|---|
ANDROID_KEYSTORE_BASE64 | base64 -i upload.jks | tr -d '\n' | pbcopy でコピーした文字列 |
ANDROID_KEYSTORE_PASSWORD | キーストアのパスワード |
ANDROID_KEY_ALIAS | upload |
ANDROID_KEY_PASSWORD | 鍵のパスワード |
derby-jockey-release-aab(.aab)ができるバージョン番号(versionCode)は Actions の実行回数が自動で使われます。表示用のバージョン名は package.json の version です。
Android 版と同じ Capacitor のプロジェクトに ios/ を足しています(JET STRIKE と同じ構成)。Bundle ID は jp.techgym.keiba、iPhone 専用・横画面固定です。
ビルドと App Store への提出は Mac で行います。手順は docs/IOS_BUILD.md にあります。
js/ads.js の UNITS.ios、アプリ ID は ios/App/App/Info.plist の GADApplicationIdentifiernpm run ios:sync(テスト広告)/ npm run ios:release(本番広告。App Store 用)/ npm run ios:open.github/workflows/ios.yml が push のたびに、署名なしでシミュレーター向けにビルドできるかを確認するdocs/store/ios/All rights reserved. 著作権はテックジム株式会社に帰属します。無断での複製・改変・再配布、Web サイトやアプリとしての公開を禁止します。ただし、テックジムの受講生が学習目的で複製・改変することは許可します(商用利用は不可。詳しくは LICENSE)。
| ファイル | 役割 |
|---|---|
js/sim.js | 競馬場・年間カレンダー・レースシミュレーション(脚質・スタミナ・位置取り・進路妨害・コーナーロス)。DOM非依存 |
js/render.js | 疑似3Dの騎手目線描画、自馬の首・手綱・ムチ、ミニマップ |
js/audio.js | WebAudio による合成音(オリジナルのファンファーレ、蹄音、歓声、ムチ、ゲート) |
js/game.js | 進行管理、入力、実況、HUD、セーブ |
js/i18n.js | 表示言語(日本語 / 英語)の文言と切り替え |
js/ads.js / js/ads-config.js | AdMob 広告(Android アプリのみ) |
js/build-info.js | タイトル画面に出すバージョン(ビルド時に生成) |
scripts/build-web.js | Android 同梱・Vercel 公開用に www/ を作る |
android/ | Android プロジェクト(Capacitor) |
tools/balance.js | 脚質バランス検証(node tools/balance.js [レース数] [fps] [レースid]) |
?speed=4 を URL に付けると早送り(動作確認用)。