Nell is a tiny mage with a huge mission: protect the universe from the void.

  • Run and leap across floating worlds
  • Bash away incoming void missiles
  • Avoid hazards on the ground
  • Collect potions and power-ups
  • Build and activate special turrets
  • Protect and charge a crystal cannon to seal the void gate

The problem with Axollo

A few weeks into my platformer project, featuring a mailman axolotl with four red shoes, inspired by Mario and Sonic, I was feeling demotivated. I had worked on getting the movement and jumping just right, I had a great dash ability, and was proceeding to work on enemies and picking up items.

I took a night off the PC (as I sometimes do when I’m too tired to code, like right now) to sit on the living room floor with a laptop, pen and notepad. I watched several Game Maker Toolkit videos (they’re amazing) and particularly grew interested in the Bash ability from Ori and the Blind Forest.

You see, during my platformer development, I had a dash that could be chained between enemies. It had a really cool feel to it… but it didn’t align with the SNES-era platformer I was emulating. I was actively searching for a signature ability, one that felt better than a jump, and ideally, one that spoke to the idea of the character: run fsat and deliver things.

Speaking of which, that Axollo/Emilio character was a bit of a mismatch. I should never have gone into a Mario clone (albeit in full 3D, input and all) with a character for whom I hadn’t figured out a signature ability.

I had a pile of notes by the end of the night. Every type of player action imaginable, along with related ideas pertaining to level mechanics. I had a feeling that this search, with no focus, hinted at some deeper problem with the game.

Putting aside my misgivings about Axollo, I decided to focus on the Bash ability. In Ori, the player can collide with a special projectile, hold a button, freeze time for a moment, and select a direction. When the button is released, Ori jumps in that direction, and the projectile is pushed backwards behind her. It has a classical “equal and opposite reaction” physics feel to it. I liked the way it provided movement, attack and puzzle possibilities in one smooth ability.

So I quickly coded it into Axollo. When he hit a shelled enemy (snails, not koopas), he could kick off it. Exactly like Ori. It felt like a fine-tuned version of Mario jump-boosting off an enemy. So I had it working fine, and decided to flesh out a few other mechanics.

I added a health collection mechanic, similar to the rings in Sonic. When you hit a hazard or enemy, the rings burst out of you, acting as a shield. That felt great. I read online reviews of this mechanic and the arguments for it were pretty reasonable.

I added a pickup/eat mechanic, so you could pick up and throw eggs.

Oh, and all this time, I was using copyright sound effects from Mario, Sonic and Zelda. They helped me mentally as I was reproducing certain mechanics, to also use their sounds.

Everything started to break down when it came to enemies. In Mario, the player’s signature ability requires movement orthagonal to the desired direction of motion. You can’t walk forward – you need to jump over, or on top. I toyed with the idea of a curved dash ability (never coded it though, it was more of a musing). I coded enemies that could only be killed from above. In VR, it felt arbitrary – a relic from a different medium. I combined it with the kick/bash mechanic, and nothing was clicking. My Mario clone even had snail models that were clones of koopas, if you squinted your eyes. The whole thing wasn’t making a lot of sense.

I was letting code drive me, without knowing what experience I was designing. I posted on Reddit to see if anyone wanted to work with me on a portfolio piece.

I looked to my right, to the glossy, colour printout of a cheerful Axollo. I could see the flaws. Axollo, the cute mail axolotl fighting snails and delivering email, it wasn’t his time yet.

A new angle

The next day, I opened Unity and made a new scene with a burnt orange gradient skybox. I love the minimal style, and I think it suits mobile games well.

I revisited the Unity Asset Store, looking at 3D characters. I was looking for something with more style, and animation if possible. Axollo, until then, had been my own programmer-art, a jumble of rectangular prisms that looked like a fat yellow Yoshi with four feet and six blue ears.

I saw this cute wizard:

… and I knew exactly the world I’d put her in.

Back in Unity, I placed a simple cube with checkerbox pattern. I replaced the Axollo model with the tiny wizard. I put a Box Gravity in, so she could walk on all faces, like a miniature planet, similar to Mario Galaxy. I’d last used the custom gravity a few weeks earlier, but it got put aside as I was focusing on Mario mechanics.

I hit play.

And oh… my… god… she was so cute!

The game scenario came to me: she’s protecting this cube world from a barrage of missiles firing out of an evil-eyed void portal.

The core loop

I couldn’t sleep that night. My brain was coming up with awesome ideas at a phenomenal rate – I couldn’t risk losing them by sleeping. So I got up and wrote them all down.

Even though there were many “features” I wrote down, they were more like side dishes to the main mechanic: this tiny wizard would jump, dash and teleport around the tiny world, deflecting missiles constantly. It seemed like such a cute, magical, and THREE DIMENSIONAL core loop.

The first try

The next day, I coded the portal, the missiles, and reversed the bash so it knocked the projectile forward, and the player backwards.

I recorded a dev video too early. While the portal zoomed around to random locations, firing an absurd number of projectiles, I tried to control a character that wasn’t yet designed for the task, to execute a bash ability that had no feedback or forgiveness.

It was anxiety-inducing.

But it told me everything that needed to be done.

The bash had to be perfect.

Now, I think I’m half-way to perfecting the Bash ability. I’ve added a lot of juice, feedback, and forgiveness. It will feel like the most satisfying way of deflecting magic missiles. The magic is in the details.

I felt particular proud when I tackled the problem of positioning the player during the bash, such that the ball surface (a radius away from its center) was near her wand (a local position that depends on her direction), but she’d still face the direction of the bash. I sketched the vectors and equations on paper, and it worked! She now looks like she’s in the right spot, even if only for half a second.

When she holds the bash longer, the ball grows in size. This feels SO RIGHT, and I THINK it adds to gameplay depth. I need to be careful about adding stuff like that, though. It was very cool when I saw the code above still working when the ball was resized. She’s like a miniature Dragon Ball Z character.

Not all was lost…

I am kind of rambling here. This is my game dev diary. I’m decompressing what occured over the last few days, and how huge of a relief it is to pivot away from a strict platformer, while still using all the work I’d done. Movement, jumping, collectables, hazards, and other core systems still work just fine. I don’t think this tiny wizard could exist if I hadn’t worked so much on movement and jumping first.

A name for a tiny hero

Sometimes, I reach a point in the night when coding needs to stop. Last night I tackled the question of the character’s name. Because she hits things, I thought about using bells or drums as a thematic element. The sound of striking a bell is knell, and as a kid I wrote a fantasy story about a girl named Nell. I chose that name. There are no games named Nell.

I needed to validate the name as a brand, and think of sub-titles for the game. I thought about “Nell vs the Void” and “Tiny Guardian Nell”. They are pretty cool. My toolset to help try out names is Photoshop and I like to think in terms of logos – if I can make a name look good as a logo. I ended up with this, with a simple, retro, feel, something between Zelda and Alex the Kidd…

I know it’s not perfect. The wand can read as a strange R. But the basic idea is there.

I went with The Tiny Mage because it is evocative without narrowing in on a specific scenario or theme. I feel that, with Nell: The Tiny Mage, I am creating the world’s first and only tiny mage that defends the universe.

I’m going to share the project soon. I need to get feedback on the core loop. Watch this space!