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 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證spy on node and react
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Party games for friends, on the web and on phones: Spy (everyone knows
the location except the spies) and Phrase (everyone holds one word of a
famous phrase). English and Ukrainian.
Details live in each app's README: laravel-app/README.md
(game rules, API, realtime, notifications) and
expo-app/README.md / expo-app/RELEASE.md.
1. php artisan migrate --force — the app fails with "relation does not
exist" errors if this is skipped.
2. Build the front end after setting the VITE_PUSHER_* variables (they
are baked in at build time).檢視完整 README ↗Next games:
Party games for friends, on the web and on phones: Spy (everyone knows the location except the spies), Phrase (everyone holds one word of a famous phrase), Sing It Out / Доспівай (everyone hears the same clip, sings how it goes on in turns, then votes for the best), Finish the Phrase / Продовж фразу (everyone writes an ending to the same beginning, then votes for the best without names) and Interpret the Phrase / Розтлумач фразу (everyone explains the same idiom, votes for the best explanation, then sees the real meaning) and Name the Emotion / Вгадай емоцію (everyone names the emotion on the same face, at three levels) and Meme It / Зроби мем (everyone captions the same funny picture, then votes for the best meme without names). English and Ukrainian.
Name the Emotion's faces are the UIBVFED set (M. Mascaró Oliver, E. Amengual
Alcover, Universitat de les Illes Balears, PLOS ONE 2020, CC BY): virtual
people whose expressions are built from the Facial Action Coding System. They
ship in laravel-app/public/emotions; the game credits them wherever they
appear, and players' answers re-sort them into levels by measured hit rate.
Meme It's starter pictures are animal photos from Wikimedia Commons, each
public domain, CC0 or CC BY (no share-alike, since a caption on top can count
as an adaptation). They ship in laravel-app/public/memes; each one's author
and licence are shown under the picture. Admins can add more by link under
Admin → Written games.
| Folder | What it is |
|---|---|
laravel-app/ | The main app: Laravel + Inertia/Vue web client, and the JSON API for mobile. |
expo-app/ | The iOS/Android app (Expo, React Native), built on the Laravel API. |
| repo root | The original React/Firebase prototype, kept as it was. |
Details live in each app's README: laravel-app/README.md
(game rules, API, realtime, notifications) and
expo-app/README.md / expo-app/RELEASE.md.
# Web app + API
cd laravel-app
composer setup # install, .env, key, migrate, build
composer dev # server, queue worker, Vite
# Mobile app (needs the API running)
cd expo-app
npm install
npx expo start
Every deploy:
php artisan migrate --force — the app fails with "relation does not
exist" errors if this is skipped.VITE_PUSHER_* variables (they
are baked in at build time).Once, on the server:
php artisan queue:work): live notifications, pushes and
emails are queued. The in-app bell works without it.php artisan schedule:work, or cron running
php artisan schedule:run every minute): prunes old notifications, stale
games and expired mobile sign-ins daily.PUSHER_APP_*), or a self-hosted
Pusher-compatible server via PUSHER_HOST/PORT/SCHEME. Without it the apps
still work, refreshing every few seconds instead of instantly.MAIL_*): invitation emails, password resets, email
verification.APP_NAME="Marvelous Games", and SANCTUM_TOKEN_EXPIRATION if mobile sign-ins
should last other than 90 days.GitHub Actions run per app on changes to it: Laravel tests, PHPStan and Pint
(laravel-app-tests.yml), the Laravel Cypress suite
(laravel-app-cypress.yml), the mobile typecheck, lint, Jest and Expo doctor
(expo-app.yml), and the prototype's Cypress suite (cypress.yml).
All done: Ukrainian, notifications, invited players showing up without a reload, a minimum (3) as the default table size, asking to join, and joining without an invitation (open games and join requests).
_
Your side (needs your accounts or servers):
Production deploy: run the migration, start the scheduler and queue worker, configure mail and set APP_NAME, as listed before. Change the Neon database password. The old host was public in the README, and git history still has it. Pick a real bundle id (for example com.yourname.spynet), set APP_BUNDLE_ID, and do a first EAS build. Push notifications only work in a real build, not the simulator, so test them on a phone. Worth doing next (I can do these): 4. Android check. Only iOS has been run with Maestro. Running the flows on an Android emulator would test the push channel fix and the keyboard behaviour there. 5. Flow 02 (join and invite) needs two accounts. I can make it create its own second user through the API so it runs on its own, then add the Maestro flows to CI. 6. Delete the merged branches (lobby-improvements, open-games, notifications, phrase-game, spy-rounds-and-ukrainian, ukrainian-gaps, polish) locally and on GitHub. They're all merged into main. 7. Error monitoring (Sentry or similar) for both apps, so production crashes reach you.
Bigger product ideas, if you want them: 8. A third game for the "Coming Soon" tile. 9. Play stats per player (games played, wins as spy, phrases guessed). 10. Rematch with the same players in one tap after a game ends.
I'd start with 4–6. Tell me which ones to do.