Introducing Nell

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!

Struggling to stay focused

Today I had another typical day at work. I spent a whole heap of time thinking of other things I should be working on. Somewhere between heart and dollar-sign post-it notes is where I should be working.

I ended up throwing it all out in the bin, and instead thinking of how I can increase my chances of my current project - Emilio's Email Express - could succeed. I know that if I don't actually finish a game on my own, then I'll forever be in a cycle of making and not making, never finishing, because I am so obsessed with ideas that have some unknown potential.

Here's what came to mind when I thought of ways to improve EEE's chance of success:

  • Single-player. Duh, it's the lesson I learned while working on Kinstrike. This is simple, but truth is until this year I'd always been focused on system-based multiplayer, not content-based single player.
  • High share-ability. It's got to have something that is worth showing friends. It could be a creative element (level building), humour, randomness. It could be Twitch integration, or mixed reality casting. I look at EEE, being based around delivery and emails, and wonder if there's some chance of asynchronous communication. It could be speedrunning. It could have an artistic element.
  • Sustainable income. I also had notes for DLC every 3 months (initially I wrote "Game every 3 months" but crossed it out), low-cost expansions, and a growing cast of "friends". I am very interested in building an IP around Emilio and similar characters. For effective DLC, I look at the only success in VR, which is Beat Saber with beatmapped songs, which seems to be a very efficient form of DLC. The DLC uses 1 new audio track on top of new content that uses existing systems and assets. No new 3D art, or effects, or mechanics. I love it!
    EEE DLC could be more levels, with existing mechanics, but perhaps different colours, or slightly different models, for example a desert-themed pack. Writing and dialogue could be a low cost form of new content, too.
  • Solid, polished core. This is obvious, but even more obvious following the DLC talk above. Would BS have been so successful if the hit registration was weird, or the visual design wasn't so TRON-like? If they hadn't polished every pixel and sound in the headset?

I'll only remain motivated to continue EEE as long as there's a hope of success. By continuing to think about the market and what I can offer, I hope I'll find a couple of awesome features that push it over the line.

So, as I resumed work, I watched a talk about Astro Bot for PSVR. I haven't played it... and I haven't played any platformers since Mario Galaxy. I was immediately struck by how unique every level and boss fight is. The sheer amount of effort that went into Astro Bot is astounding. I can't match that. One day in the future, maybe Emilio will stand up to comparison with Astro Bot, but not now. I fear the customer will compare it. Is that the norm for platformers? If so, then I need to look at more arcade-style games.

Dev Progress

I'm using a production schedule that looks like a linear GANTT chart. It list feature sets and allocates a time for me to work on them. I'm fairly serious about the timeline - because I'd rather ship a shit/small game than never ship anything.

Currently, I here's what I should have completed:

  • App, Input & Menu: I kinda cheated here, re-using stuff from Kinstrike.
  • Level: This is bare-bones. I found a way to make long levels without requiring artificial locomotion between areas. I have an alternative idea, that the level exists completely in shared overlapping space, but only contiguous parts of it are revealed at a time, kind of mazelike.
  • Player: I made (and re-made) a cute player model out of cubes. My initial plan was to let the player move freely, but beyond X distance from a platform it would die/timeout. It felt arbitrary, as you were never sure how long you could jump/fly for.
    I spent about a day trying to do a kinematic player body that has Mario Galaxy-esque gravity. The control scheme makes design sense: E will stay on a surface, try to follow your hand, and jumps on command. Your second hand is used to aim abilities. I complicated it by wanting E to traverse and jump on any surface (not just the top). He orbited platforms a lot. It's not at all the slick and predictable controls you get in Mario games.
    I'm not giving up on it yet. My logic for local gravity is good. I am going to try using more common Unity techniques for platformers - rigidbodies and forces - and look also at how they handle jumping. I'm going to start with Catlike Coding's tutorial because I've come across the author's work on Hex Grids and they do a great job explaining code.

Tomorrow I should be starting on Enemy or Collectable features... but I don't even have a player controller yet.

I feel like I don't work on it enough, and every hour I spend working on it is damaging my relationship with my partner. I wish it wasn't a binary choice of game dev or happy home. I need to push forward.