← All posts

Tick Tac Card: what happens when tic-tac-toe stops being the win condition

Gjorge Karakabakov

Play it: tick-tac-card.netlify.app — runs in any modern browser, no install.

The Tick Tac Card title screen: a green felt table under a hanging lamp, dealing itself the seven, eight and nine of spades and scoring it as a straight flush worth 104 x 6

Tic-tac-toe is a solved game. Two competent players draw, every time, forever. That is usually where the conversation ends — which is a shame, because the problem isn’t the board. It’s that we keep asking the board to decide who wins.

Tick Tac Card takes the win condition away from it. The opponent has HP, and the nine cells are just the machine you use to hurt them.

Every line is a poker hand

A tic-tac-toe line is exactly three cells. A deck is 52 cards. Those two facts fit together with no seam at all: play cards into the grid, and every completed line gets scored as a three-card poker hand.

HandChipsMult
Straight flush80×6
Three of a kind60×5
Straight45×4
Flush40×3
Pair25×2
High card15×1

Damage is (hand chips + the cards' own chip values) × mult. So 7♠ 8♠ 9♠ is (80 + 24) × 6 — 624 before anything else gets involved.

Note that a straight beats a flush. That’s correct for three-card poker, where three to a run is rarer than three to a suit, and it is the exact opposite of the five-card ranking everyone already has memorised. It’s a small thing that quietly pays out to players who know the difference.

Suits carry their own trigger, so a flush stacks three of the same one:

+1 MultHeal 2+$1Draw 1

Every card in your hand now pulls in two directions at once: where it goes, which is the tic-tac-toe game, and what it makes, which is the poker game. Those two answers are rarely the same cell, and that tension is the whole design.

The fork is the bridge

Here’s the part that makes the fusion work rather than just co-exist.

Because three-by-three is a draw under perfect play, a decent opponent blocks every single threat you make. One line at a time gets you nothing. But a fork — one card completing two lines simultaneously — scores both, applies a global ×2 on top, and is the one thing a perfect blocker has no answer to.

That’s not a bonus mechanic bolted on. It’s the same double-threat that has always been the only way to actually beat someone at tic-tac-toe, except now it’s also your biggest damage spike. The old game’s one real tactic became the new game’s signature combo.

Nothing ever stalls

Completing a line detonates it: the line scores, deals its damage, and those three cells clear. The board empties as fast as it fills, so it can never lock into the nine-cell stalemate that makes tic-tac-toe boring — and cells are a renewable resource, not a countdown.

The opponent, meanwhile, doesn’t score hands at all. Their lines deal flat damage by tier, scaled by a per-opponent pressure multiplier. You’re a scoring engine; they’re a clock. Keeping those two on separate scales means their difficulty can be tuned without touching your power curve.

A fight in progress: two of the player's clubs in the far row, the opponent's cards in red, and the held ten of spades previewing 74 damage as a High Card on the centre cell, with a red exclamation warning on the cell the opponent completes next turn

The board does the arithmetic for you

Pick up a card and every legal cell answers three questions at once: what it would score, where it sets up a fork, and — the red ! — which cell the opponent completes into next turn and the worst it could cost you.

Those numbers aren’t estimates. They run through the same scoreLine the real hit uses, charms and enhancements included, so the figure on the cell is the figure the count-up lands on. In the screenshot above the held 10♠ shows 74 on the centre cell: (15 high card + 9 + 10 + 3 chips) × (1 + 1 for the spade). That’s arithmetic you could do yourself with everything already face-up, which is exactly the kind worth handing over.

The run

Eight rooms of four fights — 32 in all. The same four archetypes keep turning up deeper in the building, scaled each room, and every room’s boss breaks one rule outright: sealed corners, a centre that keeps slamming shut, scorched earth, a short hand, a hot cell worth double, a bleed, a double dealer, a tax on every line they land.

The scaling is steep. The first boss has 2,000 HP, hits at ×1.5 pressure, and blunders 6% of the time. The last has 19,063 HP, hits at ×3.99, and blunders 0.4%. So your ceiling has to climb with theirs: clearing a room grants max HP and a full heal, charm and hex slots open on a schedule, and there’s a shop between fights selling charms, card enhancements and consumable hexes. The interesting ones carry a real cost — Glass Cannon triples your mult and doubles the damage you take — because a charm with no drawback isn’t a decision, it’s just a number going up.

Two build notes

There are no image assets in the project. Not one. Every card, every suit glyph, the felt, the trapezoid board, the opponents’ portraits — all drawn procedurally with Phaser Graphics and Unicode. Sound effects are synthesised too: oscillators and noise buffers with envelopes, no sample files. A scoring run climbs a semitone per beat, which is most of why a count-up feels good.

The rules don’t know Phaser exists. Everything in src/game/ — cards, board, hand evaluation, scoring, charms, hexes, the AI, fight resolution — imports no engine code at all. That one boundary buys two things that would otherwise be painful: 164 unit tests that run in milliseconds with no canvas, and a balance harness that plays whole runs headlessly through the real Fight and the real AI, off a seeded RNG so the same seed reproduces the same numbers exactly.

That harness is the reason I trust the tuning at all. It runs three scripted policies — one that builds forks, one that greedily takes the best line it can see, one that places blindly — and the gap between the first two is the number that matters. It reports the share of turns on which any placement would have completed a line, which is the difference between an opponent who is genuinely hard and one who is merely slow at losing. Balance changes get measured there before they get written into the game.


It started as a joke about the most solved game there is. It turns out that if you stop asking tic-tac-toe to decide the winner and start asking it to decide the damage, the nine cells have quite a lot left to say.