Project Page for Pet Shark Productions.
Mushi Poi is a parallax side-scrolling puzzle platformer I designed for tablets (iOS/Android). It was an ambitious project for me, and it represents my unique twist on the classic “guide the creatures” genre, which I’ve always loved from games like Lemmings. My core idea was to flip the script: instead of directly controlling the creatures, you manipulate the environment to ensure their safe passage.
I wanted a simple and charming narrative to drive the game. I came up with the Mushi, a peaceful tribe of round, white puffballs living in the Mushi Kingdom. The inciting incident is a great whirlwind that tears through their land, scattering the Mushi far and wide.
From there, the player’s mission is clear: find the lost Mushi and guide them on their long journey home. I designed this journey to take them through diverse environments like meadows, forests, and treacherous mountains, all leading back to the safety of the Mushi Kingdom.
The core of Mushi Poi is what I call “indirect control.” The Mushi have a mind of their own and will perpetually walk towards the level’s exit. I wanted the player to feel like a guardian, so their role is to interact with a variety of puzzle elements to clear the path and protect the Mushi from harm.
While I was heavily inspired by Lemmings, where players assign roles to individual creatures, I wanted to try something different. In Mushi Poi, I made the player interact directly with the world. This creates a frantic, engaging challenge where you often have to manage multiple moving parts of a level simultaneously. I designed the game from the ground up for tablets to really lean into multitouch controls, allowing players to tap, hold, and slide multiple objects at once.
I filled the levels with unique, physics-based objects to create interesting puzzles:
I structured the Mushi’s journey across four distinct worlds, each designed to introduce new mechanics and more complex puzzles.
Each world consists of multiple levels, and I broke each level down into five stages. To create a sense of consequence, the number of Mushi you save in one stage becomes your starting number for the next. This makes every Mushi precious.
For players who wanted the ultimate challenge, I added a Survival Mode. The goal here is to complete all 60+ levels in a single, continuous run. You start with a set number of Mushi, and that’s all you get. The only way to increase your numbers is by rescuing the lost Mushi scattered throughout the levels. I also planned for a leaderboard to track how far players can travel before their last Mushi is lost.
I built Mushi Poi in Unity with a personal focus on creating a robust, scalable, and performance-optimized experience for mobile devices. As I look back at the project’s source code, I can see several key systems I engineered that formed the backbone of the game.
Early on, I decided to build a proprietary, reusable framework to keep the project organized. This core system I created handled everything from application startup (Bootstrap.cs) and scene management to a hierarchical UI system that managed popups, screen transitions, and notifications. Building this custom framework was a lot of work, but it allowed for a clean separation between my core engine code and the game-specific logic, which made the project easier to manage and scale.
The game’s rich puzzle design was only possible because I developed a flexible, modular system of over 40 unique “Blocks and Triggers.” Each puzzle piece—from a SpringLauncher to a FragileBlock or a TimedActivatorButton—was built as a self-contained component. I used an interface-driven architecture (IActivator.cs) which allowed me to rapidly design and implement new gameplay ideas.
I didn’t want the Mushi to feel like simple walking sprites. In the Mushi.cs controller, I implemented a state machine to govern their behavior (e.g., Idle, Hop, Peril, Death). I also gave them physics-based movement and used raycasting so they could navigate the environment and avoid obstacles. This gave them a more dynamic and believable presence in the world.
Since this was a tablet game, performance was a top priority from day one. I focused on a few key areas:
Creating over 60 levels was a daunting task, so I knew I needed an efficient workflow. For this, I relied heavily on the Tile Editor plugin, which let me build out the platforming levels from pre-made tilesets. This tool allowed me to rapidly design, build, and edit level ideas. The combination of the Tile Editor and my modular “Blocks and Triggers” system created a really intuitive and powerful level design process. In fact, it was so straightforward that I was able to bring in a couple of level designers to help create challenges, and they picked it up almost immediately. A huge part of this success was the editor simulation I’d set up; it allowed them to test their puzzles and even make changes on-the-fly at runtime, all without leaving the Unity editor.