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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
The spoiler-safe game guide you can talk to.
Ask about any game: a boss, a build, a quest, a sale. GameGuide looks it up live,
lays the answer out like a strategy-guide page with its sources, and keeps every
story beat past your progress behind a bar until you choose to look.
▶ Try it — no account needed ·
Add to Discord ·
Top.gg ·
Security
A general chatbot will answer a game question, and it will happily spoil the
ending while it's at it, quote last year's patch, or make up an item location.
GameGuide is built around the three things a player actually needs from a guide:檢視完整 README ↗The spoiler-safe game guide you can talk to.
Ask about any game: a boss, a build, a quest, a sale. GameGuide looks it up live, lays the answer out like a strategy-guide page with its sources, and keeps every story beat past your progress behind a bar until you choose to look.
▶ Try it — no account needed · Add to Discord · Top.gg · Security
A general chatbot will answer a game question, and it will happily spoil the ending while it's at it, quote last year's patch, or make up an item location. GameGuide is built around the three things a player actually needs from a guide:
| Feature | What it does |
|---|---|
| 🛡️ Spoiler Shield | /progress Elden Ring : beat Margit, or just say it. On by default; /spoilers off once you've finished. |
| 🧭 Missables | /missables lists what you can still lose for good (items, questlines, trophies) from where you are, in the order you'll reach them. |
| 🔎 Live research | Wikis, official patch notes and web search, read at the moment you ask, then cross-checked against each other. |
| 🖼️ Screenshots | Attach up to three per message: a build screen, a map, a puzzle. |
| 💸 Deals | /price gta 5 shows the best current PC price across stores and how it compares with the all-time low. It understands nicknames like bg3. |
| 🔗 Spoiler-safe sharing | Share any answer as a link. Spoilers stay hidden for your friend, and the answer travels inside the link, so nothing is stored. |
| 🎨 The page becomes the game | Name a game and the chat takes on its Steam art and a colour sampled from it. |
| 🕶️ Stealth | /stealth starts a conversation that is never saved, remembered or traced. |
| 📡 Discord + Watchtower | The same guide in your server via /ask or an @mention, plus /watch add to post a game's patch notes (summarised) and big deals into a channel. |
| 📱 Installable | Add it to your phone's home screen and keep it open as a second screen while you play. |
Free on the web, no account needed. Signing in with Google keeps your history.
flowchart LR
A[Your question<br/>+ screenshots] --> B[Understand<br/>which game, what kind<br/>of question, how recent]
B --> C[Research<br/>wikis · patch notes ·<br/>web search · price data]
C --> D[Cross-check<br/>sources against<br/>each other]
D --> E[Answer<br/>from the best available<br/>model right now]
E --> F[Spoiler Shield<br/>hide anything past<br/>your progress]
F --> G[Guide-style answer<br/>with sources]
The whole pipeline runs in one Supabase Edge Function
(supabase/functions/chat-proxy) and streams the
answer back as it's written.
| Step | What happens | Where |
|---|---|---|
| Understand | Detects the game (including numbered sequels), the kind of question (build, meta, lore, troubleshooting, speedrun, review, comparison) and whether the question needs fresh data. | index.ts, temporalDetector.ts |
| Research | Queries several search backends in parallel (Serper, Brave, SearXNG, DuckDuckGo, Google CSE), game wikis via MediaWiki, the Steam News API for patch notes, CheapShark for prices, and official game APIs where they exist. Results are ranked by source authority and recency. | pulseEngine.ts, webSearch.ts, recencyRanker.ts, officialSources.ts |
| Screenshots | Two passes run in parallel: a dedicated pass reads every piece of text off the image, and a full-resolution crop of the HUD is added so small hotbar details stay legible. The vision model then answers with both. | visionPipeline.ts |
| Cross-check | Scores how far the sources agree, and flags claims only one source makes. | corroboration.ts |
| Answer | Ranks models across Gemini, Groq, OpenRouter and Cerebras for each request by cost, health and remaining quota, spending free tiers first and skipping anything rate-limited or failing. Available models are discovered live, so a retired model doesn't silently break routing. | meshRouter.ts, modelCatalog.ts |
| Shield | Rewrites the instructions around the player's progress, then checks the answer and its suggested follow-ups for anything past it. | spoilerShield.ts, spoilerGuard.ts |
The parts I'd point a reviewer at:
sub claim would have
let anyone read another player's profile./health never relays a vendor's raw error text.AUDIT_REPORT.md records adversarial
testing against production: what broke, why, and what was fixed.Under the hero buttons, the landing page shows a live line in the form
● 1,284 players · 9,312 answers researched · 412 games (example numbers),
read from gg_public_stats()
(supabase/migrations/20261002_public_stats.sql).
Only these three totals leave the database. The function recomputes at most once every ten minutes, and if it isn't deployed, the line simply doesn't appear. It never shows a made-up number.
| Layer | Built with |
|---|---|
| Web app | React 19, Vite 8, Tailwind CSS 4, GSAP, Framer Motion |
| Backend | Supabase Edge Functions (Deno, TypeScript), Postgres with RLS |
| Hosting | Vercel (site + small API routes for wiki and Steam art) |
| Discord bot | Node.js, discord.js; deploy configs for Fly.io, Railway and Render |
| Payments | Stripe (Discord Pro and Premium Server plans) |
| AI | Gemini, Groq, OpenRouter and Cerebras, routed by health and quota |
You need Node 22.6+ and Deno. Full walkthrough, including which free API keys
matter most: LOCAL_TESTING.md.
npm install
npm install -g deno
cp supabase/functions/.env.example supabase/functions/.env # model + search keys
cp .env.example .env.local # VITE_SUPABASE_URL=http://127.0.0.1:8000
npm run dev:api # edge function on http://127.0.0.1:8000
npm run dev # site on http://localhost:5173
Run the tests:
(cd discord-bot && npm install) # one suite reads discord.js's permission flags
npm test
supabase db push applies everything in supabase/migrations
(rate limits, provider health, player memory, request trace, public stats).
If you run the Discord bot, also run discord-bot/schema.sql and
discord-bot/schema-v3.sql in the SQL editor.supabase functions deploy chat-proxy, then add your keys under
Project Settings → Edge Functions → Secrets, plus SUPABASE_JWT_SECRET and
RATE_LIMIT_SALT.VITE_SUPABASE_URL and
VITE_SUPABASE_ANON_KEY. Optional: turn on Vercel Web Analytics and set
VITE_ANALYTICS=vercel (cookieless).discord-bot/README.md.src/ React app: landing page (site/), chat (codex/), hooks, utils
api/ Vercel functions: wiki search/article proxy, Steam art lookup
supabase/functions/ chat-proxy: the whole answer pipeline
supabase/migrations/ Postgres schema (rate limits, health, memory, trace, stats)
discord-bot/ The Discord bot, its schema, billing and Watchtower
tests/ 29 suites, including a golden-set retrieval eval (npm test)
Issues and PRs are welcome; see CONTRIBUTING.md.
Please report vulnerabilities privately as described in SECURITY.md.
Proprietary. © 2026 Tanmay Angarkar, all rights reserved. See LICENSE.
Built by Tanmay Angarkar · LinkedIn · GitHub · [email protected]