It started as a testing tool
Greenfly was never supposed to be a game.
I wanted to build a system for testing the "clickability" of things on a screen. Can the user actually hit that button? Is it covered by something? Is it too small, too close to its neighbour, too hard to reach? I wanted both sides of it: the automation that runs the tests, and a validator that tells you whether a given UI and UX holds up.
Purely technical. A tool.
The trap
Then I realised that a static UI is only half the problem.
A screen where everything sits still is the easy case. The interesting case is a UI that moves: elements that drift, appear, disappear, and have to be hit at the right moment. To measure the static against the dynamic, I needed something dynamic to test on.
So I thought, I'll make a simple game.
If you build things, you already know how that sentence ends.
SwiftUI, a phone and a tablet
The game was written in SwiftUI, so iOS became the test platform, on a phone and on a tablet. Two screen sizes were useful right away, because clickability changes with the size of the glass and the size of your thumb.
Once it worked there, a different kind of curiosity took over. Does this carry over, tests included, to Kotlin and Android? That question was still about the tool, not about the game. The game was a test subject.
"Why not see what it could become?"
At some point I had a working prototype, and the obvious question was no longer technical.
What happens if I take this seriously? A few levels. More enemies. Decisions for the player. Things to collect. Leaderboards, achievements, the usual furniture of a game that wants to be played more than once.
I did it mostly to find out what the prototype could grow into. That is how a test subject turned into a game.

Then the Switch became official
Nintendo accepted me as a developer, and the next step was quick thanks to Koffeecup: the devkit I was using while porting for Koffeecup was transferred to my company. The transfer was handled officially by Nintendo.
This is a great moment to say many thanks to Thomas Michelou, CEO of Koffeecup, and Rob Ford, Koffeecup's Technologist, for their help.
That sounds like paperwork, and it is. It is also the difference between touching the hardware while working for another studio and doing this officially, on my own terms.
It also showed me a path I had not really considered. A devkit can change hands, and the approval is what makes the work legitimate. For me, that was the moment the Switch stopped being "someone else's project I help with" and became something I could decide about myself.
So the question changed again. What can you do with a game that started on a phone once it lives on a Switch? Other Switch ports have been through my hands, but this is the first one where every decision was mine from the start.
A couch changes a game. Co-op appeared. A PvP concept appeared. Bots appeared, because a game built for several players needs something to play with when the other players aren't there.

Today Greenfly is out on iOS and Android, and the Switch version is in testing, aiming for release before the end of this year.
Greenfly in numbers
- 5 gardens at launch, with a sixth, Frosty Windowsill, arriving in December
- 48 combinations of pesticides and insects
- 13 bosses to beat, some of them rotating through the gardens
- 12 different pests across the first five gardens
- 6 different plant friends to help you
- 5 leaderboards, 29 achievements and 5 activities
It is not a game of picking any spray and hoping. A wrong choice of spray has consequences, and the pests react:
- Rush speeds up for 1.5 s
- Shell hides and shrugs off any spray for 1 s
- Flee flies off and returns faster from another side
- Sidestep hops sideways around the plant
- Frenzy bites 1.5× harder for 3 s
- Armor needs one more hit (once)
- Brood gives birth to one small pest (once)
On top of that come the weather, keeping the plant watered, and the plant's growth.
The sixth garden is a poinsettia by a snowy window, where a tiny wasp friend guards the plant from whiteflies. It is one of the seasonal gardens, which arrive as free updates.
Under the hood, the C++ logic and data are shared between native Kotlin (Android), SwiftUI (iOS) and Unreal Engine 5.8.3. On the Unreal side the UI is native Slate with light 2D rendering.
And the circle closes where it began. Apart from human testing, an automated player runs thousands of simulated games to tune the difficulty of each garden before it reaches players. I wrote about that approach in Letting the game play itself.
What I take from it
I did not plan any of this. A click tester led to a simple game, the game led to a prototype, the prototype led to a real game, and the real game led to a console.
One thing leads to another, and now and then that other thing turns out to matter more than the first. Sometimes it turns out to matter because it is something you can tell.
This is that story.
And one more thing. This story ends actually with me ordering another devkit. But that is a story for another time.