Factory Flip Retrospective

I. Why Flappy Bird?

It was May 20, 2020. I had just finished learning programming and computer science at SUNY Farmingdale, earning a Business And Technology Certification in the process. I was looking for work, but knew my portfolio was lacking. Even worse the COVID-19 pandemic was in full swing.

In the midst of those feverish days (with uncertainty, not COVID) I fell back in with my 2013 crush Flappy Bird. After some time I realized: Flappy Bird is the perfect mobile game.

Here’s why…

  • Want to play? Just tap. It doesn’t get easier than that.
  • It’s easy to learn, hard to master. People will play over and over again just to try and improve.
  • It’s slow pace makes it adaptable to most people and situations. This is critical for a mobile game.

That’s not to say it’s the best mobile game ever. Just off the top of my head Fruit Ninja, Tiny Wings, and Doodle Jump are also fantastic.

But with this I had some direction. I decided I would make Flappy Bird.

But I wasn’t content JUST to copy an existing game. I felt I needed to punish push myself. So with that in mind…

Project Goals:

  • Learn Unreal Engine 4. I had just learned Unity in college, and I wanted to expand my skill set.
  • Don’t copy Flappy Bird. Figure out why it worked, and iterate on those core concepts.
  • Just taps. Don’t change the controls.

II. Making A Prototype

My first challenge was figuring out how I’d iterate on Flappy Bird. After a lot of thinking I settled on flipping the basic challenge on its head: In Flappy Bird you are constantly fighting against gravity.

What if, instead, the player controlled the gravity?

Well now that IS different! How would I go about that?

The answer I came up with was to use magnets. One on the ceiling, one on the floor. The player would tap the screen (or spacebar for development purposes) to switch their polarity. This would send them flying up towards the ceiling, or crashing down towards the floor.

I tried a couple of different methods, but ultimately I decided to switch the gravity from a positive to a negative. This was my favorite solution because it clean, simple, and, best of all, kept the player character’s momentum adding an extra level of skill.

Finally I had a basic game, but there was a problem…

III. My Game Sucks

The problem wasn’t the gray blocks.

The problem wasn’t the basic mechanics.

The problem was that it was too easy.

In Flappy Bird you are ALWAYS doing something. Right from the beginning. If you don’t start tapping, you are going to die. Playing Flappy Bird takes significant skill and concentration. Factory Flip (prototype version) took no skill, and was boring as a result.

I decided I needed to iterate once again!

Instead of making a slow paced game, I would make it more frenetic. I wanted the player to just barely survive, and to punctuate these intense moments with the occasional moment to let the player catch their breath. Kind of like doing shuttle sprints.

I did this by changing how the obstacles spawned. Before obstacles were perfectly spaced out from one another, the group’s speed being determined ahead of time. Now I made the obstacles overlap, which looks messier, but resulted in the game feel that I wanted. The different obstacle speeds mean the player is always doing something. In this case the player is looking ahead predicting when and how they’ll dodge the variety of obstacles.

Obstacles also came in pairs with enough space between them wide enough for the player to get through. I separated the top and bottom obstacles, and set max heights for them so the player would still always have room to maneuver. It’s just now the top and bottom parts of the screen gave different tactical choices, which made the game more interesting.

IV. The Home Stretch!

At this point the game was pretty close to done from a mechanics perspective. I wanted this to stand out so I put out an ad on Reddit for an artist. It was a while before I heard back from anyone, but I eventually did. Her name is Bailey Hart, and she specialized in making things in Blender. Unfortunately she has since deleted her Twitter so I don’t have a way of referencing her work, but she was quick, responsive, and did a great job.

While I waited for the art I…

  • Drew and implemented the UI.
  • Found free sound effects to use (everyone notices when the spinning light is coming because it has an especially loud railroad crossing sound effect).
  • Made the high score persistent.
  • Experimented with shaders and materials. This would eventually result in a border around the ceiling and floor magnets to add some character. It’s my attempt at a simple outline effect similar to that in Left 4 Dead.

Finally I added a shield. I thought this was a nice addition because it adds a bit of dynamic difficulty to the game. I’ve liked dynamically adjustable difficulty ever since playing God Hand. The shield is tempting because obviously it gives you an extra hit, but you need to go out of your way to get it putting you at more risk.

The shield uses a dither effect material that makes it a bit transparent, and doesn’t impact performance.

V. I Like Tetris

I will sheepishly admit I really like playing Tetris. I can, and have, spent hours grinding away for new high scores. The game is so simple, so easy to understand, yet also quite deep and expressive. It’s absolutely my favorite game.

I mention this because at some point I realized half an hour had passed when I was play testing my game, which is the same flow state I get into when playing Tetris. That’s when I knew I had made something I could be proud of at the very least.

It’s hardly perfect.

  • It’s awkward to restart. Everyone thinks there should be able to press R to restart (I agree).
  • If you don’t like reaction based games then this can be incredibly off putting. My friends who liked Super Smash Bros and CSGO enjoyed it, and kept playing it to beat each other’s scores. My friends who weren’t so into that bounced off immediately. That’s fine.
  • The shader effect on the ceiling and floor is pretty hard to notice since it’s not dynamic. It was good practice, but I could have spent that time elsewhere more efficiently.
  • I like how it plays, but it looks really amateurish because of how I did the obstacles. I like challenge the obstacles present, but it looks messy to the point it looks like it’s in bad taste. Which is a shame because I put a lot of thought into that decision. I had fun, but I think I should have experimented more.
  • I personally think the game is fair, but there are definitely times were you can feel cheated by just how demanding the game is.

I also did not market it effectively. I showed it to my friends and my work group at the time, and didn’t do any advertising from there. I think I should have made my game dev journey a YouTube series. I also should have branched out to look for more people to play it. Even if it never made any money I would have loved more feedback.

My biggest regret is that I couldn’t figure out how put it on mobile. I thought I could put it on iPhone, but it took a lot of effort. It would have been easier to use Android, but I don’t have an Android so I didn’t really have a way of testing it. I decided this was good enough, but still I would have liked to have seen it on its intended platform.

Final Version

That’s Factory Flip, and I’m pretty proud of it. See how far you can get by downloading it here!

Feel free to check out my other works. While I was doing this I was working with an indie team to try and make Sekishu No Koe. I did writing for the monthly newsletter, some Twitter management, and most importantly programmed the core gameplay loop. You can check the programming retrospective out here, and the newsletters here.