Developing a Game Over 9 Years

It began with a flight that was delayed for over five hours in the Boston airport after the 2010 US Nationals. At the time, I only really knew C++ and basic terminal interaction. I cannot recall where the idea came from besides manipulating array elements. There was a 1 by 3 row of “bits”, and the player would select a bit and it would be increments by 1, the bits adjacent to it would be incremented by 2. The goal was to get all the array elements to equal a certain number. It was oddly fun and the game as a concept would be embedded in my head for the next 9 years, I called it BitFlipper.

At the time, my programming skills were not sufficient to bring the idea beyond the terminal. After writing the first version of FiveTimer in 2011 I took a crack at using the Cinder framework to bring the game to iOS. I didn’t get far, not knowing enough about graphics programming and not knowing where to learn more.

I knew some web development though, a paradigm where you don’t need to worry about how to draw things to the monitor, just create some <div>’s and style them with CSS and use JavaScript for interaction. With that in mind I made a basic prototype of the game I had imagined a few years prior. I even added a replay feature for the puzzles that would take a particularly long time to solve.

Fast forward to 2015, I was pursuing web development more and everyone was going wild over ES6 (later formalized as ECMAScript15). The changes to the language (mostly syntactic sugar in retrospect) made JavaScript more versatile and easy to understand. I rewrote the proof of concept using ES6 and even got the chance to present it at the Albuquerque Game Developers Guild (AGDG) where it was received warmly.

That same year the first version of Apple’s Swift language was released and I immediately recognized some syntactic similarities with ES6. It therefore wasn’t a difficult task to carry over the existing code into Swift and make it a new fully native game on iOS. I knew a bit more about graphics drawing now, to draw components on the screen I took advantage of the fairly new SpriteKit. Later that year, the Apple Watch was also announced and BitFlipper seemed like a perfect game to play on your wrist. At this point I had spent my innovation tokens, that is, using a lot of unproven technologies and in this case also on some unproven platforms. After some modest development of the game I discovered a memory leak involving the physics engine of SpriteKit (even though the physics engine wasn’t being used). Development was put on hold indefinitely because the leak would hard crash the game.

This period was discouraging not just because of the uncertainty if the bug would ever be fixed but also because I discovered that some of BitFlipper’s game mechanics were similar to LightsOut. In time I came to realize that despite the similarities, my game improved on the similar mechanics with more light states, game modes, and versatility.

Two years later, it’s 2018 now, after a few years of updating the Swift syntax to the latest versions the bug was suddenly no longer there. There was still a modest list of things left to do: create puzzle levels, add some sounds, and figure out a monetization scheme. There’s a saying that the last 20% of a project takes 80% of the time, this feels like a prime example. Working intermittently on the BitFlipper in 2018 and fully in the summer of 2019 it was finally completed and released on the AppStore in August 2019, almost exactly 9 years from the initial version I wrote in the Boston airport.

And so, I’m happy to finally write that you can download and play BitFlipper on the iPhone, iPad and Apple Watch. I hope you like it.

Leave a Reply

Your email address will not be published. Required fields are marked *