Thursday, November 10, 2016

Retaliated

Retaliator's Main Menu
Well, I guess I should make a post about the latest news. I have severely neglected this blog due to work and other commitments, but as this most closely relates to what this blog was originally for, it is perhaps necessary. As some may know, I left my most recent job for a variety of reasons. Probably the biggest reason was the massive difference in work culture from my previous job at QUT, and how some aspects of it (e.g. staff constantly complaining about students) go completely against my own morals and ethics. There are other reasons too, but that is a story for another day...

Hilariously, I acquired a position (starting next year) at QUT within weeks of leaving my job, which was great! However, I needed something to do in the interim, lest I go insane from boredom. So, I decided to finish my game. On a completely shoestring budget of around $1000 and a full-time development cycle of about 3.5 months, I present to you my solo game project, and first real standalone portfolio piece: Retaliator. It is currently on Steam Greenlight.


I guess you could say I am slightly proud of it. It has been a project I have wanted to complete for years, but just never found the time or inspiration to do so. The reason being, there is a lot of work that goes in to finishing a game, even one with as small goals and deadlines as Retaliator. Retaliator is a top down SHMUP (Shoot Em Up) inspired by the classics of an era where game mechanics and explosions were more important than storylines. Having said that, there is one where you are retaliating against alien invaders who are destroying Earth, venturing across the galaxy to make waste to their home world. Working on it over the past few months has been an interesting experience.

Mission 2 - The Dark Side
Part of this experience has been diving into world crafting. As I am not a 3D modeller, texture artist or animator, simplifying the game's potential environmental design has been challenging. Additionally, as I am the sole developer of the game, I have had to rely on various free and paid for assets to get the job done, some of which don't always match the vision I had intended. Having these elements out of your control makes you study and research other people's work with inane levels of scrutiny. Spending your money on assets that do not fit the theme of your game is something to be avoided, particularly if said assets are unlikely to be replaced in the near future. Additionally, the challenges of integrating said content smoothly has been enlightening, often requiring you to reconfigure meshes, swap polygon normals, realign UV maps or just find something better. It is time consuming work, and I now have an even greater respect and appreciation for game artists and the work that they do.

The Zeus under attack
Early township environment
Alien homeworld shipyard
Another time consuming endeavor has been finding the right tune for my game. I originally had my pre-alpha version loaded up with samples from Homeworld and a remixed Nine Inch Nails track. This was ok for testing purposes, but for the final release I needed to find something both free/cheap and akin. This took a long time. There is a plethora of fantastic compositional work out there by artists all around the world, and I spent days lost in various genres, searching for that magical balance of ambience and action. I also learned about the various models of audio copyright, and how royalty free means very different things to different audio hosts. Eventually I stumbled upon the excellent samples hosted at MachinimaSound.com. It suited my purposes perfectly, and was royalty free in the truest sense (i.e. just provide attribution).


Getting people to playtest my game was also an interesting experience. While the two major pre-alpha playtest periods certainly inspired me to develop my game ever further, the level of playtesting provided by folks varied significantly. Some playtesters I barely knew provided extremely deep levels of analysis, providing their thoughts on mechanics, balance tweaks and aesthetic changes that I never would have considered. This surprised me and was very useful in the long run. On the other hand, other people I had known for years provided extremely surface level comments, not even bothering to submit them in the requested format. This disappointed me somewhat, particularly as they knew my passion for game development and my expectation for theirs to be just as high based on their study/occupation. I think playtesting really just boils down to the playtester. If it is not something they take seriously then I should not be expecting serious playtesting. I won't make this mistake in the future.

Special thanks to playtesters so far!
I have also realised that I probably have OCD. There are things, small things, that I will tweak and tweak until they are as close to perfect as I can fathom. Amusingly, some of these are unrelated to code. Visual/particle effects I will happily spend hours on, as well as adjusting sound effects until that echo/reverb/pitch is just right. The balancing of weapons and enemies is something I probably spent far too much time on, to the point where I unconsciously know how good or bad something is, have a bias for it, and don't realise how broken other aspects of it are. I have learned and have witnessed first hand that the creators of the game are often the worst testers and tweakers of the content as they are burdened by scope. Sometimes a simplistic, ignorant view of the world is more useful.

Tweaking this scene induced epileptic symptoms :(
Finally, the endless scripting. It is what I do after all, but somehow I value it the least these days, despite it being 70% of the game. I have had my head in code for nearly 3 months. I have no idea how many lines of code I have written. Probably over 10000. Everything is just a blur of loops, conditionals and vector math at the moment. While I had most of the core mechanics completed the year before (3 week's work), much of it required re-tuning and rewriting. Overall, it is probably not the best code I have written, and I am sure I could have saved a few lines in several places. However, it is not important. It is a fallacy of the programmer to think that their code needs to be completely perfect and efficient, and how this will automatically translate into amazing game play. I have seen this mistake in my own work and in the work of students, and it is illogical. You could spend all your time designing a funky algorithm or a system of complex co-routines to handle your state switching and then watch it all fall apart as unexpected complications arise. Never over-design something that should be simple. Use what you are comfortable with, especially when it makes sense to. Code is invisible for the most part, and as long as your game's frame rate does not tank because of your code, then your solution is appropriate. Mostly.

See? Lightning bolts!
It has been a lot of fun working on Retaliator and it is still a project I will revisit in the future. However, for the moment, it is a project I will be taking a break from. While I would like the game to become popular enough for it to be sold (providing additional polish), it was honestly never the goal of the project. I finally have a portfolio piece, a game I can point in the vague direction of Steam and say "that" and "this is what I can do" without being embarrassed. It is a good feeling, and a life goal that I would never have accomplished if certain circumstances persisted. Leaving my work to sort it all out might just be the most sensible thing I have ever done.