So...what do you think? Holy cow, the last 3 years have been crazy for me. I've been busy raising a family (2 boys - 2 and 4 years old), teaching myself development, getting my business degree, and most importantly (well, as far as this blog is concerned), creating and releasing a brand-spanking new Android game. The journey has definitely had its ups and downs, but I'm so glad I was able to stick to it, because seeing my creation on the Play Store is one of the coolest things I've done with my life. Thank goodness I have an incredibly patient wife and kids, because they haven't gotten nearly as much attention as they've deserved during this process. Anywho, my goal for this blog post is give everyone an idea of what it took to create and release my first game, No Girls Allowed. Disclaimer: I am in no way, shape, or form claiming to be an expert on the subject matter - this is simply my story of turning a fun little idea into a playable game.
Everyone has a Game IdeaLet's be honest - almost everybody has had some sort of video game idea. Some people want to make a 10,000 hour fantasy RPG, while some just want to see how many pipes they can squeeze a bird through before smashing into them (my high is 65). Some of the ideas are great, some are really lame (sorry, but they are), and most are somewhere in between. No matter how amazing these ideas may be, we all know that a good 99% of them will never turn into anything more than sketches we made in our notebooks during math class. Personally, I sketched out enough characters for probably 100 games (or maybe just one huge ridiculous ADHD-riddled game) during my school days. However, like most people, I had no idea how to turn these ideas into actual games. That was then. Luckily, in my later years, I was able to learn how to do exactly that.
Getting Started with DevelopmentSo, a little over 4 years ago I was given an amazing opportunity to learn web development on the job. My brother was a web developer at a small company, while I was working as a helpdesk technician at the Flying J headquarters. He told me that I was in something of a dead-end job (which actually became true as they declared bankruptcy within the next few months) and that I needed to come work with him developing websites. I had taught myself a little front-end web development on the side (incredibly basic stuff, like putting a couple divs on a page or alerting "Hello World!"), but that was the extent of my experience. If I were to take him up on it, I knew that I would be really, really green. I hesitantly agreed to go to an interview, thinking that there was no way I'd be getting the job. Lucky for me, his boss liked my helpdesk experience and didn't mind me learning on the fly, so he offered me a hybrid position where I'd be doing customer service for half the day, and take care of some smaller development tasks for the other half. Eventually, I became more comfortable and competent with the development, and started to take on bigger projects. This was a GREAT experience, as I finally felt like I was getting good at a really marketable skill; however, I still really wanted to make a game.
Choosing an IdeaAfter working as a developer for about a year, and tossing around a few game ideas with friends and coworkers, I decided it was time to take it seriously. As I mentioned above, I had too many ideas to count, so if I was hoping for any type of production I'd need to just choose one and run with it. There were a few things I was looking for in my first game:
- It had to be relatively simple (in concept and execution).
- It had to be something different and interesting.
- It had to be mobile and cross-platform friendly (this was 2010-2011, when iOS games were going nuts and Android was just starting to take over).
Next, I needed to figure out how to make these look better, and how to make them interactive.
Picking a Game EngineBelieve it or not, choosing a game engine turned out to be by far the biggest headache of this whole process. I'm sure this was mainly due to the fact that I was brand new to this type of undertaking. I had a buddy who had also done some development that wanted to help me make the game, but he didn't have any experience in games either. So, I consulted Mr. Google. I was specifically searching for cross-platform game engines, and at that point, most people were recommending using Flash, so that's what we went with. We discovered that there are dozens of similar Flash game engines, and after some research, we landed on FlashPunk, using the FlashDevelop IDE.
At first, our roles were really well defined. I was the designer and project manager, and he was the developer. For my part, I got to work transforming my crappy MS Paint mock-ups into animated characters using Adobe Flash and a nifty free tool called SWFSheet (to convert .swf files to sprite sheets). I got pretty proficient at it, and at my peak, I was able to knock out about 2-3 new kids per week. My counterpart was doing a good job too, finishing up one or two big tasks per week. After just a few months, we had a solid working proof of concept. We had girls spawning and coming across the level, and the boys going out to meed them when we clicked the button, and the kids were able to fire their weapons from the fort. Things were looking great. However, we had overlooked one big thing. All of our testing was being done on my computer, and we hadn't even looked at it on a mobile phone yet. Once we got it up and running on my Motorola Atrix, we realized that unless we were able to optimize the crap out of it and make it about 4 times faster, there was no way we could release it into any mobile market.
The thing seriously ran slower than molasses. In a game that was supposed to drop you right into the action, it took the enemies a good 2-3 minutes just to make it across the path to the fort. To put it into perspective, now they get to your fort in about 20-30 seconds. This was obviously unacceptable. We spent a couple of weeks trying to improve the performance, but it was all in vain. We knew that we had to scrap the whole thing and look elsewhere.
One thought we had was hey, we're gonna be doing 3d games eventually, so why not choose an engine that supports it?. However, now it was some time in 2012, and the two most popular 3d game engines were the Unreal Engine, which didn't export directly to Android at the time (I think that was the reason, at least - it's been a couple years), and Unity3d, which was hundreds of dollars even for the basic versions of the mobile add-ons. Eventually, we decided it would probably be best to stick with a free 2d engine, and the most attractive one we found was Cocos2dx. Neither of us had done any C++ programming, which is what Cocos2dx uses, so we were fighting an uphill battle. The task fell upon me to hack my way into getting the game going, while my friend wanted to ramp up his C++ skills, taking the time to do some tutorials to get the basics down.
Don't use this as an excuse to skip out on college, but I honestly hated every second and every wasted brain cell that went into finishing that last semester. Whenever I opened a text book, all I could think about was why am I screwing around with this when I could be working on No Girls Allowed? Still, I dug deep, swallowed my pride, and suffered through the next three months, eventually getting my Bachelors Degree in business administration - if you don't believe me, here's the proof!
The ReleaseFast-forward about 3 weeks, and No Girls Allowed was ready for beta testing. I've come to find out that Android's built-in beta program is nothing short of friggin' awesome. With the help of a bunch of friends and a few strangers, I was able to squash a bunch of bugs I previously had no idea about, as well as get valuable feedback on things such as the leveling-up system, difficulty, etc. A couple months later, I had a game that I felt was ready for production. I also felt a little pressure (good pressure) when a certain awesome Google+ page (+Google TV Friends) went ahead and shared my beta version with their 96k+ members. That was pretty intense, as I knew that their members wouldn't be able to find it in the Play Store yet. Luckily, as I mentioned earlier, I felt like that version was ready for release, so I felt good about going live and riding that wave of free marketing they just offered me. I went ahead and clicked the "Promote to Production" button and went on to tell everyone I knew about it. Yay, I have a game in the Play Store!
Life after ReleaseWell, now it's been 12 days since I clicked that button. Unfortunately, I'm not a world-famous indie game developer or millionaire yet (not quite). As of right now, I'm sitting at just 120 downloads, which is far from spectacular. As far as money goes, I've basically made none. I've made a little over $6 in ad revenue and the only people to make an in-app purchase have been coworkers who both wanted to be the first to say they supported me. I'm not worried about it though, because most people that play No Girls Allowed seem to enjoy it (correct me if I'm wrong), so I assume my biggest problem is not knowing how to market it. I've submitted it to a bunch of sites for review, but most of them either haven't gotten back to me, or are asking for a whole bunch of money just to download and play it. I'll probably have to bite the bullet and pay for it, but I haven't narrowed my list down to decide which sites I'd most want to give my money to for a review. As an independent developer, it's not like my pockets are all that deep. If I do figure out this whole marketing thing, I'll definitely be letting people know some tricks right here on this site. For now, I'll just chalk this up to the woes of being a new indie developer.
The TakeawaySo, in an attempt to condense this sucker into a small snippet of advice, I'll leave you all with these pointers - take them for what they're worth:
- If you really want to make a game - get started. Don't make excuses.
- Start with one of your simpler ideas.
- Be original (NO MORE FLAPPY BIRD/BEJEWELED/CANDY CRUSH CLONES!!!).
- Use a game engine that fits your experience.
- Set small, attainable goals.
- Don't get discouraged or overwhelmed. If you do, take a little break.
- If I can do it, anybody can.