Week 2 – Flappy Infinite Jetpack Bird

(Due to variable window/screen sizes, gauge on the left may be cut off, sorry. Also, this one’s a bit more resource-intensive than the first. There will probably be a short delay after firing the cannon. Also a quirk of being in the web player, things will get a bit funky if you resize the window.)

So as you can see above, I completed my second week of Game a Week! The development of this one was completely different form the first week, so I’ll go over that in a moment, but first I’ll break down the basic gameplay:

  • Aim the cannon with the two arrow buttons
  • Start the firing sequence by clicking the Fire button once, this’ll make the power gauge on the left bounce up and down – the fuller it is, the more force will be used in the ensuing blast
  • Click the Fire button a second time to fire the bird out of the cannon
  • Once she’s out, just click anywhere on screen to use the jetpack. The fuel gauge on the bottom of the screen will show you how much is left in the tank. Once the jetpack runs out of fuel, it’ll fly off
  • Get extra fuel by flying through green rings
  • Get a speed boost by flying through orange rings
  • Get some extra points by flying through yellow rings
  • Try to fly as far as possible!

Development Timeline

I approached this week from a completely different angle. Whereas in the first week I’d been stewing on the idea of doing Game a Week for a while and had come up with my first game’s concept well ahead of time, I came into my second week flushed with the first week’s success but completely clueless about what to do next. I had some other commitments this week, and knew I’d have less time to donate to the project, so wanted something smaller. I didn’t start coding properly til Wednesday, and the only concept I had at that point was “I will fire a bird out of a cannon.”

My initial thoughts were I would have some mix of Flappy Bird and the Super Monkey Ball minigame, Monkey Target, which is essentially where you glide a short distance and then try to land on a small target below with the most accuracy. But as I developed the game and got acquainted with manipulating rigid bodies via physics the character became much floatier than I’d initially anticipated – but I thought it had potential, and put a jetpack on her instead.

On Friday night it dawned on me (having spent much time drawing the character and backgrounds in the vain hope that the game would magically tie itself together) that I had a pretty solid recipe for an inifite runner. So I spent the entire weekend reworking the entire game to fit its new genre. Before this I’d been very lazy with the environment, just arranging objects manually in the editor; I now needed to program every object to appear dynamically in front of the player and recycle itself once it was out of the field of view. Forutnately, this was a perfect use of the Object Pooler I implemented for bullets in my previous game. You can see this in action by watching the Scene view in the editor while the game runs.

Because of my initial lack of direction and other distractions, I did not get to implement sound as I had originally wanted to. However, I did become much more confident with using physics in Unity and the code for the dynamic level generation is entirely my own, so I feel I still gained a lot.

Game Design

As mentioned above, the creation of the actual game was a Frankenstein’s monster of a process this week. I think the game in the end is completely sufficient, not terrible but not amazing either.

I already had the cannon implemented when I pivoted to an infinite runner, but if all I’m doing is scoring on distance, what was the point in offering this choice of angle and power at the start? Surely the winning tactic would always be to choose some angle less than 45 degrees and then just fire with as much power as possible. In order to justify the cannon and add a bit of strategy and variety to the game, I set up the ring generation so that I could have multiple “tracks” of rings; there ended up being six in total. The ones at lower altitudes are fairly standard, mostly score rings with enough fuel rings to get you by if you’re moving above a moderate pace and some boost rings interspersed amongst them. As the altitude gets higher, though, the frequency of special rings increases and the gaps between rings fluctuates. If the player manages to reach the top track, either via a good start or by moving up at opportune moments while in-motion, they are rewarded with a relatively easy, high speed track that is simply one fuel ring to every three boost rings.

Though discovering these different tracks might be fun, after a couple of minutes the gameplay becomes repetitive and tedious; essentially the game is too easy. This is a side-effect of me simply not having enough time to test the game during development. The game came together quite quickly over the weekend, so I didn’t have enough time to sit back and play or let anyone else test it either.

I think in order for the game to be more fun it would just need more variety and a bit more challenge. Taking Flappy Bird as an example, the sole reason it’s so addictive is because it’s so fiendishly difficult and each run is usually completed very quickly. Play sessions are often cut short by just one small mistake. These short bursts of play make having “just one more go” an ever-tempting option as the player always feels as if she can do better this time. My game, however, accidentally hit the opposite end of the spectrum: it’s too easy, and then once you do fail you think “eh, good enough” and close the tab.

Ideally, the game would be set up to have a real incentive to choose a high track; these tracks would have a high-risk, high-reward layout, such as having lots of boosts but few fuel rings, or rings in clumps but otherwise spaced far apart. The main missing ingredient is just testing the game out with players, though. That’s the one guaranteed way to figure out what is working and what is not.

So I don’t think it’ll be winning any awards for game design any time soon. But, for a development time of one week, I think it’s alright.

Visual Design

In terms of visuals, all the “art” in the game is my own. I’m particularly proud of the bird, mostly for her unimpressed expression.

Geraldine? Trudy? I'm open to suggestions.

Her excessive roundness was initially just a means to make her bounce on landing and roll to a satisfying stop, but later became a great excuse to attach a jetpack to her back as well. I don’t think anyone’s going to be losing sleep over any in-universe inconsistencies concerning a bird with a jetpack though so I won’t attempt to justify it any further.

It’s all pixel art, and there’s a simple reason for this: even I can throw it together myself and it doesn’t look completely awful. As for the overall aesthetic, I am slightly sad that I didn’t have time to find a better font but being rushed is all a part of the Game a Week challenge.

Anyway, I think I’ve covered all the details of this week’s entry. Once again, I had a lot of spare time to dedicate to it, and once again I’ll have a little less of that next week, so I don’t have any set objectives other than coming up with more compelling core gameplay now that I’ve got into the swing of actually completing a thing within a week.

So I’d better get started on that.

Gallery