Inspiration
My wife and our children are the reason this game exists. Our three boys took a huge interest in designing fun experiences, and seeing their eyes light up when I shared a build of their ideas means everything to me. Those moments, more than any feature list, kept me coming back to the next build.
The music is by my uncle, George, who also scored my previous release, Save the Cheese. Having him on both games made this one feel like a family project from the start and I'm very grateful to all of them.
What it does
Mochi Mochi Donuts is a merge game in the watermelon style. Drop donuts into a play area, and when two of the same size meet they combine into the next size up. Stack them too high and they cross the topline: game over.
There are three ways to play:
- Classic runs until the topline ends the run.
- Power keeps those rules and adds three powerups, spent from an in-game energy bar.
- Timer is Classic against a countdown. Time or the topline ends the game, whichever comes first.
On Google Play there are achievements, leaderboards, cloud save, and live events such as Glaze of Glory!. The same game is also live on Reddit Games, on Android phones, and on Android TV.
Additional features such as the powerups, the collection album and night (dark) mode make it different from what's out there in this genre.
How we built it
I built it in Solar2D (Lua) with Box2D for the physics. I also built this as modular, de-centralised and event-driven as possible. Even though Solar2D has some amazing features built-in, I recreated some to ensure we had full event-driven control where needed.
Gameplay lives in one fixed world with UI elements around it. That world is scaled uniformly to fit the screen, so donuts, walls, and the space between them stay in proportion on any device. Rotation, folds, and split-screen change the view. They don't rebuild the physics. I tested on many types of devices including folding phones to ensure this worked as intended.
The in-game HUD sits in screen space and reflows around that play column: top and bottom bands when in portrait mode, side columns when in landscape. Only one layout module reads the display size. Everything else works in world units, which is what made later ports possible without rewriting the game for each screen.
Services such as Play Games sign-in, achievements, and leaderboards sit behind an event bus and soft-fail where a platform does not have them, including HTML5 and the simulator.
I did seek out and purchased very specific art assets packs from various sources that specifically matched the style I had designed. There are more to come but I'm delighted with that I could find asset packs to match what I had in mind and a huge thank you to the talented artists that put these together.
Challenges we ran into
The hardest problem was most certainly the orientation issues. The play area had to keep its integrity no matter the device size or which way it was held: the proportional size of the physics bodies, and the space they have to live in etc. Banner ads made that stricter. Turning a banner on or off changes how much of the screen the game can use, and the play column still had to fit without stretching, clipping, or giving the donuts a different size box to fall in. Getting that exactly right took several iterations. Plus there are limitations with Box2D with regards to resizing assets once their physics bodies have been drawn. So this was tough. But I got it exactly the way I wanted it in the end.
This was also my first experience with monetisation. I am still learning where adverts belong within the game experience so they support the game without breaking the fun. In an ideal world I would have none of course, but I purposefully designed them to be more rewarding so that players can squeeze extra excitement while supporting the cost of running the game.
Accomplishments that we're proud of
The layout holds. Portrait, landscape, folds, and banner ads on or off, the play area stays the same game. That was the bar I set, and it took the longest to clear.
The game is already live in more than one place: Reddit Games still has versions up, and Google Play has both mobile and Android TV. The boys' ideas are in the builds they got excited about. George's score is in the game. I'm just very proud of what we have built so far with so many more ideas yet to be released.
One other item I'm really happy with is Android TV. I've never played one of my own games on TV before and I'm very happy that this game works whether you're playing on touch-screen, keyboard, mouse, game-pad or remote control. The experience is the same even if the controls differ.
What we learned
A fixed simulation and a separate view is the only way I found to support every screen without the physics drifting. Once the world units stopped changing, rotation became a layout problem instead of a gameplay one.
I also learned that monetisation is a design problem, not a switch you flip at the end. Where an advert sits changes the play space, the pacing and whether a run still feels fair or not. I am more careful about that now than when I started. I genuinely thought it would be a case of "adding ads at the end".
Building in the open with my children changed how I judge a feature. If a build does not make their eyes light up, it is not finished. And I'm not so quick to say no based on my own judgement - I learned that it's worth trying it out and seeing do people have fun with it first.
What's next for Mochi Mochi Donuts
Other platforms - iOS, Samsung, HTML and more. I'd love to have CTV and OTT versions in here. The game is built to be platform agnostic, so porting is not a rewrite of the rules and the versions aren't a shoehorn-in - they're build to suit the platform more naturally.


Log in or sign up for Devpost to join the conversation.