Inspiration

Many mobile puzzle games turn monetization into pressure: interruptions during play, progression gates, consumable power, timers, lives, or deliberately frustrating difficulty. Purrzle started from a different question: can a mobile game monetize without making the player its hostage?

Purrzle is for casual and dedicated puzzle players who want a calm spatial challenge they can play offline, put down, and return to without protecting a streak or paying to keep moving.

What it does

Purrzle turns a cat-run broadcast station into a deterministic 6×6 spatial puzzle. The player pushes from a board edge, moving every movable Program in that row or column together. A Program locks ON AIR when it reaches a matching Dock, so every board asks one clear question: in what order should the shows go on air?

The full Career contains 5,040 levels across fourteen Media Years and seven broadcast eras. Momentum lets one gesture travel one to five cells. Restrictions turn held Programs into lane constraints, while Synergy rewards locking authored Program pairs in the right sequence.

Every level has Par and a persisted personal best, but completion, not score, is the only progression gate.

Purrzle is local-first: there is no account or sign-in, core play works offline, and Career progress, mastery, Hint state, and recovery data stay on the device. The interface is fully localized in English and Bahasa Indonesia.

Monetization without progression pressure

The RevenueCat-powered Media License is a one-time lifetime purchase, never a subscription. It gives players a no-ad route to an in-fiction Hint Pack and suppresses eligible ad breaks, but it never unlocks a level, changes a board, grants power, alters Par, or changes difficulty. Free play remains complete.

Consent, entitlement, configuration, platform, no-fill, dismissal, offline, and provider failures all fail safely: they cannot block the board or Career progression.

Purchase activation, cancellation, clean-device restore, and licensed ad suppression have been verified through RevenueCat sandbox testing on device.

Key features

  • Edge Push: drag a whole row or column; every movable Program in the lane moves together.
  • Momentum: one gesture commits one to five cell-steps.
  • ON AIR lock order: Programs become fixed obstacles after reaching compatible Docks.
  • Restrictions and Synergy: held Programs block lanes; authored type pairings can clear them faster when locked in the right order.
  • Par without punishment: efficiency and personal best support mastery without gating completion.
  • A complete Career: 5,040 deterministic levels, fourteen Media Years, seven Macro Eras, twelve Chapters per year, and thirty levels per Chapter.
  • Local-first play: no account or sign-in; core play works offline.
  • English and Bahasa Indonesia: complete in-app localization with English fallback.
  • Calm presentation: tactile paper-inspired broadcast art, responsive boards, whole-gesture Undo, Hint highlighting, audio controls, and clear completion handoffs.
  • RevenueCat Media License: one validated lifetime product with restore support and fail-safe entitlement handling.

How we built it

Purrzle is built with Flutter and Dart for Android. The gameplay core uses immutable board state, a pure reducer, preview analysis, whole-gesture Undo snapshots, Restrictions, Synergy, and completion rules that can be tested without rendering a screen.

Its content pipeline combines deterministic generation, seed-backed catalogs, stored proof replays, exact Par verification, and a fail-closed content validator. The shipped Career is an append-only fourteen-pack manifest backed by versioned local save migration.

RevenueCat is isolated behind a testable purchase gateway and pure Media License policy. Google Mobile Ads and consent handling sit downstream of gameplay. Neither commerce nor advertising is allowed to control puzzle completion, navigation, rewards, or Career access.

Quality gates cover formatting, static analysis, unit and widget tests, golden tests, accessibility, integration behavior, architecture boundaries, documentation, and generator-scale proof validation.

Challenges we ran into

The hardest gameplay problem was making lane-wide movement readable while preserving meaningful lock order. Preview and commit therefore share the same structural analysis, and whole-gesture Undo makes experimentation safe.

The hardest product problem was keeping monetization useful without making the free route punitive. We solved it by drawing a hard architecture boundary: optional benefits may change how help is delivered, but they never own progress.

Building a 5,040-level Career also required deterministic generation that remains reproducible across releases, exact proof replay, stable recipe identities, and conservative save migration.

Accomplishments that we're proud of

  • A complete 5,040-level Career across fourteen Media Years.
  • Deterministic generation with stored, replay-verified solutions.
  • A tactile paper-inspired Android interface that remains readable on compact phones.
  • Whole-gesture Momentum, Undo, Restrictions, Synergy, Par, personal best, and completion-only progression.
  • English and Bahasa Indonesia localization.
  • A RevenueCat lifetime purchase and restore flow verified on device.
  • Monetization failure paths that cannot block play.

What we learned

Monetization feels less hostile when it is bounded, legible, and thematically connected to the player's goal. The strongest design rule became simple: purchases and ads may change how an optional benefit is delivered, but they must never own the player's progress.

Deterministic content also changes how a large puzzle game can be built: generation is not enough. Every generated board needs a stable identity, a proof that replays through the real reducer, and migration rules that preserve existing players.

Built with

Flutter, Dart, RevenueCat, Google Mobile Ads, and Android.

What's next

Post-launch work focuses on player feedback, release metrics with defined denominators, sampling difficulty across later broadcast eras, and continuing to improve accessibility and presentation without weakening the completion-only progression rule.

Built With

Share this project:

Updates

Submission history