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
翻譯準備中
Steeped in Trouble: an original, experimental, tea-themed vector arcade game (HTML5 Canvas).
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗One small spoon. An unreasonable amount of responsibility.
Meet the silver spoon: defender of a very temperamental teacup, part-time newspaper carrier, occasional biscuit demolition expert, and the only kitchen utensil willing to confront an angry espresso machine.
Keep escaping tea leaves in check with steam, milk, and sugar. Read fortunes in the leaves you've defeated, upgrade your spoon, and discover what happens when the tea starts making its own rules.
Between cups, things get stranger. Run to the tea shop, deliver newspapers from a bicycle, launch a sugar cube at a wall of rebellious biscuits, or hop across a very busy road. Apparently, all of this is in the spoon's job description.
Simple arcade action, unexpected little adventures, and a generous helping of nonsense.
Play in your browser. The spoon will handle the paperwork.
The first cup of a fresh pot: steam, milk, and sugar against the rising leaves. Prefer a still image? See a screenshot.
Version 0.15.0 — Crossing the Street is the current release.
Crossing the Street: Why did the spoon cross the road? Nobody knows. But apparently, it's our problem now. Dodge traffic, survive an unreasonable number of motorists, and reach the tea shop in one piece. Like every arcade adventure, it's optional: skipping it costs nothing.
Another Day, Another Brew (0.14.0): Every ten normal cups, decide whether tomorrow starts with a gentler challenge or keeps building the Heat. Your upgrades, unlocked teas, fortunes, score, and arcade adventures carry forward either way. Days control difficulty. Chapters control content. See the Day testing guide for practice and qualification.
Already in the published game:
See the changelog for what changed in each version.
| Action | Keyboard | Touch |
|---|---|---|
| Move the silver spoon | ← → or A D | hold ◀ TURN / TURN ▶ |
| Fire steam (hold for continuous fire) | Space | hold STEAM ↑ |
| Milk: wash back and slow a wedge of the cup, and the whole cup briefly | Q, ↑, or M | MILK |
| Sugar: three-lane burst | E, ↓, or S | SUGAR |
| Pause / resume | P | main button |
| Start, next cup, new pot | Enter | main button |
| Pick a spoon upgrade | 1 / 2 | tap a card |
| Restart after game over | R | main button |
| Tea Shortage: Buy / Run / Skip | 1 / 2 / 3 | tap a choice |
| Tea Run: jump / slide | Space or ↑ / ↓ | JUMP / SLIDE |
| The Daily Pour: Deliver / No thanks | 1 / 2 | tap a choice |
| The Daily Pour: aim porch / mailbox, throw | ↑ / ↓, Space | AIM / THROW |
| Biscuit Breakout: Break / Leave them alone | 1 / 2 | tap a choice |
| Biscuit Breakout: move the spoon, launch the cube | ← → or A D, Space | hold ◀ / ▶, LAUNCH |
| Crossing the Street: Cross / Stay | 1 / 2 | tap a choice |
| Crossing the Street: hop (hold to repeat) | ↑ ↓ ← → or W A S D | ▲ ◀ ▼ ▶ pad |
Phones start with Easy Touch: hold the two steering pads, double-tap the cup for milk, and hold the cup for sugar. Auto Steam fires only at targets lined up with your spoon. Select Classic Touch for the buttons in the table; it also works with Auto Steam.
After round 9, once the first milestone is beaten, the tea tin may run out. Buy tea for 20 Tea Cash, fetch it in a roughly 34-second run, or skip for free. Buying and a successful run each add one sugar burst to the next normal cup; a successful run also earns 5 Tea Cash. Neither a failed run nor skipping costs a cup. Your spoon and next fortune wait for you.
Later in Chapter 2, the neighborhood may need a delivery spoon. The Daily Pour is a 30-second paper route: line the marked mailbox or porch up with your landing ring and throw. Each delivery earns 25 points, five or more earn 5 Tea Cash, and a perfect route adds a bonus. Skipping is free.
After round 19, the biscuits may revolt. Biscuit Breakout lasts up to 45 seconds with three sugar cubes: keep the cube bouncing off the spoon (its edges send it off at an angle) and break the wall. Each biscuit earns 10 points, breaking 70% earns 5 Tea Cash, and a clear adds 50 points. Losing cubes never costs a cup, and skipping is free.
After round 27, the spoon may decide to cross the road. Crossing the Street hops it one square at a time across five lanes of traffic, with a safe median halfway, to the tea shop opposite, in 40 seconds. A bump sends it back to the curb and costs one of three attempts, never a cup. Each new lane earns 10 points; reaching the shop earns 50 more and 5 Tea Cash, and 40 more without a bump. Skipping is free.
Now and then the leaves foretell Karma. For that one cup, a leaf that reaches the rim bounces back instead of spilling; if it comes back again it vanishes in a puff of steam. It still counts towards finishing the cup, but earns no points.
?view=compact|full overrides
it for one visit. You can select Compact even in Chrome's Desktop Site
mode; the game cannot override that browser setting.?touch=easy|classic and ?autosteam=on|off (Easy Touch keeps Auto Steam on).?graphics=low or ?graphics=high to the URL.?seed=<number> to the URL to replay the same sequence of tea leaves.?tea=<variety> to brew only one tea, for practice: green,
earlGrey, chai, black, herbal, or house. A practice tea is
available from the first cup.Prerequisites: Node.js 24 LTS (22.12 or newer also works) and npm, which ships with Node.js. The project works on Windows, macOS, and Linux.
git clone https://github.com/libertaine/Steeped-in-Trouble.git
cd Steeped-in-Trouble
npm ci
npm run dev
Then open the URL Vite prints (normally http://localhost:5173/Steeped-in-Trouble/).
| Command | Purpose |
|---|---|
npm run dev | Development server with hot reload |
npm run build | Production build into dist/ |
npm run preview | Serve the production build locally |
npm run lint | ESLint |
npm test | Unit tests (Vitest) |
npm run test:watch | Unit tests in watch mode |
npm run test:browser | Browser smoke tests (Playwright) against a fresh production build |
npm run check | Lint, unit tests, and build in one go |
Before running browser tests for the first time, install the browsers:
npx playwright install chromium firefox
On Linux you may also need npx playwright install-deps (requires sudo).
To smoke-test the published site instead of a local build:
BASE_URL=https://libertaine.github.io/Steeped-in-Trouble/ npm run test:browser
On Windows PowerShell, run $env:BASE_URL="https://libertaine.github.io/Steeped-in-Trouble/"; npm run test:browser.
Bug reports and ideas are welcome in GitHub Issues.
MIT. All artwork is drawn procedurally with Canvas paths, and all sound is synthesized at runtime. The game uses no third-party art, fonts, audio, or runtime libraries, and it is not affiliated with or adapted from any commercial arcade game.
Enjoying Steeped in Trouble? If you'd like to help keep the kettle boiling, you can support development via PayPal.
Contributions are entirely optional. Playing the game, sharing it with others, and reporting bugs or suggestions are just as appreciated.