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
Play Tarneeb, Trix, and Trix Complex card games online with AI opponents
AI summary · README
GamesTypeScript · CSSGitHub @mbalfaghia-1OnlineOwner 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
Loading the full README. The saved excerpt is shown below.
A card-game app (web + mobile, AI + online) for Tarneeb, Trix, and Trix Complex.
Built as a TypeScript monorepo around a pure, framework-agnostic rules engine.
Design sources live alongside this code: Tarneeb game rules.docx, Trix Game Rules.docx,
Tarneeb situations.docx, Trix use cases.docx, Trix complex use cases.docx, the
Images/ mockups, and Tarneeb_Trix_Rules_and_Strategy.pdf (the consolidated rules +
bot-strategy contract). The rules doc is the authoritative build contract.Read the full README ↗A card-game app (web + mobile, AI + online) for Tarneeb, Trix, and Trix Complex. Built as a TypeScript monorepo around a pure, framework-agnostic rules engine.
Design sources live alongside this code:
Tarneeb game rules.docx,Trix Game Rules.docx,Tarneeb situations.docx,Trix use cases.docx,Trix complex use cases.docx, theImages/mockups, andTarneeb_Trix_Rules_and_Strategy.pdf(the consolidated rules + bot-strategy contract). The rules doc is the authoritative build contract.
packages/
engine/ Pure TypeScript, zero dependencies. Cards, deal, and the full
Tarneeb state machine (bidding → trump → 13 tricks → scoring).
One source of truth for the rules; reused by UI, AI, and server.
ai/ Rule-based bots implementing the B1 / T1–T11 / D1–D2 playbook:
card counting, void inference, trump drawing, partnership signals.
knowledge.ts = public-info inference; play.ts = tactics; bot.ts = bidding + entry.
apps/
web/ (next) React + TypeScript (Vite). Responsive table UI, PWA-installable
so it also runs in mobile browsers.
server/ (later) Node + WebSockets for online multiplayer.
mobile/ (later) Expo / React Native, reusing engine + shared React code.
packages/ai: knowledge.ts + play.ts).
Wins 100% vs random over 200 games; unit-tested per tactic.C:\Projects\tarneeb-trix — outside Google
Drive, because npm install/builds generate tens of thousands of files in
node_modules that Drive's sync client locks (causing EBADF/ENOTEMPTY).G:\My Drive\Projects\Card Game app\tarneeb-trix — a
code-only copy for backup/access, kept in sync by scripts/sync-to-drive.ps1
(it excludes node_modules, dist, coverage, .git). Design docs + Images/
stay in the Card Game app root. Always edit in the C:\ repo, then sync.# After making changes, mirror the repo to Drive:
powershell -File C:\Projects\tarneeb-trix\scripts\sync-to-drive.ps1
C:\Program Files\nodejs (v24). If node/npm
aren't found in a shell, that shell just hasn't picked up PATH — prepend it:
$env:Path = "C:\Program Files\nodejs;" + $env:Path.npm install # install workspace dev deps (from C:\Projects\tarneeb-trix)
npm run dev -w @tarneeb/web # play Tarneeb vs 3 bots at http://localhost:5173
npm test # run the engine's test suite (Vitest) — 18 tests
npm run typecheck # type-check all workspaces
npm run build # production build of the web app
You play the bottom seat; the other three are bots. Bid or pass, name trump if you win the bid, then click a highlighted card to play. Toggle Arabic/English from the top bar.
import { createGame, applyAction, getLegalActions } from '@tarneeb/engine';
let state = createGame({ seed: 42 }); // deals hand 0, phase 'bidding'
const actions = getLegalActions(state); // legal actions for the seat on turn
state = applyAction(state, actions[0]); // pure reducer: (state, action) -> state
applyAction is a pure function and throws on illegal moves (the engine is
authoritative). UI and bots both drive the game only through getLegalActions +
applyAction, so the rules can never be bypassed.
nextSeat(s) = (s+1)%4.
Partners face each other: team 0 = seats 0 & 2, team 1 = seats 1 & 3.