-
-
Out of time? Watch a rewarded ad for +15 seconds and keep packing the same bag — powered by RevenueCat.
-
Drag groceries from the conveyor into the bag, and keep one item on HOLD to plan your next move.
-
Fill every gap in the grid — a bad placement early can block you later. Fast, strategic, satisfying.
-
Pack It! — a fast, satisfying grocery-packing puzzle. Beat your best score!
Inspiration
Grocery checkout is a tiny, universal moment everyone recognizes — you have limited space, a growing pile of items, and a few seconds to make it all fit. That "just one more item fits if I move this" feeling is a natural puzzle mechanic, and it doesn't need any language or tutorial to understand. We wanted a mobile game that's instantly readable in any country, fun in short bursts, and honest about how it makes money.
What it does
Pack It! is a grid-based packing puzzle. Customers arrive one after another with a shopping list; you drag items from the conveyor into a 5×6 bag, using a single HOLD slot to plan ahead, and check out once every cell is filled. Every checkout adds time to a running clock, so the run keeps extending as long as you keep packing well — bags get bigger and denser the further you go.
Five different customers rotate in — a kid, a grandma, a busy office worker, and more — each with their own checkout dialogue, so the same core loop still feels fresh.
How we built it
Unity 6 / C#, targeting iOS. A few things we're proud of under the hood:
- Puzzle generation: bags are generated at runtime with a real exact-cover backtracking search, guaranteeing every bag is solvable without rotation, with a node budget and deterministic seeding so it never hangs.
- Monetization, entirely on RevenueCat: a one-time Remove Ads purchase, plus a rewarded-ad "watch an ad for +15 seconds and keep packing the same bag" continue — limited to once per run, and deliberately suppressing the normal exit interstitial that run so players never see two ads back to back. AdMob's ad events (load, impression, click, revenue) are tracked through RevenueCat's Ad Monetization AdTracker, so ad revenue sits next to purchase revenue in one dashboard.
- Feel: item squash-and-stretch on placement, a cell-glow completion wave, a physical bag-swap transition between customers, a score count-up on the result screen, and light haptics — all behind a single settings toggle.
Challenges we ran into
- Getting the rewarded-continue flow right took a few iterations: resuming the same in-progress bag (not a fresh one) after a successful ad view, without double-counting score or ad-frequency state, and without letting the result screen flash back over a resumed game.
- Balancing the two ad types (interstitial + rewarded) so they never compete for the player's patience — the rewarded ad is opt-in and should feel like a reward, not a lead-in to a second forced ad.
- Keeping every generated bag guaranteed-solvable while still feeling different each time, without a runtime solver bailing out mid-game.
What we learned
RevenueCat's Ad Monetization is genuinely just a tracking layer over your existing ad SDK (AdMob, in our case) — not a separate ad network — which made it straightforward to add real ad-revenue visibility without touching how ads are actually served. Designing monetization around player goodwill first (opt-in rewarded ads, no stacked ads, ads-removed purchasers still get the rewarded continue) ended up being simpler to reason about than a purely revenue-maximizing version would have been.
What's next
Android support, more customer personas, and expanding the reference-art product catalog beyond the current seven grocery items.
Log in or sign up for Devpost to join the conversation.