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
Multiplayer social deduction spy game where players receive the same secret location from 500 places while undercover spies attempt to blend in and deduce the location.
GamesPHP · TypeScriptGitHub @poedgarOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
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
spy on node and react
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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).Read the full 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.