wanessalabs games production

Last Card

House-rules Uno against AI, with a draw-up-to-two twist, a call-and-catch Last Card rule, difficulty-tiered bots, table talk, and a live coach. Offline.

ReactTypeScriptTailwindViteCloudflare Pages
A card game with the house rules made explicit: strict wild, stacking, and a difficulty that changes the bots.
A card game with the house rules made explicit: strict wild, stacking, and a difficulty that changes the bots.
Three opponents and your hand, with the draw and discard piles in reach.
Three opponents and your hand, with the draw and discard piles in reach.

Everyone has a house rule for Uno. Ours changes the one moment the real game wastes: the turn where you draw a card, it does not help, and you just pass. Last Card takes that dead beat and turns it into a decision.

What It Is

Single-player, house-rules Uno against one to three AI opponents, built as a React game module inside the Wanessa Labs Games Hub. It shares the hub’s GameProps contract and design language. No accounts, no backend, no network calls during play, fully offline. First player to 500 points wins the match.

The House Rule

When you have nothing to play, you do not just draw one and pass. You draw up to two, and you play from what you draw:

Only the cards you drew this turn can go down this way. The rest of your hand is already known to be unplayable, so the game never lets you hide behind it. Every step is an explicit choice on the table, not an auto-play. It is the smallest change to the rules that makes a stuck turn worth thinking about.

Calling Last Card

You have to call “Last Card” the moment you are down to one card. Forget, and any opponent can catch you before the next turn finishes, and you draw two as a penalty. It works both ways: the bots forget too, at a rate that scales with difficulty, so catching them is a real button and real points.

Tuning this fairly was the hard part. The catch window has to be short enough to matter and long enough that a human can actually react and hit the call, on a phone, one-handed. The call button floats and pulses so it is impossible to miss inside that window.

The Coach

Like the Poker Trainer, Last Card ships a coach that reuses the exact heuristic the bots use, so the advice and the AI can never disagree. It names the play it would make, gives a one-line reason, and adds situational tips: you are about to be on your last card, an opponent is down to one, that wild is worth saving. Collapsible, on by default.

The Opponents

The bots are a pure function over game state, deterministic given a seed, so the whole match is testable with no interface at all. Three difficulty tiers scale a small table of knobs: how long they hold their action cards, whether they aim a Draw Two or Skip at a player who is almost out, how often they forget to call, and how alert they are to catch you.

They also talk. Evie, Saylor, and Madison have their own lines for every moment that matters: a Draw Four dropped, a catch landed, someone drawing two and still finding nothing, someone one good round from 500. The table talk is throttled and never repeats itself into the ground.

Features

Stack

ToolRole
React + TypeScriptGame module inside wanessalabs-games
Pure engineDeterministic rules, headless-testable, seed-driven
TailwindHub-consistent styling
Cloudflare PagesHosted inside the wanessalabs-games hub

Development timeline

2 logged updates over 25 days, 25 Jul 2026 to 18 Aug 2026.

  1. The Play On winner shows themselves before the scoreboard doesimproved

    Under Play On the first player to empty their hand has already won the round, but the round keeps running so the rest of the table can finish, and nothing on screen said so. A ring and a banner now name the winner the moment it happens, and clear once the round is scored.

  2. Work began on Last Cardfeature

    First commit touching this game in the hub repository. House-rules Uno: draw up to two cards and play what you find, call Last Card or get caught. The hub records no separate launch announcement for it.

Written from the release notes published with each update, not afterwards. See every project →