Gravity Bot Postmortem

December 12th, 2011
by Brian


In the spring of 2011, I had an idea for a puzzle game involving a robot and gravity. Gravity Bot is not that game. Instead, Gravity Bot is the side-scroller, platform game that the puzzle game evolved into. After running into too many roadblocks while creating a 'proof of concept' for the puzzle game, I decided to either scrap it, or tweak it. I thought the gravity mechanics of the idea would translate well into a platform game. I was right... and wrong.

Gravity Bot screenshot

What went right?

Learned more about object-oriented programming in AS3 - I hadn't done much work with Actionscript 3 until I ran across the 'Building Games with Flixel' videos on Lee Brimelow's site The video series (all two of them - not that I am complaining!) introduced me to a little bit more AS3 (as well as a new game-making library called Flixel - but more on that below). Before working on Gravity Bot, I had never done much work with object oriented programming (OOP). I had read some books and messed around a bit, but nothing with purpose. Creating Gravity Bot allowed me to work more in depth with OOP in AS3 and to start to get a better understanding of the concepts.

Introducing Flixel - Well, not to the world, but to me. I am sure that many people have played Canabalt, a great free-running style game built using Flixel and created by Flixel's creator, Adam 'Atomic' Saltsman. Flixel is great because it providers helper functions for troublesome areas, like collision detection, and allows you to get a game up and running quickly. Even if you were thinking about building your game from scratch, I could see building a prototype of the game in Flixel. Using Flixel didn't solve every issue (side note: Flixel's collision detection was actually one of the roadblocks I ran into during my proof of concept stage of the puzzle game), but it helped enough and I am looking forward to using it on the next game project.

Gravity Bot code

Took a game project from start to finish - I have taken very few non-work-related projects to completion and had never worked on a game before. Working on Gravity Bot was great because I was in charge of every aspect. The gameplay, my problem. If it didn't get completed, again, my problem. If it was wildly successful and allowed me to buy a farm of genetically engineered, miniature dinosaurs, my (awesome) problem. Everything that went into it, every direction that it took, it was up to me. And I'd like to take this opportunity to thank Chris, who helped out... I guess I didn't do it *all* myself!

Earned $0.63 - One of the things that we wanted to try with Gravity Bot was to get it up on a hub for web games and see if it could generate any passive income (as passive as months of work can be). We decided to try out Kongregate since it seems to be the largest presence in the web game market. I could have simply uploaded it to Kongregate and started getting 25% ad revenue, with an additional 15% for only hosting it on Kongregate, but we wanted to max out the earning power by integrating with the Kongregate API. This integration allowed for high score tracking, badge/achievment creation, etc. One hour of additional work earned us an additional 10% of the revenue, bringing our grand total up to 50% of the ad revenue. Amazing! The best part of the story is that after a couple months on Kongregate, we have earned a whopping $0.63. Yeah, only sixty three cents. But, that is without any sort of marketing at all. This postmortem is the first time Gravity Bot has even been mentioned on this site. But I will say, it was great to see other people playing the game I created. The first couple of days were fun. Lots of people playing, a few people even commenting - and positive feedback as well! But after a few days, the traffic slowed, then pretty much stopped. So now I guess I will have to start thinking about marketing it if I want that dinosaur farm.

What went wrong?

Was too ambitious - The biggest problem I had in the creation of Gravity Bot was that I tried to do too much. Instead of trying to create a small, 'proof of concept' game based on the idea I originally had, I wanted to create something bigger. I wanted to create too many levels. I wanted to create too many assets. And on top of it all, I wanted to do it all with clay. No matter what artistic medium I chose, the truth is, I am not the best artist. It just isn't my strength. I am decently creative and have some good ideas, but getting those implemented is always a challenge. By choosing to work in clay,something I have messed around with since high school, I at least knew I could make something fairly decent and unique. At first things went great. I created the main robot character and that turned out well. But as list of required assets grew, it became more of a burden. I was able to create a few enemies and items out of clay, but then resorted to digital assets for the remaining items so that I could get the game completed. After a few failed tests attempting to build the wall and floor tiles out of clay, I was mentally defeated.

Gravity Bot clay assets

Did it (mostly) alone - This goes hand in hand with the topic above. Working on a game by yourself is very liberating... at first. Then after a while it becomes a grind. I was feeling the weight of the project on my shoulders and failing to inspire myself creatively (if that is even possible). When you work on projects with others, it is great to see what they bring to the table. You can grab inspiration from someone else's contribution, or energy. Working alone, you lose out on that and are forced to drag yourself along until the project is completed... if you make it that far, and I had my doubts on multiple occasions. The next game I am definitely going to drag Chris into the mix more.

Didn't make great use of the gravity features in the level design - Creating a good level for a platform game with consistant gravity is difficult. Creating a good level where the gravity can go in any of four directions... where the player does not experience falling damage (unless they fall off the screen)... that has proven to be extremely challenging. I would create a level that I felt was challenging, and then I would have Chris play-test it. He would use another method to complete the level that removed the challenge from it completely. In order to make levels more challenging, I felt like I was cluttering them up with obstacles that made the gameplay either slow to a crawl, or become exceedingly difficult. So, the levels that are ended up in the game feel more like a group of levels being sent to early play-testing, rather than finished levels.

Gravity Bot level

Stuck using older version of Flixel - This isn't a huge issue, but when I started development on Gravity Bot, I was using Flixel v2.35. Summer rolled around and Flixel v2.5 was released, which was a rewrite of the Flixel code - meaning it was not usable for me unless I rewrote most of my game. This wouldn't have been a huge issue, but I was really excited about making use of the pixel-perfect collision detection in Photon Storm's Flixel Power Tools plugin (which required Flixel v2.5). I have been able to play with the Power Tools plugin on a new idea and it works great, it is just too bad I couldn't easily include that in Gravity Bot.

Was it worth it?

Absolutely. All in all, creating Gravity Bot was a great experience and the pros greatly outweigh the cons. I am happy to have my first game under my belt so that I can move on to building better ones.

Click here to try Gravity Bot out yourself.

Additional info (i.e. shout outs):

Posted in as3, company update, flixel, game, general development, kongregate