Friday, 24 June 2011

Why Games Aren't Made

This is one of the rare articles in this blog that are specifically aimed at adventure games (the genre) and Adventure Game Studio (the toolkit). It's also a very subjective one, but that's just to be expected. So read on, I promise it'll be worth your time!

First of all, I think it's safe to assume that there are more AGS games being started than there are finished AGS games. Just check the Games In Production thread. That's because we're still to almost 100% an indie community. We're hobbyists. When I, for example, fail to release an announced game, the worst thing that might happen is some mild concern (or/and ridicule) from my fellow forum members. But my job isn't at stake, I lost no money, and I will surely have no reporters mail me for a statement.

Let's further say that maybe three out of ten started games are abandoned for a reason: Maybe the author realises that his skills are not up to it, that his idea sounded great but plays not quite as well, or something similar. Sometimes a game DOES tell you that it isn't worth it (in the case of Phantasmagoria 2, this took quite long). Sometimes you just realise that this thing you started isn't worth your time, and you stop working on it. No harm done.

But there are games that disappear from the world for quite different reasons, and this is what this article is about.
Commercial games usually see the light of day, but it's not that all of them are great games. Their quality ranges from outstandingly good to the exact opposite, yet they are finished. So obviously they are made by people just like you and me who still somehow are better at handling projects.
Several AGS games, so I believe, are scrapped because the designer can't handle a game project. It's as simple as that- even a relatively small game can be pretty overwhelming (depending on your experience), and all of a sudden your cute little adorable baby becomes something right out of a Fantasy Filmfest movie, and you don't dare to touch it with a long stick.
It stands to reason.

It would be really cool if I could write just here and now that I have analysed the situation and returned with a list of "What can go wrong during your game making, and how to solve that". I haven't, and think that no-one else has, yet.

At least I came up with a hands-on list of things that has gone wrong FOR ME, and a supporting list of solutions I HAVE COME UP WITH, which could be the next best thing. I do, by the way, qualify for writing this all by having not released several games myself. My last release has been almost three years ago, which is quite a long time, but I can redeem myself a bit by having failed to release something for quite interesting resaons. I have also beta-tested several games that were never released, and think I see some pattern in them. And finally, I just happen to write articles, so there.

Reason 1: My Comments Were Not Up To It
When writing something really complicated, be it a puzzle or a GUI, you can quickly create a lot of code in one function, or a twisty maze of code that stretches over several functions. At some point during your game's production, a bug WILL find its way into that code. And then it's up to you to dig through all the stuff, find the line where things go wrong, and correct it.
And sometimes you'll realise, in horror, that you can't even remember what your script does right now in the first place, because you never commented anything and didn't care too much about formatting either. So instead of some already hard bug-hunting through A LOT OF CODE you understand, you face bug hunting though a lot of stuff you can't make heads or tails of. And a beginner, faced with this choice, might consider to call it quits and just start fresh.
Writing comments is useful, but this game stopper actually never was a big issue for me. I think it gets less important as you get experience, so it will sooner or later eleminate itself.

Reason 2: It's messy, I'll just start it over fresh
I've fallen to that one a lot. Your project starts to look cluttered and messy because you shoved stuff in to test it out and then changed it and tried something else- so you decide that it would be clever to simply ctart from a fresh point Zero, now that you are wiser and have some clue about what you're doing.
I'm very sure this this can be a good thing. For me, however, it became a hindrance. It's easy to keep things a good deal more organized when you redo a project- you can keep your sprites in nice order, you lose a few extraneous functions and stuff. It will all look neater for quite a while, but this is countered by a considerable downside: You will repeat a lot of boring stuff, like importing a shitload of sprites, setting up lots of GUI elements, remembering how these frames were supposed to become a walk animation. I think I redid the DITA GUI five times, each time hoping to get things just right. It was just lots of boring stuff with a slightly niver paint job, really.
Workaround? For me, it was accepting that you don't need all your GUI sprites in numerical order, and that dialogs can be written in any order too. It's NICE to have things in order, but since you rarely create your assets in order of theme (most times I add them as they are needed), why force authistic behaviour on you?

Reason 3: My Global Script Just Exploded
AGS keeps a lot of its code in the global script- the core game functions, obviously, are there, and the functions of all GUI elements, characters, and inventory items go there too. They never get automagically sorted, too, and instead just plop in in order of creation. That means that YOU are the one who must keep things in order. This sounds pretty harmless, but I have read huge complaints about the fact, and for some people it really was enough to call it quits.
In truth there are several ways to keep your global script lean or at least human-readable. It's just that it's not build in. I find it quite easy now to keep a "chapter" structure by grouping the core functions, gui functions, characters and finally inventory functions in "chapters", and I use commented lines as separators. It took a while to get used to, but it works quite well. I simply add the extra half-hour of sorting the stuff I added in a day's work. It's worth it.

Reason 4: It's Scripting, So It Sucks!
I'm comfortable with AGS but also aware that it is a game toolkit. It is specifically made for one genre, no matter how creatively it has been abused. In short, it's not as generic and flexible as, say, learning C#.
So sometimes you meet people who see that AGS can't do one thing, and who decide that this incompetence alone is enough to drop the toolkit altogether. If this happens somewhere in the middle of a project, well, the game also is dropped. I personally have little sympathy for anyone who rates a toolkit on failures, but I admit that sometimes I've run into situations where I can't get something to work and hit a dead end finding a solution.

Reason 5: I can't draw Batman... shit, I can't draw a ALL!
AGS games lose all impact without graphics, and some of us, well, are not very good at it. Trying to draw something and FAILING can lead to a dead end- furious at your own incompetence you try to make things up and draw something else, but since you're already in a bad mood you fail again. If you don't stop RIGHT THERE, you'll find yourself drawing crap for the rest of the day. Heavily overlaps with Self-Induced Writing Block, discussed later.
For me, a simple remedy worked surprisingly well: When I can't get something done graphically, I listen to my current favourite song. That never makes me DRAW better, but it's a nice distraction. After that, I try again and usually I'm in a better mood now.

Reason 6: How Do I Make Door Puzzle? Oh, never mind...
It would be unfair to say that newcomers can't make games, but they seem often challenged to make it through the most basic scripting commands. When you are not able to figure out how you use an inventory item on a hotspot, you should not yet be making a game.
Can lead to:

Reason 7: I Can't Figure How X Is Done... I Need A Side Project!
I HAVE fallen for that, and I'm not ashamed to say it loud. Stuck in one project? Well, there are people who take a break and return to it a wiser man. There are people who take a long break and forget about it completely. And there are those who start a side project where they stumble over a new little problem, which makes them say: "Darn, I need a side project!"
I know a few people who need side projects and who can juggle them with ease. For me, side projects are the shiny tin foil that makes kittens so cute- as soon as they are there, they magically catch all my interest and energy until the next bit of shiny is waved. Sometimes it's better to focus on one thing. Sometimes, when you already are distracted, a new distraction is NOT something you want.
I'm working on a solution to this.

Reason 8: Self-Induced Writer's Block
Stuck. Some information you need to make the character believable, the puzzle sensible, the back story correct, is not part of your knowledge. So you hook up the internet and check it out.
And you find it.
You also find a lot of other interesting, related things, and start reading them, and the links from there soon have you a lot wiser. You want to use this new knowledge. You feel like having a new game idea already!
And this ends your project, because now you know so much more, it's no longer good enough.
This is a form of writer's block: You are stuck dead, and solve this, but instead of working with what you already have you just add something new, and this can create a ripple.
No remedy here, though. Sometimes the stuff you find really is awesome, and we all know the world needs more awesome.

Reason 9: Always Too Big
My personal second-biggest issue. I can't think small. I can't think small plots. I always want games to be long, and complex, and large. This is bad for any project, and especially bad when you're already having a hard time managing a small game.
My saviour was Stephen King. I grew up with the man's doorstoppers of books, and found his shorts stories very late in my reading career. And you know what, they are almost all better than the huge volumes! When I start thinking too big these days, I take a step back and concentrate on the one scene I really MUST have in the game, and then the relatively few steps needed to get there. This often eliminates a lot of clutter.

Reason 10: Never Good Enough
This is my personal favourite, and I think it's my greatest issue. Very often an idea sounds nice to me and then the game never seems to live up to it. I feel like William DeWorde in the Discworld novel (a man who wants his newspaper articles treated like great literature): Even a small line from a supporting character, I feel, must be so cool that Shakespeare cries.
I think deliberately reminding you that you are NOT working on the latest killer game helps. For me, refuge in audacity also sounds a good remidy- make something outstandingly simple and deliberately "bad" just to show yourself that this is also fun.

And that's my share so far. It obviously won't help many people making games, but by naming a problem there's now space for discussion. I'm all game for that!


Ben304 said...

Nice post! Some comments:

Global scripts explode, yes, but we *do* have the ability to create new scripts alongside the globalscript which can help out a lot. I recently went through my global script and decided it needed neatening up, so I pulled a couple hundred lines of code out and stuck it in a seperate script. This doesn't sound like much, but it really helps reduce clutter. I, too, use commented out lines as dividers for functions to keep track of things more easily.

With coding comments, I find these are more important if someone else is looking at your code. Usually if it's just me I don't bother so much because, even a year later, I understand my own coding style reasonably well. They *can* be handy when you deal with a lot of elements so to remind yourself what each variable/array etc relates to.

Not being able to draw what I want is a common problem of mine. I'm learning to rely on sketches, thumbnails and the like when I hit painter's block - this usually helps me solidify my idea of where I need to take my painting next.

The rest of them I pretty much agree with, even if I have no real comment on them, except: Commercial games do get canceled as well. A damn lot of them!

Ghost said...

Gee, you made it through that wall of text! ;)

Regarding global scripts, I actually forgot to mention that you can write your own additional ones and shift code to them. It's true that this makes them leaner, and since it IS possible, I'm doing it, too. But the global script still is the haunter of the whole toolkit, I think, especially for beginners, because there really are some tricks that you pick up or get told from people but never find in the manual.
It's not an offender, though, it get's tamer as you make progress...

Plus, keep in mind

auriond said...

You hit the nail on the head for most of those points. I'm suffering from a few of those right now actually (side projects... le sigh!) Mind if I repost this?

Ben304 said...

Hah, yes, some things you can only learn through mistakes.

My thoughts are: The best way for learners to figure out *exactly* why you should have the neatest, tidiest code you can reasonably have is for them to to go and start a largish project and then come back to it after a short break and try to work their way through the clutter.

This soon makes one realize the absolute joy that is neat and tidy code, easy to read variable/object/function names and a well managed sprite folder.

Teaching yourself to use things like folders for views (to pull stuff like all your environmental animations out of the way of the character stuff) and additional scripts makes a lot of sense after you've had a project that simply got too unweildy to be fun to use.

Ghost said...

Ben, true that, folders and some self-imposed "structure" really are the way to go. Personally I go with sprite folders of at least three levels, like
1 Characters
1.1 Seth
1.1.1 Walk
1.1.2 Talk
1.1.2a Angry
1.1.2b Soothing
2 Objects
2.1 Static
2.1.1 Room01 Yu's Place

Looks like going overboard, but it really makes things easy to navigate.

auriond, repost all you want, I like to see the words spread!

Ben304 said...

My sprite folders are very similarly organized to yours, except I often keep the main character out of the "Characters" folder simply because they usually have at least as many sprites and subfolders as anything else, and it's the folder I use the most.

Wadjet Eye said...

When you start a project, it's new and exciting. You're slinging code and seeing it form and it's raw and fresh and FUN. But no matter how good you think your game is at the start, somewhere around the 75% mark you will hate every last bit of it. You're too close to it. You will no longer be able to view it like a player. You will only see it as a bunch of pixels and code, and why would anyone want to play that? It becomes a slog. You have to push yourself to continue. It becomes WORK, and work is never terribly fun.

The worst is when you get a new idea, one that's fresh and new and exciting, which makes your current project dull and boring in comparison.

Eeeevery project goes through this. I'm going through it now, in fact!

Ghost said...

I damn well PRAY you'll get over it, WadjetEye! I mean... you're something of a patron saint in my book.

Plus, you've already handled several games AND are one of the few AGSers that make an actual living from that- would you say that "being commercial" changes a lot of the game-making process?

ponch said...

"But no matter how good you think your game is at the start, somewhere around the 75% mark you will hate every last bit of it."

Man, that is so true!

As far as keeping your code neat and tidy, I'm a big believer in that. My last few games have really gone off the rails schedule wise, but because I fill my code with indents and annotations, it's always easy for me to jump back in. I also over organize my sprite folder too.

Anyhoo, nice article. Hopefully it well serve as inspiration to people who are in danger of abandoning their games.

Wadjet Eye said...

"would you say that "being commercial" changes a lot of the game-making process?"

Short answer: yes. Long answer: hell yes. Nothing inspires you more than the possibility of losing your home.

Dualnames said...

I have to say this post is amazing, like always really. It's a great food for thought. I'm almost done with what I've been working in and out for the past year, and you really hit the spot with several points in this post.

Bundeskanzler Krang said...

There is a lot of wisdom in these neatly arranged text blocks of yours, Ghost, and I think I can relate to basically everything you said - but I would like to add one point you didn't mention, the scourge of Indie game development personified: It's non-game building related activity, social life, university, "real" work, family, partner, sports, movies, news, holidays, uh - basically everything that is not game development...

This may sound pretty damn stupid put like this, but bear with me for a moment: Game programming and producing is simply one of the most time-consuming creative tasks in the known universe. I really don't want to know how much work Ben puts into one of his games, and how this relates to the time it actually takes to play the game (15-45 minutes?).
And it just collides with reasonable and socially acceptable, normative behaviour, to invest 20 hours a week in addition to your 40 hour day job for game design purposes...Because that's mostly what the Indie adventure game scene looks like nowadays, it's not teens hacking away at their computers in their free time, it's grown-ups (no offense, StudioIc3yGames) with somewhat tight schedules, squeezing in one or two hours of game development now and then.

If I were a marxist, I'd call this creative self-exploitation to avoid professional alienation. And if I were a poststructuralist, I'd call this high performance postfordistic nerd work.

Uhm, well, but since I am neither of those two, I'll just try to finish one of my games already, gosh darn it!

Ghost said...

"Game programming and producing is simply one of the most time-consuming creative tasks in the known universe."

Very true indeed, and I see your point- it IS a bit embarassing to realise that you just wasted one day doing a twenty-frame walk animation.
I did not think of this as a factor to stop a game, though, and that already says a lot. You're right, the time invested seems unproportionally cruel comapred to the output. But on the other hand, most hobbies tend to be time-consuming, and can easily eat up all the free time you have. If you spend that time learning to play the guitar, building papercrafts or if you make a game seems to make little difference to me- maybe apart from that fact that, especially here in Germany, you have to face a lot of people scoffing you for sitting in front of a computer three hours straight.

I like to think that somewhere deep within there MUST be something that powers you, and that's the CORE of the whole business- that you want to make games.

Food for another article, surely.

Bundeskanzler Krang said...

Just a quick answer: I thought about the hobby thing, too, but it does not take nearly as long to get "results" as a game does.

I play the guitar and the bass guitar, both pretty well (by the standards of what I want to play), and the drums almost "professionally" (meaning: really well) and have been writing songs and rehearsing with bands since I was 15. Sure, writing a song needs concentration and a lot of work, but if it's finished, it's a song, and that's great to have.

If an animation is finished (which probably often takes even longer than writing a song), you have one animation, which is great. But it is only 0,5% of the full game, which suddenly doesn't seeem that great anymore.

I mean, you can push any hobby to a certain extent and keep building at your model railroad track for years in every free minute, or practice guitar for three hours everyday, but with game design this is required to even get any result. I think you can only compare Indie game programming to making a feature-length movie with a very limited budget in terms of creative input-output ratio.

Ghost said...

From that point, I think this really does become a rather huge factor- not seeing your own progress. That IS a project stopper alright, I'd say.

Dirk said...

Very interesting read!

As for the sideprojects, I've got a strategy that works for me:
DON'T! ;)
Find aspects in your project that catch your attention. Treat slices of your project as sideprojects or even add an episode with a different playable character. What also helps is not to work sequentially. If you're bored or annoyed or simply in a blockade, start with a different part of the game (as if you have to code Monkey Island again, start making the ship's episode and finish Mêlée Island later on)

In addition to games growing to big, here's another mistake you can make: founding a team. That's really really hard work, because you can't expect that the members develop the same commitment like your own. So you have to sell them your stuff every week.
In addition to your work for the game you also need time for coordination.
I'm the lucky position to have a very committed team around me, but it took about 2 years to form it and we're still having positions to fill.

An even bigger mistake, is to make one of your new members irreplaceable. A few years ago my first multi-person project died, because the animator told me he lost interest and I couldn't find a new one. Well, history repeated itself for me, but this time I had the guts and learned animations myself. If I hadn't... *poof* another project missing in action.

And like Bundeskanzler Krang said, an indie game eats all your spare time and if you don't watch out, you get nothing in return. Yet it's so incredibly satisfying to get something done.

Igor Hardy said...

Very interesting article, Ghost. Although I must say it's interesting to me mostly because I can learn what things the other people consider the most problematic - I don't think I can relate to it much from my own experiences.

My biggest personal problem is what Sebastian mentioned - the sheer amount of different aspects involved in gamedev, that you need to take care of and adjust to you daily activities and troubles (and finally make them work together as a game). This leads me also to something else I suffer from. I don't really start side-projects when stuck at some point and want a break, instead I sometimes start to endlessly polish a bunch of visuals or a piece of code that are not that important - probably a semi-subconscious way of avoiding the key problems my project is facing. Usually it takes some time before I shake it off like a bad mood. Another related problem I have is that I have sometimes great difficulties switching dynamically between several different types of work. So for example when I'm really productive with writing the code, I can't that effectively communicate with the rest of the team and the other way around too. That's also one of the reasons I don't succeed at seriously starting any side-projects - the old project I left would keep bugging me and distracting me if I suddenly completely switched focus.

straydogstrut said...

Necro-posting your article since you linked it recently and I haven't visited your blog before (sorry!!). I can relate to a lot of what you've written about here.

I'm guilty of most of the problems you've highlighted unfortunately. I've been working on the same game for nearly two years, to the point where my friend whose idea it was has given up on it=S

It really isn't that complicated, but my enthusiasm for it waned and all the other pretty shiny things caught my interest. In my defence, I had to learn a new language and dev tools with no prior experience. I'm returning to it now with a bit of renewed enthusiasm.

This is the fourth time i've started it from scratch as my comments were a bit slap-hazard and it was a mess of spaghetti looking at it again. I want to be done with it but I also want to see it finished before I move onto other projects.

I haven't made anything with AGS yet. I have ideas, some of which make it onto the screen as a design document, but my motivation wanes when I realise how much content I need to produce. I too can't think small.

Given the aforementioned project of hell, I don't trust myself to work with anyone else at the moment, so I will have to slowly chip away at my ideas on my own to see them finished. That said, I have a new idea that has been keeping me awake at night for the past couple of months so I should be able to stick with it this time. Famous last words.