NINJECTORY postmortem

So, to start, this isn't a new game.  I slapped together a NINJECTORY prototype early this year and then sort of shelved it because life got pretty crazy.  The original prototype was 6 levels and 5 missiles.  My friends and I had a lot of fun playing it, so I always figured I'd get around to it again once things settled down.

Enter Devtober!  My life had just settled down and it seemed like a good time to get into it.

So outlined a lot of things that needed to change with the game.   More importantly, there were several things I had to prove to myself in order  for me to see this game eventually being an actual commercial release.

In no particular order:


The controls were a bit too simplistic.  The turn radius was really small and there was really only 2 buttons, swing and boost.

I'd devised an idea of a "brake" of sorts.  You'd cut engines and while your engines were cut you could turn on a dime.  Then coming out of a brake you have a small window of time where if you hit the boost button, you instantly boost rather than having to hold it down for a half second.

In exchange, of course, I widened the default turn radius a bit.

Sword swinging was a bit too inconsequential.  The time between swings was way too short.  So I widened the base time between swings and made it so that if you killed a missile with a swing, it would result in a shorter swing timer.  Swing and miss, bad.  Swing and hit, good.

I feel like the brake, and the brake/boost sort of turn and burn really add a lot to the gameplay.


For one, NINJECTORY was a score based game with a completely random spawning system.  That's obviously not great, and the original prototype had my friend Darren and I competing to beat eachother's scores and finding that an awful lot of it had to do with luck.  It also made it so that if you were having problems with a level (say because of a new missile) you wouldn't really be able to learn the level because of the completely random spawns.

I needed the game to have a consistent spawning system, but didn't want to go through the effort of writing individual lines of code or alarms for each missile, that's insanity.  So I devised a system to randomly generate the entire wave at once, jamming them into a series of data structures.  Before doing this, the random seed would be set to the name of the room you were in + the wave number.  So now, every level will spawn in a fairly consistent manner!


The original demo only had 5 missiles.  If this is going to be a game of any appreciable length, I needed more.

But really, how many more missiles could there possibly be?  I already had a basic missile, a fast missile, a big slow missile, and an armored missile that takes 2 hits to destroy.  At Darren's suggestion I even came up with little swarms of micro missiles that more or less solely exist to rack up your combo count because its fun.

But say I'm going for 40 levels.  Can't do 40 levels and only 5 missile types, but how different can these missiles really be?

Turns out.  I was pleasantly surprised by this one.  The game now contains a total of 10 'enemy types,' not all missiles, and coming up with them was actually pretty easy once I got rolling.  They all look different, some fly different, some affect the player in certain ways, and they all explode differently.  Affecting the player brings me to the next point.


The core gameplay loop (fly around on a jetpack and chop missiles with a sword) is pretty fun on a basic level, but I needed ways to mix up combat.

So I set about to design some missiles that would directly affect the player and gameplay.  I decided that if Aliens are attacking the Earth with missiles, and some Ninja with a jetpack is flying around foiling their plan, then clearly the Aliens would come up with some way to counter the ninja.

So I came up with a whole series of missiles that are "Anti-Ninja-Countermeasures."  There are EMP Missiles that are harmless to buildings, but if you hit them with your sword they shut your jetpack off for a few seconds.  There is a jammer which obscures your view a bit and shuts off your radar.  There's an "Air-to-Ninja Missile" which targets the player directly, setting off an EMP if it hits (the player can shut off their jetpack at the last second to activate the missile's self-destruct).

All of these, mixed with the missiles I've currently got, really change up gameplay.


In my original playtesting it was fine to just stand over the player's shoulder and say "Hey, you've been locked on by an Air-to-Ninja missile, when it gets close, shut your pack off or it'll EMP you" and that's fine.

I was able to vocally pitch the game's goofy early-90s action movie storyline.

But that's obviously not how games work.  I can't get on Discord voice for every player one at a time.

So first I'll talk about the missile briefing system.  I needed a system to explain how each missile worked, and ideally it wouldn't repeat this briefing if you failed the level because that's obnoxious.

So I came up with a persistent controller object that kept track of what briefings the player has already seen and saved that so you'd only have to see each briefing cutscene once.

I then built a separate room where this briefing would take place.  At the beginning of a level it detects if there's an unseen missile, then sends you to the briefing room with the relevant information.  Brief happens, then you go back to the room you started at.

Pretty basic, pretty easy, but it works.

For the intro cutscene... well, I've never done one before, but I knew I'd need one to really sell the demo.  I already had it story boarded out in my head, but I had to figure out how to turn that into assets, and then turn those assets into a cutscene.

Took a day, but I managed to write out on paper everything that I needed, and got it to a friend (@quickalas) to get started making some pixels.

The cutscene itself is really rather simple.  The view is X wide, and I've got 5 scenes, so the room itself is 5X wide.  The scientists are always typing, the ninjas are always jumping, the missiles are always falling, etc.  The cutscene is just always happening side-by-side.

You get the bit for that screen's worth of cutscene, then there's a wipe-cut, and the camera moves over its width to the next part.

Doing the cutscene this way was much easier than I had anticipated, but the only thing that made it possible was taking that day to mark everything out on paper.


I know a game doesn't "need" boss fights, but it really is sort of expected for this kind of game and I didn't even know if it was really possible given how simple the gameplay is.

Furthermore, I set a sort of design restriction upon myself from the start: At no point should the protagonist directly kill anything, and at no point should the protagonist himself be in danger of dying.

And really, that design decision is sort of for the sake of a joke.  He's a ninja with a sword and a jetpack and flies around exploding things.  I figured if I could pull off that design restriction given the content of the actual gameplay, then I've successfully made the world's most violent non-violent protagonist.

At any rate, at this point I'm still sticking to it.

So.  Could I come up with a Boss Fight or Set Piece that felt unique and interesting and stuck with those rules?

I came up with the idea of the President having  to escape because DC came under attack, and they'd escape aboard a plane.  So I designed a much larger room and a plane object with 6 engines that could serve as targets for the missiles rather than buildings.  The plane could sort of fly around the big room and the player has to zip around trying to destroy incoming missiles to keep the plane in the air.

What a coincidence, this is a great segue into the meat and potatoes of a postmortem:  What went right, what went wrong.


I want to end on a high note, so lets start with what went wrong.


I got the plane in the air.  I've got missiles coming at it.  I've even got a couple dialog boxes coming up here and there, but it isn't what I wanted at all.

I really wanted a high stakes encounter.  More and more missiles coming until finally the plane's flare system comes online and they can deploy flares to blow up a bunch of the missiles.

In practice, the flares were a complete mess, for a number of reasons.

  1. I am not a sound/music guy.  I'm almost exclusively a solo-dev now a days and I just don't have any talent for sound or music.  As a consequence of this, I'm not particularly adept at coding sound either.  So when the flares went off and blew up a bunch of missiles at once, all of those missile explosion sounds play at once and laid over top of one anther it is deafening.
  2. I couldn't get the particles for the flares to look right.  I just couldn't.  I fiddled with them quite a bit, and just couldn't make it work well.
  3. I just couldn't come up with a system that made them feel right.  First I tried just mass exploding a bunch of missiles, then I tried locking the missiles on to the flares themselves and couldn't come up with a good way to do it.

In short.  The Boss Fight is nowhere near where I want it.


I have music.  I have a bunch of cool royalty-free music I downloaded just for this demo!

But as I said above, my code knowledge for all things audio is really lacking.

I tried to devise a system that could set music on room start and crossfade the old track out in favor of the new one.  Just couldn't get it to work in time.

Not only did it not work, it sounded miserable because it would frequently bug out and start playing a bunch of tracks on top of one another.  Just a complete mess.

I've really got to make time for myself to learn this aspect of Game Maker 2.


Personally, I don't really need Devtober to work on a game for a month.  I know I can do that.  I've done it in the past, I can handle that.

But I've had a pretty abusive indie work relationship in the past, and ever since I've been really hesitant to put myself or my work out there.

So for me, a major personal goal I had was to engage with Twitter as a part of Devtober because i"m just miserable at that.  I'm a terrible twitter user.  I'm a lurker and a liker and a retweeter.  I've never been particularly good at using Twitter to promote either myself or the things I'm working on.

The month started out great.  I was making a lot of progress so I had a lot of GIFs to post and it felt great.

Tail end of the month however, sort of petered out.  After I got the intro cutscene done, I was doing a lot of tweaking with minor systems and fussing with that damned boss fight.  I really didn't have a lot to show so I didn't really have a lot to engage Twitter with.

I'd like to call this a win because of the beginning of the month, but ultimately I do feel like I fell short of the mark I set for myself.

I really just sort of hoped I'd have made more posts, gotten more engagement, maybe made more friends.

I dunno.  I tried, I just don't think I really met my goal here.



I feel like I'm off to a good start here, and I really feel it's just a start.  I went into this project thinking "How many different missiles could I really make?" and now I've got twice what I started with, and I'm still dreaming up more.  I really feel like I can nail enough for some solid gameplay variety.


Before the game was sort of point and shoot.  You'd point the direction of the indicator, go that way, hit a missile with a sword then swoop around somewhere else.

The wider default turn radius and brake really add a lot  to the game I feel.

Also I tweaked the script I use to turn you towards the direction you've pointed the analog stick or cursor towards, and it's less likely to freak out and 'take the long way' now.  So that's good too.


Yeah, it probably could be better, there are parts of it that are a little wonky (like the Missile Command screen at the scientist part), but I think it's funny, it gets the feel of the game across, and it was super simple to put together.

The real big win here was planning.  I was able to slap that cutscene together in just a couple of hours because I was meticulous in planning out how it would be executed.  To the point of giving the artist exact pixel heights and widths for each scene.  Really made the whole process buttery smooth.

Prior Planning Prevents Piss Poor Performance.


It's a solid way to inform my players and to inject bits of story into gameplay.

How I went about it is a little silly (side room, seperate persistent object that only tracks what missiles are encountered), but it works great.

If it's stupid, but it works, then it isn't stupid.

Overall, I definitely count this Devtober as a success.  I'm not sure if anyone will really download it or play it, but I accomplished what I set out to do and I've got a demo that I feel is a lot of fun.

Calling it a win.

Thanks for reading,

XOXO <--- hugs and kisses



Ninjectory Demo 17 MB
Oct 30, 2019


Leave a comment

Log in with to leave a comment.