All projects games/03 · live

POV

A card with two extremes, a hidden target on the scale and one short clue. The rest of the round is people arguing about what "expensive" means.

Year
2026 · live
Role
From the concept to deployment
Stack
Svelte · Convex · TypeScript · Vite
Link
play it now ↗
the needle does not glide: it steps through notches, and every notch catches hover to see it in colour

The problem

It is the only project here that came out of a sentence before it came out of a requirement: a game where you try to guess how someone else sees the world. The round has no absolute right answer, it has the point of view of whoever gave the clue.

Building that is hard because the fun is almost entirely sensory. Looking like a form, a game like this becomes something else, and something nobody wants to play.

The decision

Chase the feel of a physical object before anything else. The dial is the heart of the game and could not behave like an HTML slider. The reference I kept coming back to was a tabletop object, with internal teeth, a sliding lid and an audible catch when it seats.

The needle does not glide, it seats

An ordinary slider is continuous and smooth, and smooth is precisely the defect here. The POV needle steps through discrete notches, with a micro-catch at each one, feedback on every step and a firmer seat when you let go. It takes far more code than a range input to arrive, functionally described, at the same place: a number between two extremes.

Except in this project the functional description barely matters. Dragging, feeling the catches, letting go and hearing it seat is half the round.

The target never reaches the wrong client

Every clue game cracks in the same place: the secret target is visible only to the POV owner. If it travels to every browser and is hidden only in the interface, cheating is one click away.

So the query feeding the screen decides, player by player, whether that number may be sent. Anyone who is not the owner gets a null field until the reveal phase, which means the secret never reaches the wrong machine to then be hidden there.

Why Svelte, and not React

It is the only one of my games outside React. A needle with catches is state that changes many times a second, and I wanted to write that without thinking about memoisation. It was also the fastest project to get off the ground, which left me with a question I still have not settled: whether that was down to Svelte or simply to the smaller scope.