Inspiration

We wanted to make a word game, and we were looking for an idea that wasn't just another keyboard or another grid of letters to swipe across. Nothing was really clicking.

Around the same time we happened to be dealing with a combination lock, and the two things came together right there: the rings of a lock are already a nice thing to turn, and turning them through letters instead of numbers is a word game. That was the whole idea.

Word Lock's board is a stack of concentric rings. The first letter is fixed at the top, the last letter sits at the centre, and the rings in between are the letters you can move. You read the word down the vertical column, outside in. One wheel hides a whole family of words that share that first and last letter, so turning is never wasted motion — you're searching rather than answering.

What it does

Word Lock is a free word game for iOS and Android, currently shipping a hand- curated campaign of 80 levels across 8 worlds (for now), in Spanish and English.

  • Turn the rings, find the words. Wheels have 2, 3 or 4 rings (4, 5 and 6-letter words). Each level has target words you need to finish it, and bonus words that are real words hidden in the same wheel — finding them is pure upside.
  • You are scored on efficiency, not speed. Every settle that changes the reading and isn't a word costs you. Finish under the level's par and you keep all three chests; go over and the reward bar drops. There is no fail state — you can always keep turning.
  • Two currencies, three sinks. Coins buy hints (a ring auto-placed into a real word) and keys (a whole word revealed).
  • One in-app purchase. Remove ads, once and forever, plus 500 coins. Rewarded video stays alive even for payers.

How we built it

Flutter. The game (iOS + Android), a gesture lab, and Word Lock Studio — a macOS app that is the content tool.

The wheel. Pan with inertia and spring snap in a single simulation, custom GLSL shaders for the stone and metal ring materials, and subset fonts baked into the bundle because the ring's letter spacing has to be identical on every platform.

The content pipeline is offline and deterministic. A curated dictionary per language. A generator builds candidate wheels; a scorer computes each wheel's par. The sterile turns it should cost over the plausible search space only, i.e. columns whose trigrams actually exist in the language. Nobody ever tries PZDO, so nobody should be charged for it.

Word Lock Studio is the part we didn't expect to build. It's a macOS app from the same codebase: level editor with live phone preview, dictionary browser with verdicts, the shared blocklist in Firestore, wheel-style designer, one-click publishing to Hosting, and a telemetry dashboard. A non-programmer maintains the campaign without ever touching the repo or a binary. It's an internal tool of course, not available for public.

RevenueCat is the spine of the purchase. One non-consumable product for now to remove Ads and earn 500 coins.

Challenges we ran into

Calibrating how hard a level is was, by far, the hardest part. A wheel is just a handful of rings and letters, and there is no obvious way to look at one and say how tough it will be to solve. Our first attempts were basically confident guesswork: a few ingredients we thought mattered, each with a weight we had made up, added together. It produced a number, the number looked reasonable, and it was wrong. Levels we expected to be tough weren't, and the scale barely moved between our easiest and hardest wheels.

The next idea was to rank every wheel against all the others and grade on a curve. That sounds sensible until you realise the game is then measuring itself against itself: change the way wheels are generated and the same level silently changes difficulty. What finally worked was picking something we could actually observe, roughly how much turning a wheel should take before it gives in, and measuring that over the combinations a person would plausibly try.

We also planned to sit people down in a room and watch them play to check our numbers, and eventually dropped it. The game now reports how much effort real levels are taking across real sessions, which is the same measurement with far better coverage. Difficulty is still the thing we're least finished with, and the piece we most expect to keep tuning after launch.

Players told us the inner ring was hard to grab. It's the smallest one, a fingertip covers it completely, and because each new phase of a level adds a ring inside the previous ones, the ring you most need to move is always the fiddliest. Our first instinct was to make its touch area smarter. We built a little tuning app to try the alternatives with an actual thumb, and that turned out to be the weak fix. What really worked was making the wheel bigger than the screen, and letting you tap a letter to bring it to the top instead of dragging for it.

Accomplishments that we're proud of

We got to a difficulty formula we actually trust. After the false starts, what we have now gives every wheel a number that matches how the level really plays, it works the same in Spanish and in English, and it is calculated once when the content is published instead of being guessed at by hand. Levels land in the right order, the reward matches the effort, and when we want to re-scale the whole campaign we move two anchors and everything follows.

People are playing it and telling us they're hooked. Getting the game in front of real players was the part we cared most about, and their feedback has been the best signal we've had: they like it, they come back to it, and the things they've complained about have gone straight into the game. The inner-ring rework and the tutorial fixes both exist because someone told us.

We took an idea all the way to a shipped game, and enjoyed building it together. It started as a passing thought about a combination lock, and we've been able to grow it into a real product, with a real store listing and real players, working on it side by side. That the process has been genuinely fun is not a small thing.

What we learned

Measure before you balance. We had a reward nobody could lose, a difficulty axis that never said "hard", and an effort estimate off by two orders of magnitude. All of it stayed invisible until somebody sampled a few hundred wheels and printed the ranges.

Feel has to be felt. Building a tuning lab to settle the wheel gesture looked like a detour, and it saved us from confidently shipping the wrong fix.

Keep the numbers outside the binary. Remote content packs, remote switches, store-supplied prices, client-derived difficulty. Everything we can change without a review is something we can still change after launch.

What's next for Word Lock

  • More things to buy, and more ways to buy them. The permanent ad removal was the right first product, and now we want the store to serve the players who are deep into the game: packs of hints, packs of keys and packs of coins, plus the cosmetic wheel styles that are already built and switched off for 1.0. Coin packs are finally realistic for us because the player's progress already lives in the cloud under an anonymous identity, which is what a consumable needs to survive a reinstall. On the RevenueCat side that means moving to offerings, a remotely configured paywall and price experiments, instead of the single hardcoded product we buy today.
  • More worlds, and a map to travel through them. The campaign grows, and the flat list of levels grows with it. We want a world map you actually move across, so progress is something you can see behind you.
  • Mechanics that make the rings less predictable. Right now every ring behaves the same way on every level, and over a long session that gets monotonous. We're after variations that change what a ring does: new rules, new constraints, levels that ask something different from the same gesture. Replay and an endless mode belong in the same bucket, and the daily rewards need them once a veteran runs out of new levels.
  • More languages. The catalogue in English is reconciled and ready to go into production, and the pipeline only asks for a dictionary and a frequency table per language, so adding more is mostly content work.
  • Calibrate difficulty with real telemetry. The game already reports how much effort each level is taking, and a single exponent re-tunes difficulty and rewards across the entire catalogue.

Built With

Share this project:

Updates

Submission history