Inspiration

We are a two-person, husband and wife team. One of us has 25+ years software development experience and the other nearly 20 years of marketing and art experience. 11 years ago we created a Flappy Bird knock-off during its peak hype as a way of getting our feet wet in the mobile app space. Two years later, in 2017, we made the original Neon Poly, a single player puzzle game with no timer. We've released six apps since, including one game. Through all these years, we've had numerous discussions about how we could make Neon Poly into a two-player game with a timer element. We even created three different POCs over the years using different technologies. None of them were particularly exciting. But we did learn many lessons. And that has brought us to Neon Poly Duo, the culmination of years and trial and error: a fast-paced, two-player, puzzle dueling game.

What it does

At its core, Neon Poly Duo pits two friends against each other to get the highest scores possible on the same board, using the same pieces, in the same sequence. You do not play at the same time as your opponent. You take your round whenever you want, they take theirs whenever they want, and neither of you sees a round's scores until you have both played it. Matches are decided on combined score across all three rounds, so a comeback is alive to the last board. Layered on top of that is a "heat" element. The faster a player places pieces and clears lines, the higher the heat and higher the score multiplier. Three core dueling modes are offered, one with no power-ups, one with limited power-ups, and one with virtually unlimited power-ups. The main limiter with scoring and power-ups is the timer. All boards allow at most 3 and a half minutes of play.

Duels are the core but not the whole game. There are solo runs where you chase your own best, ghost races against a friend's recorded run, "Rival" bots with their own personalities, and a Daily Challenge. If you really want to play a duel against a human and don't have a friend to play, we'll match you with a stranger.

Around all of that sits the stuff that keeps people playing. Weekly events rotate in and out on their own. There's a seasonal Neon Pass with free and paid reward tracks, a rank you climb, weekly missions, a daily chest, and achievements. Almost everything you earn goes toward unlocking creature avatars and neon board skins.

The game is free. There are optional in-app purchases, including one that removes the interrupting ads ("interstitials"). Other in-app purchases can be used to buy things that could also be earned through gameplay. Purchases are never required to progress.

How we built it

Our past six apps were all written using Flutter, which makes cross-platform distribution and testing a breeze. This is our second Flutter game, and we built it without a game engine. The board, the pieces, the clears and every effect are drawn directly with CustomPainter, which gave us exact control over how the neon reads on a dark screen. AI is a powerful accelerator, something we didn't have for years, but it is by no means perfect. Knowing this, from lots of experimentation, we chose a spec-first development process with heavy human involvement and AI agents that cross-check each other. We leveraged nearly all major agentic harnesses, including Claude, Cursor, Codex, and OpenCode. We used all major models at one point or another. Many newer models have tremendous strengths, and all models have flaws. Going back to the specs, we built our own "spec-lite" framework including "steering" docs, knowledge docs, and more. Over the past several months of development, we have written, reviewed, implemented, code reviewed, fixed, and playtested over 100 specs. It's a day and night process. This was not a vibe coded project. This was a labor of love.

One decision that paid off: our live content is data, not code. Events and seasons rotate out of config documents on the server, so we can change what's running, retune it, or fix a mistake without shipping a build and waiting on app review.

Anti-Cheating and Money

As a multiplayer game with leaderboards and prizes, anti-cheating was a huge part of our effort. That aspect of the game alone took about two and a half months of work. And in fact, that is how we landed with RevenueCat. RevenueCat has easy-to-use client and server APIs. We seamlessly integrated RevenueCat within the game and also our backends to ensure that no one could fraudulently buy their way to the top of the leaderboard. There is nothing obviously "RevenueCat" in the UI including no traditional paywall. Purchases live in a shop you visit when you want something. Every in-app purchase goes through RevenueCat, and every ad event reports to it, to ensure maximum credibility. The same rule applies to everything else. Nothing that pays out is decided on the phone. Wallets, claims, chests, pass rewards, ad rewards, purchases: the server owns all of it.

Challenges we ran into

AI is a constantly evolving new space for all of us. Some models were just bad, regardless of benchmarks. New does not always mean better. Even today, we are choosing to use an older version of a popular "frontier" model. Left unchecked, AI will create terrible code. So there was an ongoing challenge loop, nothing that was fully solved, just mitigated through checks and balances. Also, when we began the project, we were spending over $2,000 per month just in AI credits, for two people. That was unsustainable and we suspect many people reading this will say that's crazy. By splitting the AI work between multiple providers, we cut our costs to a fraction of that.

Even though we have shipped 8 other apps and games, this is the first one that had a publicized launch date. This expected launch date became a terrible thorn in our side when the string of five Apple rejections ensued across two weeks. We had to push the launch date by 5 days but eventually got the needed approval. It was a frustrating experience that ended in tears of joy and relief.

Accomplishments that we're proud of

This is by far the biggest project we have ever attempted. The next closest was our movie and TV discovery app, Who They With, which took two years of development, pre-AI. Neon Poly Duo would not have been possible for us without AI helping us. We crammed about 6 or 7 years of work into about 6 or 7 months, not counting all of the earlier prototypes.

One of our early playtesters is hooked on one of the features of the app. He is not even our target demographic but he plays nearly every day. That by itself is a huge win for us.

We are also proud of the small stuff nobody will notice. When the timer runs out, the UI becomes intentionally non-tappable for a moment so that the user does not impulsively tap something, like a rewarded ad button. Also, some events give rewards. In a lot of games you have to be there when the event ends or you lose what you earned. In ours, anything you earned is waiting for you the next time you open the app, for a full month after the event is over.

What we learned

We learned to ship the trust boundary first. We initially chose to prioritize playability and UX over reliability. It kept us fast for a while, but then moving every payout to the server became a painful migration that kept test builds broken for weeks. We would make the opposite call next time.

Our economy spreadsheet was a hypothesis, not a plan. Weeks of real playtesting were required before the numbers felt right. In fact, just weeks before launch, real tester data showed us paying out currency roughly 4x faster than anyone could spend it. So we ran a revised economy simulation and rebalanced... thankfully before shipping.

One other thing to add is the need for patience. Pre-AI, patience was presumed. We would work for days before being able to demo even the smallest feature. With AI, we can whip up a prototype in 5 minutes. But there is a world of difference between a working prototype and a releasable product. On the surface, our game looks the same as it did two months ago, but if we had released the game back then, it would have been a huge disaster. Patience and discipline are key. You cannot rush good stuff.

What's next for Neon Poly Duo

We went live on both stores on September 25 and launched officially on September 28. Next up: fixes and improvements driven by what our first players tell us, then localization. We are launching in English only, with 14 more languages planned for later this year.

Built With

Share this project:

Updates

Submission history