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,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗ドラクエ風に県内を歩きまわって、17日間の知事選挙を戦い抜くブラウザゲームです。 投票日の夜は開票速報が流れ、だれかに「当選確実」が出たらゲーム終了です。
Web 版はビルド不要の静的サイトです。index.html をブラウザで開くか、ローカルサーバーで配信してください。
npx http-server -p 8080 .
# → http://localhost:8080/
| 操作 | キーボード | スマホ |
|---|---|---|
| 移動 | 矢印キー / WASD | 十字ボタン |
| はなす・しらべる・決定 | Z / Enter / Space | A |
| メニュー・キャンセル | X / Esc | B |
端末やブラウザの言語が日本語なら日本語、それ以外なら英語で表示します(英語版のタイトルは「Run for Governor!」)。タイトル画面の「🌐 English / 🌐 日本語」でいつでも切り替えられ、選んだ言語は次回も使われます。
js/i18n-en.js の翻訳表(日本語の文 → 英語の文)から引きます。数や名前が入る文は tr('聴衆は {n}人ほど あつまっている。', { n }) のように {名前} の形で書きます({N} はプレイヤー名)。js/i18n.js にあります。node scripts/check-i18n.js を実行してください。英語の訳がない文と、{} の食い違いを一覧にします。android/app/src/main/res/values-en/strings.xml)。歩いていると、いろいろな出来事に出くわします。選んだ行動の結果が数日後に返ってくることもあります。
善いことに見えて裏目に出るもの、断ると得をするものが混ざっています。神社でお参りすると、その日は悪い縁に巻きこまれにくくなります。
初代ドラクエのようなファミコン風の電子音(矩形波2音+三角波ベース)を Web Audio で鳴らしています。音源ファイルは使っておらず、曲はすべてオリジナルです。
| 場面 | 曲 |
|---|---|
| タイトル | 堂々としたマーチ |
| フィールド(昼) | 軽快に歩きまわる曲 |
| フィールド(17時以降) | 少しさみしげな夕暮れの曲 |
| 建物の中・朝の事務所・出陣式 | のどかな町の曲 |
| 偶然の出来事・朝市などの集会 | 「なにか起きた!」曲 |
| スキャンダル報道・過労で倒れる | 不穏な曲 |
| 夜の報告 | 子守歌 |
| 公開討論会・テレビ討論・最後のお願い | 戦闘曲ふう |
| 開票速報 | 緊張感のある刻み |
| 当選 / 落選 | ファンファーレ / 哀しい曲 |
メニューの「おと」で効果音とBGMをまとめて ON/OFF できます。
Capacitor でゲームのファイルをアプリ内に同梱しているため、ネットにつながっていなくても遊べます(フォントも css/fonts/ に同梱)。
アプリ ID は jp.techgym.kenchiji です(Google Play に一度公開すると変更できません)。
Android アプリでのみ広告を表示します(Web 版には広告は出ません)。
| 広告 | タイミング |
|---|---|
| インタースティシャル(全画面) | 毎晩、夜の報告を閉じたあと(1〜17 日目)/タイトルからプレイを始めるとき(はじめから・つづきから)/メニューの「トップへ」でタイトルに戻るとき |
| リワード | 過労で倒れたときに「応援動画を見て立ちあがる」を選ぶと、体力 60 で その日の活動を続けられる(1 日 1 回) |
| リワード | 選挙事務所の「応援動画を見る」で体力が全回復(1 日 1 回) |
| バナー(画面の下) | 起動してからずっと表示(タイトル・プレイ中・メニュー・結果画面)。ゲーム画面はバナーのぶん上に詰めて、操作ボタンと重ならないようにする |
js/ads.js の production、AdMob のアプリ ID は android/app/src/main/res/values/strings.xml にあります。kenchiji.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/kenchiji/releases/latest/download/kenchiji.apk
リリースページ(バージョンや説明を見てからダウンロードする場合): https://github.com/techgymjp/kenchiji/releases/tag/android-latest
ダウンロードした kenchiji.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 で開く
upload.jks)は他のゲームと同じものを使い回せます。新しく作る場合は次のとおり(Java が必要)
keytool -genkeypair -v -keystore upload.jks -alias upload -keyalg RSA -keysize 2048 -validity 10000
base64 -i upload.jks | tr -d '\n' | pbcopy # macOS(クリップボードにコピー)
| 名前 | 内容 |
|---|---|
ANDROID_KEYSTORE_BASE64 | upload.jks を base64 にした文字列 |
ANDROID_KEYSTORE_PASSWORD | キーストアのパスワード |
ANDROID_KEY_ALIAS | upload(作成時に指定した別名) |
ANDROID_KEY_PASSWORD | 鍵のパスワード |
kenchiji-release-aab(.aab)ができるストアに載せる画像(アイコン・フィーチャーグラフィック・日英のスクリーンショット)と掲載文の下書きは docs/store/ にあります(docs/store/listing.md)。
バージョン番号(versionCode)は Actions の実行回数が自動で使われます。表示用のバージョン名は package.json の version で、タイトル画面の右下に表示されます。
Android 版と同じ Capacitor のプロジェクトに ios/ を足して作っています(Swift Package Manager の構成)。Mac での作業手順は docs/IOS_BUILD.md にあります。
jp.techgym.kenchiji(Android と同じ)。iPhone 専用・横画面固定・全画面表示、プレイ中は画面が暗くならないios/App/App/Info.plist、広告ユニット ID は js/ads.js の UNITS.ios にありますios/App/App/*.lproj/InfoPlist.strings)npm run ios:sync(テスト広告)/ npm run ios:release(本番広告。App Store 用)/ npm run ios:open(Xcode で開く).github/workflows/ios.yml)が push のたびに、署名なしでシミュレーター向けにビルドできるかを確認する.github/workflows/ios-release.yml)が本番の広告でビルドして TestFlight にアップロードする(ビルド番号は 100 + 実行回数)docs/store/ios/(スクリーンショット 2622×1206 は 6.3inch/、ヘッダ 3840×1646、検索結果 3840×2560)package.json があるため、Vercel はビルドが必要なプロジェクトと判断します。vercel.json で npm run build と出力先 www を指定しています。
All rights reserved. 著作権はテックジム株式会社に帰属します。無断での複製・改変・再配布、Web サイトやアプリとしての公開を禁止します。ただし、テックジムの受講生が学習目的で複製・改変することは許可します(商用利用は不可。詳しくは LICENSE)。
同梱のフォント DotGothic16 は SIL Open Font License 1.1 です(css/fonts/OFL.txt)。
index.html
css/style.css
js/sprites.js ドット絵(キャラ・タイル)の生成
js/map.js マップ・地区・建物・NPC
js/ui.js メッセージ/選択肢ウィンドウ・入力・効果音
js/bgm.js ファミコン風BGM(曲データとシーケンサー)
js/events.js 団体・演説・ランダムイベント・遅延イベント・予定イベント・施設
js/election.js 支持率モデル・世論調査・開票速報・エンディング
js/engine.js ゲーム状態・移動・描画・1日の流れ・タイトル
js/i18n.js 表示言語の切り替えと、画面の固定文言(日本語 / 英語)
js/i18n-en.js 英語の翻訳表(日本語の文 → 英語の文)
js/native.js Android アプリとの連携(戻るボタン・アプリ切替・シェア・バージョン表示)
js/ads.js Google AdMob 広告(Android アプリのみ)
js/ads-config.js 広告のモード(test / production。ビルド時に生成)
js/build-info.js タイトル画面に出すバージョン(ビルド時に生成)
css/fonts/ DotGothic16 フォント(SIL OFL 1.1)
assets/ アイコンと起動画面の元画像
android/ Android アプリのプロジェクト(Capacitor)
ios/ iOS アプリのプロジェクト(Capacitor・Xcode)
scripts/ www/ にまとめるビルドスクリプトと、英語の訳もれチェック(check-i18n.js)
docs/ APK 用の QR コード、IOS_BUILD.md(Mac での iOS の作業手順)、store/ にストア用の画像と掲載文(ios/ は App Store 用)
セーブは自動です(出来事・施設・メニューのたびと、歩いているあいだ)。メニューの「トップへ」でタイトル画面に戻り、「つづきから」で同じところから再開できます。