Overview
ace.day is a Wordle-style daily ritual built around a physics skill instead of a word. Everyone gets the same hole each day, you get one shot, and you're graded on where the ball comes to rest — closest-to-the-pin, not lowest score. The whole game is reading the slope of the green (the "break") and dialing your pace; the break is deliberately not previewed, because reading it is the skill.
Under the hood it's a small daily-game engine, not a single game. Putting (ace) is one skin; a curling variant (curl) is a second skin that exists to prove the abstraction — a new sport is a new game object and nothing else.
Design
- One shot, one day — a deterministic per-date hole (seeded from the date), a streak, an archive of past days, and a shareable result card. Only today's play extends the streak.
- The break is the puzzle — the HUD shows a slope readout and a straight-line pace pip, but never the curved path. You commit, the ball rolls, it stops where physics says.
- Engine + registry — the engine owns the daily seed, the 2.5D oblique projection, the simulation, drag-release input, scoring, the result card, and PNG share. Each game plugs in pure functions (terrain, force field, scoring tiers).
- Physics decoupled from rendering — a fixed-timestep accumulator drives the simulation, with a hidden-tab backstop so a live roll always resolves even if the tab loses focus.
Stack
A single self-contained index.html — no build step, no dependencies, runs offline. Custom 2.5D projection and a seeded PRNG for the daily hole, deployed as a static site on Vercel.
