ShutterClash — The Camera-to-Card Battler That Made Me Shelve Another Game
One of the things that keeps indie development interesting is that your best ideas never come at your desk. I was lying in bed watching TV when ShutterClash arrived — fully formed, like it had been waiting for me to stop thinking about the game I was supposed to be building. That other game, a courtroom comedy called Special Bylaw Unit where you'd defend ridiculous municipal bylaw cases against an LLM-powered jury, got shelved immediately. When an idea hits this hard, you don't argue with it — you just start building.
Six weeks later, I've got a functional card battler that turns your camera into a card factory and an AI pipeline that's doing things I genuinely didn't think were possible on a mobile game budget. Here's how it happened.
The Core Loop: Point, Shoot, Battle
The pitch is simple: you point your phone camera at any inanimate object — a shoe, a coffee mug, a kitchen sink — and ShutterClash turns it into a battle card. Not just a stat sheet with a thumbnail, either. The game generates full anime-style card art with type-specific energy auras, a little sprite character interacting with the object, and a stat block that reflects what the thing actually is in the real world.
The five card types form a rock-paper-scissors wheel: Metallic beats Textile, Textile beats Synthetic, Synthetic beats Organic, Organic beats Electric, and Electric loops back around to beat Metallic. Cards come in three tiers — bronze, silver, and gold — and you build ten-card decks with a specific composition: five Tier 1s, three Tier 2s, and two Tier 3s. Battles are turn-based with a speed-first initiative system, type advantages that double or halve your damage, chain buffs for playing three of the same type in a row, fatigue that wears down survivors, and a blind-pick opening round that sets the tone.
There's a Flash currency (10 Flash per capture), a pity counter that improves your tier odds when you're on a cold streak, seasonal themes that change the visual effects, and a bonus stat mechanic where discovering a brand-new card type lets you permanently buff one of its stats by ten percent. It's a CCG where the booster packs are the objects on your desk.

The AI Pipeline That Makes It Work
Every capture fires three separate calls to Gemini via Vertex AI, and the order matters more than you'd think.
First is the validation check — a fast, cheap call that confirms the photo's subject is an inanimate object. This isn't just a quality gate; it's a liability gate. If someone tries to photograph a person or an animal, the system rejects it before any expensive processing happens. The prompt is specific about this: hands holding an object are fine, people in the background are fine, but if the primary subject is a living thing, it's a hard no.
Once validated, the system generates stats before it generates art. This was an architectural decision that took a few iterations to land on — the card type (Metallic, Organic, Electric, etc.) determines the visual aura that surrounds the object in the final card image, so you can't draw the art until you know the type. The stat generation itself is surprisingly nuanced: Gemini looks at the object's real-world properties, proposes base numbers for attack, health, and speed, and then a programmatic correction layer kicks in. It caps speed at 50, redistributes the remaining stat budget proportionally, and runs a neighborhood-search algorithm to avoid multiples of 5 and 10 — because I wanted stats to feel organic, not video-gamey. Nobody's going to notice that their Tier 2 coffee mug has 33 attack instead of 35, but collectively these small deviations make the game feel less like a spreadsheet and more like a living system.
The image generation is where things get wild. The prompt is enormous — I won't paste it here, but it describes type-specific energy auras in obsessive detail. A Metallic card gets "interlocking geometric energy structures of gold and iron light" with "ferrofluid behavior." An Organic card gets "flowering vines that pulse with warm golden-green bioluminescent light." An Electric card gets "crackling cyan circuit-board patterns and unpredictable static discharge arcs." Each type also has its own sprite character — a little imp that appears in the card art interacting with the object — and the prompt includes the sprite as a reference image while being careful to instruct Gemini to reinterpret rather than copy it directly.
The result is that even if a hundred people photograph a shoe, every card is different. Different angles, different lighting, different AI interpretations — same object, infinite variations. That was the creative vision from the start: in most CCGs, your card is identical to everyone else's copy of that card. In ShutterClash, your card is yours.
Building a Simulator Before Building a Game
I'm a board game vet, and I've played enough imbalanced CCGs to know that feeling — when you realize one deck archetype or one opening strategy dominates everything else, and the meta is solved before you've even finished the tutorial. I was determined to avoid that.
So one of the first things I built wasn't a battle screen or a card collection view. It was a simulator. Before the game was playable, I was running hundreds of simulated battles against different deck compositions and rule variations, testing win rates and first-card advantage and combo buff effectiveness. The simulator lives in its own directory alongside the backend, with scripts for generating test decks, running batch simulations, and resetting the database between runs. I still use it every time I tweak a balance number or add a new chain buff.
This isn't the flashy part of game development. Nobody's going to make a TikTok about a Python script that runs five hundred simulated card battles. But players will feel it every time they lose a close match and think "I could have played that differently" instead of "that card is busted." Balance work is invisible when it's done right; you only notice it when it's wrong.

The Soul Problem
For a long stretch — and I mean the better part of several weeks — ShutterClash had a technical identity but no soul. The capture pipeline worked. The battles worked. The deck builder worked. But there was no answer to the question every player eventually asks: why am I doing this?
In a traditional CCG, you're a wizard summoning creatures or a duelist playing trap cards. The fantasy justifies the mechanics. ShutterClash didn't have that yet, and it gnawed at me. I tried an idea where capturing a photo bound a random ghost animal spirit to the image, but it felt thin — an effect layered on top of the game rather than woven into it. The spirits didn't explain anything.
The answer, when it finally clicked, was the sprites. Five type-specific creature characters — a Static Imp crackling with data corruption, a Forge Imp built from gears and ancient alloys, a Root Imp born from forest growth and decay, a Weave Imp stitched from encoded textile patterns, a Core Imp humming with artificial consciousness. Your photograph binds one of these sprites to the object, giving it powers. Battles are how sprites expend their bound energy. Card types aren't arbitrary — they're expressions of what kind of entity found a home in your photo.
Suddenly everything made sense. The capture mechanic wasn't just a gimmick; it was a binding ritual. The battle system wasn't just a math engine; it was sprites clashing. The type wheel wasn't just a game design convenience; it was a taxonomy of spirits. The whole loop had a reason to exist.
The Ugly Phase (and the Mega Man Lifeline)
Here's a thing about every Bunnyhug game I've built so far: there's a phase where everything is functional but ugly, and I get deeply demoralized. The gameplay works, the tech is proven, but it looks like a developer built it — because a developer did, and developers are not designers.
This phase hit ShutterClash hard after the first on-device test. I fixed the bugs from that test run, and then... nothing. For nearly three weeks, the repo was quiet. The game was playable but uninspiring, and I was stuck in that gap between "it works" and "it looks good" that I've learned to recognize — but never learned to enjoy.
The thing that pulled me out was, of all things, Mega Man. I don't know if it was nostalgia or just the way those bold sci-fi borders lined up with the sprite designs I'd already generated, but something about that visual language clicked. Strong angular frames, glowing circuit-board accents, that particular shade of cyan against deep navy backgrounds. I threw together a few design drafts and it just... fit. The feeling I wanted the game to have — futuristic but approachable, mechanical but full of personality — was already there in the Mega Man aesthetic. I just had to borrow it.
The past week has been a design sprint: applying the new style to the card view and camera view first, fixing the camera in the emulator (always a dicey proposition), and doing a big round of UI cleanup to prepare the rest of the views. The difference is night and day. It went from looking like a prototype to looking like a game.

What's Next
ShutterClash is functional and the design theme is finally coming together, but there's still real work ahead. The Mega Man styling needs to propagate to every view — the collection screen, the deck builder, the battle arena, the peer lobby. I'm adding more combo bonuses to deepen the strategic layer. Tournament mode is on the roadmap. And there's an in-game currency store to build out.
The launch plan is private testing first — if you want in, you can join the tester group at bunnyhug.studio/testers.html — followed by a full 1.0 release on both the App Store and Google Play.
Is it ready today? Not quite. Does it need more polish before I put it in front of real players? Absolutely. But is the core loop — point a camera at something, get a unique battle card, build a deck, fight — already more fun than it has any right to be at six weeks old? Heck yes.
This is the fourth Bunnyhug game, and the pattern is becoming familiar: a-ha moment, furious build, ugly phase, design epiphany, manic push to release. I don't know if that cycle gets easier, but I'm learning to trust it. When the Mega Man borders click in, you're almost home.