The Cruzadex magazines I grew up with never kept score. Fill the grid, feel good about it, turn the page. My Fill-In Crosswords game needs a bit more than that. Players need a reason to come back tomorrow, something to get better at, and a sense of progress. All without turning a relaxing puzzle into something stressful.
It’s a different kind of problem from my Water Reminder app, where the job was making logging water intake as quick and easy as possible. In a game, the job is giving players a reason to keep playing.
That’s what I’ve been working on with Claude these last few evenings. How to score, track and reward players in a way that’s fair, a bit challenging, and makes them want to come back for more. Below are the main decisions that came out of it, and how they shaped the first version of my stats screen.
The obvious way to score a puzzle is time. But a clock on screen turns a relaxing puzzle into a race, and that’s not what this game is about. A timer on the puzzle screen was part of the initial plan and UX, but I decided to drop it, together with a best time metric for each puzzle.
I decided to still record time on the puzzles, so the stats show an average solve time per track. For example, players can see if they’re getting quicker at Medium over time. This makes more sense as a metric than best time on each puzzle, since most of the time a puzzle will only be solved once.
In a puzzle like this, solving it cleanly matters more than solving it fast. So every puzzle gets up to three stars:
An error is tracked when a placed word disagrees with a letter already on the grid. The game shows it but doesn’t block it. Moving words around is free, but an error counts as soon as it happens, even if it’s undone straight away. That keeps the third star about logic, not guessing.
And that’s what the whole game is built on. Every puzzle has exactly one solution, so it can always be solved with logic, never guesswork. Three stars is a Perfect solve, and that’s the thing worth chasing.
Players can replay any puzzle. But once they know the answer, a replay is easy stars, so replays needed a rule. Stats count the player’s first attempt, stars count their best. A replay can upgrade a puzzle’s stars, but it never touches streaks, totals or averages. No time windows, no exceptions.
This keeps it fair. The first attempt is the honest one. On a replay, the player already remembers where they made errors or which letters they revealed, especially if it’s soon after. Stats can’t be farmed by replaying the same easy puzzle over and over, but any puzzle is still worth revisiting to chase the stars that got away.
Streaks are a great reason to come back, but it’s easy to end up with too many. Play, no letters revealed, no errors, etc… That’s where Perfect score came from covering most of those. So two streaks are enough:
Every puzzle has a Skip button, but skipping is free. A player stuck on a puzzle can move on, even halfway through, without losing their Perfect streak. Getting stuck shouldn’t feel like a punishment.
Showing puzzles solved out of the total looked fine initially until I imagined it on day one: 1 of 700. That would feel impossible, and it would get worse every time new puzzles would be added. So I decided to measure progress differently and track Perfect puzzles over played puzzles instead. “Perfect 38 / 52” gives players a metric they can actually improve, instead of chasing an ever-growing number of puzzles.
It also gives the end of each track a purpose. When a player has solved everything in one, the home screen shows how many puzzles aren’t Perfect yet and takes them straight to the first one. Running out of new puzzles becomes a reason to replay and improve scores.
The stats screen keeps it simple: the two streaks at the top, then a card per track, or all together, with puzzles solved, the Perfect ratio, average time, errors and letters revealed.
Leaderboards and badges are something I want to explore, but I’m leaving them out of the initial release. I’m studying on how to get leaderboards for free through Google Play Games for Android and Game Center for iOS, since I don’t have a backend for my game to drive that type of functionality.
As for badges, I have it as an idea but I need to figure out a system that doesn’t involve generating a ton of assets that will increase the app size and potentially make it slower as well. I’m thinking of maybe using icons in some dynamic form to cover a lot of scenarios, but I need to spend more time on it. If they look just like basic icons, they might not be exciting enough as well.
This turned out to be a really fun part of the project. Thinking about what makes a puzzle feel fair, what’s worth chasing and what brings players back the next day is a very different way of thinking from building utility apps.
And the fun isn’t over yet. Next up is working out whether a puzzle is really easy or hard, which feels like a whole different game in itself 😅