Puzzle Reveal
A picture puzzle that reveals itself piece by piece.


- Project
- Our own product
- Our role
- Game design · Unity development · iOS release
- Duration
- 4 months
01 / Behind the product
A real need. A considered solution.
Challenge
Match-3 needs to hold the player inside a 60–80% win band; too easy bores, too hard drives people away. In the first version difficulty came from a formula, and past level three the game became unwinnable. Then there was release: in the chain from Unity to the App Store a single missing plist key meant the app crashed on launch.
Approach
We dropped the formula and hand-tuned 50 levels: each has its own picture, tile count, move limit, blocker mix (ice, box, chain) and goal type, with every fifth level as a breather. The difficulty manager targets a 65% win rate and stages a near-win moment inside the last 10% of moves. Beyond 50, endless mode cycles the same pictures. Piggy bank, season pass, daily challenge and mascot live in separate managers. The release chain is scripted: compile, visual tests, build number, iOS export and plist gates (AdMob id, ATT copy, SKAdNetwork) in one command; if a gate fails the chain stops.
Result
Live on the App Store as PuzzleReveal: Match & Reveal, version 1.1.2. The scripted build and plist-gate approach established here is reused across our later games. A softlock guard releases the board automatically if the processing flag gets stuck, so no error can brick a level permanently.
02 / Inside the product
The experience, on screen.
Open a screen to explore the details.05 images
03 / Scope & details
The details make the experience.
- 01
50 hand-tuned levels, each with its own picture; endless mode beyond
- 02
A difficulty manager targeting a 65% win rate with a staged near-win moment
- 03
Ice, box and chain blockers; four goal types
- 04
Piggy bank, season pass, daily challenge and mascot
- 05
Scripted iOS build and submission chain with plist gates
Technology
- Engine
- Unity 6000.5.0f1
- Levels
- 50
- Languages
- TR · EN
INSIDE THE PRODUCT
The engineering behind the interface.
Systems we built and concrete problems we addressed in this project.
A hand-tuned difficulty curve
Levels 1–3 are a tutorial zone (~90% win rate, 4 gem types), 4–8 a ramp (~75%, 5 types), 9–15 the core (~65%, 5–6 types), 16–20 a challenge zone (~55%, 6 types); every fifth level is a breather. The old 100 × level formula made the game unwinnable past level three.
Near-win state is reset
If the player quit to the menu during a near-win the flag stayed set and the next level reported "so close" on its first move; the flag now resets at every level start. A season pass bought with real money no longer runs the gem-spend path, closing a double charge.
Build gates catch the crash at build time
The chain looks for the AdMob app id, ATT description and SKAdNetwork entries in Info.plist and the screen-guard class in the Xcode project; if any is missing it stops. These gates were added after a launch crash in build 13.
Your idea could be next.
What could we build for you?
From a first release to a growing platform. Let’s plan the design, development and launch together.
From Türkiye to the US, UK, Australia and everywhere in between.