CASE STUDY · SOLO UNITY PROJECT

PawDoku / shipped

A mobile logic puzzle that forced me to stop thinking only about mechanics and start thinking about the whole product.

Role
Solo developer
Engine
Unity
Language
C#
Platform
Android
Status
Published

What the project became

PawDoku is a pet-themed logic puzzle where each row, column and region follows placement rules. The first version was about getting the puzzle to work. The finished project had to handle much more: mistakes, lives, coins, progression, boosters, daily content, persistence, player feedback, monetisation, store services and release behaviour.

That shift is the main reason I use PawDoku as my primary portfolio project. It shows the difference between building a mechanic and owning a game long enough to actually ship it.

The gameplay layer

Four systems the puzzle itself is built from.

Puzzle validation

Placement rules, invalid-move detection, and clear feedback when a move is wrong.

Lives & economy

Wrong moves cost lives and coins, tying moment-to-moment decisions to the wider game loop.

Boosters

Hint, undo, retry and streak-related tools built into gameplay rather than bolted on afterward.

Daily challenge

A separate, repeatable challenge flow with its own lives, streaks, and reward logic.

The parts players only notice when they break

Two of these turned into real engineering problems, not just feature checkboxes.

Cloud saves without silently overwriting progress

Problem
A returning player's progress has to survive across devices and sessions, tied to Google Play sign-in.
Constraint
Local and cloud data can disagree — overwriting either one without asking loses real progress.
Solution
I added a conflict prompt so a returning player decides whether to keep the cloud save or the local one, instead of the game choosing silently.
Result
Save state that survives reinstalls and device switches without quietly erasing anyone's progress.

Ads that don't wreck the first session

Problem
Banner, interstitial and rewarded ads all need to coexist without punishing a brand-new player.
Constraint
A remove-ads purchase still has to leave rewarded ads available, since players often want those on purpose.
Solution
Each ad format is gated separately and onboarding-aware, with purchase logic that only turns off the formats a player actually paid to remove.
Result
Monetisation that doesn't get in the way of learning the game, and doesn't strip away rewards players still want after paying to remove ads.

IAP & consent

Coin packs, booster packs, purchase handling, first-purchase feedback and consent flow, treated as product systems with real failure states rather than plain button callbacks.

Analytics & notifications

Level starts, completions, failures, claims, purchases and ad outcomes are all instrumented so behaviour can be understood after release. Notifications support daily and inactivity-return loops.

Getting it out of the editor

Shipping exposed a different category of problems: safe areas, device layouts, SDK behaviour, mobile lifecycle cases, store requirements, consent, build configuration, debugging release-only issues, and making sure the tutorial can't leave a player stuck in an impossible state.

I handled the Android release process and the Google Play integrations myself. That work is less visible in a trailer, but it's the part of PawDoku that most changed how I approach later projects.

What I learned

PawDoku made me a lot less impressed by a mechanic that works once. I now look for restart behaviour, persistence, failure recovery, onboarding, device constraints, and what happens after the hundredth play session — because those are the things that decide whether a system is actually finished.