Skip to content

How the Daily Puzzle Works

5 min readFeatures / Devlog

The daily puzzle is not downloaded. It is computed from the date, which is why it is the same for everyone and still works in airplane mode.

A daily challenge has two requirements that pull in opposite directions. It has to be identical for every player, or comparing scores is meaningless. And in a game that promises offline play, it has to work with no connection at all.

Seeded generation in one paragraph

A random number generator seeded with a fixed value produces the same sequence every time it is run. Feed it the date instead of the clock and every device gets an identical sequence on any given day. Use that sequence to place lilypads, lotuses and stones, and the boards match — not approximately, but tile for tile.

The whole approach rests on the generator being deterministic across devices, which is why the placement logic uses integer arithmetic throughout. Anything that varies between processors or platforms would produce a subtly different pond, and a daily challenge that is nearly the same for everyone is worse than no daily at all.

Why not just fetch it from a server

It would be simpler, and it is what most games do. It also means the daily puzzle stops working the moment you are on a train, and it introduces a piece of infrastructure that has to stay up for as long as the game exists. A generated board has neither problem: it will still work in ten years, on a phone with the radio permanently off, with no bill attached.

There is one honest trade-off. A server-side daily can be curated — a human can look at tomorrow's board and reject it for being dull. A generated one cannot, so the generator has to be constrained tightly enough that it never produces an unfair or trivial pond. That constraint work is where most of the development time actually went.

The Kinetic Lotus level map winding across the pond, showing earned stars and the next locked level
The daily sits alongside the campaign rather than inside it, so a missed day never blocks progress.

Streaks that do not punish you

Your streak counts consecutive days on which you completed the daily, and it is stored on your device with the rest of your save. Missing a day resets the count and nothing else — no lost rewards, no locked content, no notification asking where you have been. It is a number that describes what you did, not a debt.

Sharing is spoiler-free by design. The share card shows your score and the shape of your run without revealing the opening tap, so posting it cannot ruin the board for anyone who has not played yet.

Leaderboards, the one online piece

If you sign in, your daily score can be posted to a leaderboard alongside your display name. That is the only part of the daily loop that touches the network, it is entirely optional, and skipping it costs you nothing but the comparison. What gets stored and how to remove it is set out in the privacy policy and the delete account page.

The rest of the offline story is in this post on offline play, and Kinetic Lotus is free on Google Play.