I am a guerrilla game developer. Guerrilla says a lot more about what I do and how I do it than indie ever could. I make games with almost zero budget - my budget is whatever I can scrape together in my coin jar, or maybe some birthday money. I don't want to be Jonathan Blow (although I like him a lot and we share the same haircut) or Phil Fish. I just want to make the games I want to make. I don't even want a million pounds to build them with - although if you do have some spare millions, I'm not going to say no either.
Headlong is an arcade-style racing game that started out life as a game called ‘MudFire’, which I made for a competition. MudFire was put together over the space of two months and as the competition started, I felt sure that my ambitious off-road racer would run in the top ten if not win the entire thing. My reasoning was that all of the other entries would be half as ambitious as mine and that everyone loves a racing game, right?
Honestly, I never could have anticipated such a harsh reaction. I’d made a bit of a mess of the car physics and people got unreasonably mad about it. I’d misjudged the audience and although I quite enjoyed the game, it was a game that the community didn't like at all. In all of the 50+ games I’ve made before, I had never seen such a negative reaction as I got for this one and in all honesty I was devastated by it. The messages I got weren't just critical, either, they were positively Greenlight-level hateful. It was a massive blow to my confidence as a game maker and whenever I see overly critical or offensive comments for anybody's game; I'm reminded of it.
Fast forward to a year later and for some reason I decided to try again to make a racing game. Money was at an all-time low, but I figured that if I spent a couple of hundred dollars I could re-skin MudFire into a new game, fix the handling and hopefully make enough money through sales to pay a bill. Oh, did I mention that this would only take a month to complete? After all, I was only changing the graphics a bit, right?
This new racing game was to be a straightforward racer, with no bells on. You drive, overtake, cross the finish line and win. I would keep it nice and simple; I would buy in some stock models for cars and tracks and get everything together quickly. There would be a career mode with career events – races with fixed cars and different tracks. Some tracks would be played in reverse, to pad out the gameplay and make the most of my very limited resources.
Thanks to the Unity Asset Store, I was able to buy some great tracks and a whole package full of cars. My assets totalled around $200 and I spent another $100 on audio and a few utility scripts. I already had NGUI from a contract programming job I’d done earlier the same year, so from there my only expenses would be time.
Putting the tracks into the engine for the first time was really exciting. I’d made all of the tracks myself for MudFire using props from tutorials or free resources. For this new racer, I’d bought and sourced around 40 different car models and 7 tracks. Having these new, great looking assets and seeing them in the engine for the first time was really exciting.
A few weeks into development I was setting up the physics and driving vehicles around repeatedly. I didn't immediately realize just how hung up I was getting on it- to the point where I tweaked and changed settings almost every time I opened the editor and there were literally days where I did no actual work on any other part of the game. I just tweaked physics and car settings and as I started trying to balance the A.I. it just got worse; each time I changed the car physics, my A.I. needed to compensate for it. Tweak the car physics, tweak the A.I., tweak the A.I. and I’d be tweaking the car physics again. Around and around and around.. revising the physics and A.I. and getting nowhere with difficulty balancing.
It felt like there was no end to it and it soon got to the stage where I could only see the worst aspects of the game, completely losing any grip on what I was building and trying to compensate for shortcomings any way I could think of. This idea of not letting people down again took over every decision I made. If I was failing in one area, I would try to compensate in another.
When you work with stock art (particularly when you work with a lot of stock art) there are a few extra things to consider that I really didn't think about until they actually became problems. The most obvious is that you don't have an artist on hand to fix small issues that will always crop up along the way. I found some problematic bits of geometry and I had no choice but to buy some modelling software and figure out how to hack them into submission myself; it took me a lot longer than it would have taken a professional and I may not have ended up with as much of an optimized environment than a professional artist would have made.
The designs and shapes of your environments also govern the way in which game physics and A.I. need to act. For example, some tracks will need A.I. that can respond better to tight corners and other tracks may need A.I. that works better with longer roads. When levels are made for different games with different types of physics, this can become a real balancing issue. Some tracks are good for longer, less responsive physics such as those in the Burnout games. Other tracks are designed for twitchier, fast response turning games such as arcade racers like Ridge Racer. Basic A.I. will only go so far in different situations, meaning either some smart kludging to adapt on a per-track basis or some smarter core A.I. code. I went for a mix of both, since I was still tweaking everything on a daily basis right the way through production. To solve issues like this, I added more and more configurable values to the physics and kept tweaking them when what I really needed to do was to solidify the A.I. and balance difficulty and to get on with finishing the game.
Although it may seem fairly obvious now, when I was initially excited about my project and I sourced 40+ vehicle models, it never crossed my mind how much work the set up and balancing of each vehicle would be. All cars needed to be set up, and balanced to be driven by both players and A.I. For some odd reason, I waded into it thinking I would just slap new graphics onto my car rigs and adjust the suspension a bit.
I also failed to consider the effect that having individual handling styles for the different types of vehicles would have on gameplay. The dumper trucks, for example, are big heavy objects with bouncy suspension. They are better for bumpy terrain than roads and they are particularly bad on my highway levels; bouncing around doesn’t exactly make it easier on a level full of jumps. The big, heavy bouncy trucks don’t really work too well on tight bends either. This made vehicle type an important variable to consider as I was balancing out the career mode events.
As dev continued, my judgement became more and more clouded as I concentrated on aspects that stood out to me, rather than areas that were most important to the project. I inadvertently focussed on some kind of outside looking in view, telling myself over and over that I was making the game ‘for me’ without really building from my real point of view. The ingredients were all there – I like cars like monster trucks and hot rods going really fast and blowing up, but I wasn’t being bold enough about what I wanted from the game – I was afraid of it being too difficult, not difficult enough, not having enough tracks, not having enough cars, getting bad reviews, ruining my reputation etc. etc. etc. and the project joined the dark side.
Instead of stepping back, I added more. At the lowest point, I began prototyping new gimmicks – boosting, blasting and even body swapping!
My biggest gimmicky idea was team-based racing, where you were in charge of a team of racing cars in each race and you could ‘body swap’ between cars. Each race ended with the player being awarded a score for the positions of all cars, so even if one of your cars finished in first position you still needed to get good finishing positions from the other cars on your team. I built this and it worked functionally, but it wasn’t nearly as much fun as I’d imagined. I found that I didn’t feel invested in the race anymore – I was just swapping a lot and trying to juggle the team to stay in front of the A.I. rather than getting into any sort of racing mindset. I was also reliant on my A.I. to drive the rest of the team when I wasn’t controlling them, which would take a lot more balancing work to make racing fair. It was certainly fun for novelty, but constantly swapping to try and keep everyone in front was dull and not at all the adrenaline-fest I had in mind.
The next gimmick was being able to blast other cars off the track. I’d started working on this with the intention of saving it for the next racing game, but since the physics weren’t how I liked them I found that blasting the other cars became a good distraction. Distraction seemed like a good strategy, but one that's surely the wrong approach to game design! Boosting ended up in the final build and I’m actually glad it did. Going super-fast is always fun and it did actually achieve its goal of making even the dullest, longest races less mundane.
All this, of course, as I was still tweaking and tweaking and..
I love racing games. I love playing them and I love making them just as much, perhaps even more. I wanted Headlong to be an arcade racing game that I wanted to play. When I started out my car physics were influenced by Flatout with a little Driver thrown in for good measure. The initial physics model was set up for me and it was exactly how I liked it to be. I enjoyed those early builds and had a lot of fun playing them. Sadly, after a year of working on it and such a hard time finding the soul of the project, I was completely tired, unhappy and wishing I could just sell the source and let someone else finish it. That said, I knew that I couldn't give up on it and that I wouldn't be happy to abandon it. No matter what, Headlong was going out.
My volunteer beta testers were great, albeit a little too quiet and needing a shove now and then but let’s face it- when you ask people for their spare time for free, you need to appreciate they have a life outside of your game. The feedback I got back was positive and really helpful, although at this stage I had become so doubting of the whole thing that any positive comments I suspected were people being kind to me as an indie developer or as friends, rather than genuine enjoyment.
When I finally launched Headlong Racing on Desura and Indievania, there was a silence. I sold around 15 copies in the first few weeks and a few friends congratulated me on the launch and said they liked the game. The problem was that people ‘out there’ were completely silent. No reviews, feedback, comments.. just silence. Had I failed again? Were people buying it and hating me for releasing this thing into the world?
I’d made several racing games in the past (as a professional working for games companies) and they were either love or hate from the players – but this one was just silence. Was it worse than swearing and abusive comments I'd gotten with MudFire? The longer it went on, the more my paranoia grew. My state of mind was far from ideal and after all that, I was now being eaten by silence!
So, I reacted. I went crazy with it. I stripped out all of the car physics and rebuilt the game to use a third-party car physics library in a complete state of panic. I added surround sound audio, re-lit all the levels and cleaned up the menus. Meanwhile, three or four comments came in about the lack of options on control sensitivity. I was already in panic mode, so I reacted quickly to them and, within a week, I patched the original game and released a version with sensitivity settings. Then, back to silence. Sales trickled in around 2-3 per week.
After a couple of months of more silence, the huge physics update was finished. Realistic car physics gave the game a whole new vibe. Exhausted, I took a week off. When I came back to work fresh and excited I booted up the computer, loaded the game and realised that it was now absolutely horrible to play. The car physics were much too realistic and not at all suited to the tracks or style I'd wanted to go for. The difficulty balancing was all over the place and the A.I. kept getting stuck.
Thanks to WinMerge (and I consider WinMerge to be in my all time favourite software list having been a real life saver on several projects!), I took all of the other fixes and improvements from the new build and merged them into the previous version I’d launched with, minus the revised realistic car physics. It took a few days, but it made a huge difference. The improved audio, bug fixes, particle effects and camera made this more like it should have been at launch – if only I’d been able to afford more time. Or, maybe if I’d been more focussed on what matters. For the first time, I actually enjoyed playing my game again and it didn't look like the disaster I'd led myself to think it was.
Now I’ve had some great feedback, but of course there are some that absolutely hate it. The overall rating on Desura is somewhere in the middle, which I'm actually really happy with. There was recently what I consider to be a great review on Green Man Gaming, too. The reviewer seemed to understand that the graphics weren't the greatest, but enjoyed the handling and design of the physics. I’m glad that some people are in the same place with me on this, but I still feel as though I could have done better if I had been less reactive to every little thing during development. This was my first large-scale solo game project and only the fourth game I’ve ever worked on that took more than six months to complete. There are so many mistakes to make and so many things to try and so many things still to figure out.
Headlong went from being a quick re-skin of a racing game to a lesson in wasting a lot of time concentrating on the wrong things. I'm here to make a game that I hope people are going to enjoy. That enjoyment should come from a well-rounded and balanced piece of entertainment rather than checking boxes as to what I thought my players would want from my game or from checking boxes as to what I think may get a good review. I needed to exercise what my friend Dave Thompson calls “Selfish Creativity” - I should have wrote it on my wall and made it my mantra! http://dwlt.net/blog/2012/08/03/casual-connect-2012-and-selfish-creativity/).
I don’t know if my next game will go any better, but I know for a fact I will be taking a very different approach to building it! I need to keep in mind that if I’m going to do this as a personal creative expression, rather than as a business development, I need to be completely personal about it and forget about potential criticisms or not having what the next racing game might have. I know that racing games are hardly considered art, but I truly enjoy making games for me to play and racing is my favourite genre. There is always a lot more going on under the surface and it’s getting those things right combined with a cohesive overall vibe of a game (and a consistency) that I’m trying to get right. If I fail, so what? When I see how much I have learned both technically and spiritually from trying this, I can only see progress. Maybe two games down the line, or ten games down the line I’ll crack it and I’ll make the game that satisfies whatever it is I want to get back from my creations. If not, what else am I going to do? Quit? I don’t think so. I can’t not make games.
So I'm actually rather proud of Headlong, despite its faults. I made a full 3d racing game with a budget of $300, bucketloads of sweat and a lot of hope. I enjoy playing it now and again and it does actually appear to have a small following of fans who genuinely enjoy it too. What I went through making the game was tough, but I kept going and made it to the finish line. That makes it even better. I can look back at it and be proud of the fact that I didn't just sit around criticising other peoples work, I made my own game, marketed it, launched it, patched it, lost sleep over it and wrote a postmortem on it. That's something to be proud of.
I hope some of you out there will join me, or at least follow me on this journey. I’ll try to share what I find along the way and I’ll be on Twitter if you have any thoughts @psychicparrot – just don’t tell me how to make games. These are my games now!
Headlong Racing is available for Mac or PC. For more information, please visit the website http://psychicparrotgames.com/headlong
Addendum (some thoughts I wanted to cover in the initial writing but didn't!):
If I were making games for money, perhaps the 'user' feedback would be super-important during the initial dev - I'd need to know what they wanted to put their money into / the sorts of things people want to pay for. I'm not making games as a business, though. I've done that and I'm done with that. Whilst I like to get paid and I don't think it's unreasonable to expect to get paid a little for my work, I don't make games for the money. I consider myself as a guerrilla developer somewhere between hobbyist and pro - I don't have a budget but I get to do what I want to do without the interruptions, hassle or interference of investors, sponsors or publishers. Or even, other people. The trade offs to this include; having no budget, having no-one to get feedback from and also spending too much time indoors in a darkened room eating donuts.
As an lone developer, it can be really tough to stay on target. In a company, it's most likely that three or more people will have a say in how your game works and in the decision making processes associated with it. If you start to lose focus, you still have three or more people who are around to keep the project moving in the right direction. It's also harder to make 'on the fly' rash decisions, since there's usually three or more people you need to convince before your idea becomes the way you spend your day. When you're on your own, there's no-one to slap you upside the head when you're drifting off into oblivion.
So where do you get your feedback? Can you trust the 'outside' world? Can you trust your own instincts? Do you just stick to a rigid game doc and hope that the vision you had originally will work out, even when it feels like it isn't? When do you know it's done? Aren't these the same questions artists have been asking for years?
I don't know the answers to any of these. That's another reason I'm putting it out here because I suspect there are plenty of lone developers in a similar position - when you're down and it feels like you're failing your project, maybe it'll help to know that this is quite normal and to understand why that is.
I went far off track because I had crazy ideas in my head about trying to please everyone, but it wasn't really the comments or feedback that made the project difficult. It was me. I take full responsibility for it but at the time I really don't think I could have done anything else because I was so consumed by both the self-doubt that comes with building a project on your own and also the sheer drudgery that making games can be. When progress is slow and you're bogged down in a development trench, that can be a really bad place to be emotionally and it's easy for your judgement to go 'a bit mad'.
Thankfully, this journey had a happy ending. I didn't rage quit and I managed to reach the finish line and make a game that I can be proud of. There are people who enjoy it other than me, too, which makes me feel like I did 'the best I could with what I had'. Whilst it's no Forza, it's also no Big Rigs: Over The Road Racing either. And Big Rigs had a bigger budget(!).
The stuff I'm learning as a guerrilla game developer is gold. It's like the difference between learning from the ground up how to do things vs. learning from top down.