Tue 3 March 2015 23:16
To many aspiring developers, game development is a glamorous, unreachable utopia strewn with an unfathomable level of complexity. Only in recent years has this promised land become reachable, and with today's Unreal Engine 4 and Unity 5 announcements coming straight out of the Game Developer's Conference in San Franciso, it has become easier than ever before to get into indie game development.
Since childhood I dreamed of being able to make pixels move about on a screen (not that I knew what a pixel was back then), but even the thought of the complex maths involved in doing so sent a shudder down my spine. Even when I fell into a web development job at the age of 14, I never thought I would be able to achieve the god-like status of "games programmer"; I spent years being told by family that writing code for games would be a waste of time - video games were for kids, and that there was no money in it. My gamer friends told me that it was unrewarding, that the games industry was full of horrible people, and in order to get anywhere I would need to work every hour god sends, and brow-nose my way into any kind of enjoyable job or position. I didn't once meet someone who had anything positive to say about being a games programmer, so I buried the idea and focussed on web development.
Today I find myself in an interesting position; I have spent the good part of two decades working in the software industry, and am now proficient enough at what I do that I can pick and choose how and when I write software for my customers. This isn't intended to indicate that I "know it all"; only a fool thinks that they know everything - and I truly believe that you should learn something new every day to better yourself as a person, no matter how small the learning is. My success as a software developer has pathed the way for me to chase my dream of being a game developer - a dream that I only started to realise when I started working on Subnet a few years ago.
Whilst my working life has taught me a lot, it could not prepare me for the world of indie games development. I have jammed two decades of lost time into the last two years, mostly by spending many days and most nights hacking away in my office, trying to make objects on my PC's screen jump to life in an unfathomable number of different ways. Thankfully my wife has been very supportive of my almost obsessive interest in the art of creating video games, and to her I am infinitely thankful. She's my favourite, and I couldn't have asked for a better partner and friend at this time in my life.
I have fully immersed myself in the games industry over the last few years (blogging, conventions, streaming, twitter, meet ups etc), and one thing that I've learned is that many experienced game developers take their years of experience for granted. I - like many other indie developers - have had to fill my brain with an unreasonable amount of new information; completely new programming concepts, crazy maths, learning the differences between game engines and the hundreds of different systems involved (particles, audio, 3D modelling, texturing, sprites, shaders, materials, navigation, AI, Occlusion Culling, LOD, Lighting, UI design, animation etc). This doesn't include all the business and design oriented stuff such as project management, team leadership, recruitment, level design, story / script writing, character design etc. The list literally is endless, it seems that every week I have to pick up a brand new technology or concept. There is a lot to learn if you have never developed a game before, and no amount of positive thinking is going to change that. In addition, if you decide that you want to get a team together, you have a whole host of other challenges ahead of you too.
My first mistake was to go straight for the game dev jugular; a full-on, huge, high-fidelity 3D game - a mistake that many "beginning game development" articles warn against. That isn't to say that a 2D game would have been that much easier, but 3D does complicate things somewhat - and the sheer scope of what I've put before me and my team has been a slow realisation. The reason for this is probably due to the fact that I've been so busy building the game that I haven't had time to take a step back and look at the bigger picture. AAA studios aren't only more experienced and have much more staff, they also have the resources to manage a project and market their games - which is something a small indie studio just doesn't have the luxury of, even if they have lots of money to throw around.
My second mistake is that I am a relentless optimist; in my world, there is an answer for everything, and anything can be achieved - all it takes is dedication and time. However, there comes a point in a game's development when it's no longer just about yourself, your own attitude and your beliefs. You have to take into consideration your team, and the gamers you're planning to sell your game to. Time is your enemy both internally and externally; it is easy to become complacent or dig too far into the detail if you don't set any personal or team deadlines; and publicly announcing a game too early results in gamers becoming impatient, and the interest drops off regardless of how intriguing your concept is.
I am very lucky in that I have had very little negative criticism of Subnet so far - yet I have been quite open about the game's development from the very start. At the end of the day we are unknown - we're but a drop in the ocean of indie developers out there, and I haven't put enough effort in to the marketing and PR side of things to be considered even a serious game developer yet, let alone one that will be able to realise their aspirations. Until we can produce something that can get gamers or the games industry salivating, we're insignificant. This is a good thing; even if the 1,000 or so people that follow me on Twitter get sick of how long the development is taking, it's only a 1,000 people that I'm disappointing; those people that don't know about the game will see it fresh for the first time when they do discover it!
I hope this blog post doesn't give anyone the impression that I regret any decisions I've made whilst developing Subnet. In fact, I would say quite the opposite; I have loved every minute of it, including learning from the bad decisions I've made - I've thrived on the challenges, and learned more than I could ever have hoped for about game development. I've also met quite a few awesome people along the way and had a lot of fun. This project is only the start of my game development journey, and we've got a long way to go yet until I move on to another one!
Lastly, some advice to any new game developers reading this; chase your dreams, power through the tough times, but try to keep it simple. I have cut so much stuff from Subnet over the years it doesn't even remotely resemble the original idea I had. I haven't seen "success" yet, but in my eyes I've already won first place - game development is the single most rewarding hobby I've had in my life, and believe me, I've had a lot of them.
To end on a positive note - expect a full devlog update soon! We've made quite a lot of progress in the recent months, so I've got quite a lot to show you all, but I have a few things to polish up before I do.