noobtuts

Games are Problems

This article is for all those that still think that it's 100% fun to make a game.

The Problems

The #1 reason why most of us got into game development in the first place is that we love to play games.

The reality is different though. Making a game is always fun during the first few weeks, but at some point the excitement goes away and what's left is a long list of problems. Here is a To-Do list from one of those many unfinished indie MMORPGs:

The list goes on like that for another hundred entries. Ultimately a game is a software, and a software is just a big amount of solved problems. If there is one thing that computer science students learn in university, then it's how to solve problems.

Now there is always something that we can do. The trick is to simplify everything, to find tutorials like those on our website that are understandable by five year olds. Or to learn all the new technology before making the game and not in between.

But at the end of the day, it's always you against yet another problem. While it's sometimes just a few lines of code that are needed, it's still a Problem. Something that stresses you out. Something that keeps you awake at night. It's like having tooth pain. It's not the worst thing in the world, but it's a problem. You can't really relax as long as you don't go to the dentist, but on the other side you don't really want to go there. It's the dentist, he will most likely hurt you as usual.

One of the major differences between game development beginners and professionals is the way they approach problems. For example, if you are reading articles on this website then you are most likely a beginner. Even though we try to explain everything as good as possible, there will always be the one or the other open question. Now you have two options. You either say: "I don't know C# yet, I will just give up because I don't understand the source code", or you might say "I don't know C# yet, but I will take the whole day watching video tutorials about it until I understand the source code".

What's interesting about industry veterans is how they solve their problems. There is a very interesting video where Notch (the creator of Minecraft) filmed his process of making a game for some contest. Its a magical thing to watch, because it seems like he doesn't get scared by new problems at all. Five seconds after he decides that the game needs shadows, he is already hacking the shadow code into his Java IDE. He decides that the game should have blood particles and one second later he is already painting them on the canvas. He just never gets stopped no matter how scary a problem might seem. That should be the goal for every beginner programmer!

The Solutions

Now, after reading all this text you might understand the whole problem thing a bit better. But it still doesn't help you to motivate yourself and work on your C++ Animations instead of procrastinating. Ultimately your procrastinating and your fear of solving the next problem is just another problem itself. And as to any other problem, there are solutions:

1.) Game Engines

Is your Renderer class fast enough? How will you port your code to Linux? What about testing it on older machines? What about old OpenGL versions that only support power-of-two textures?

The great thing about Game Engines is that they solve hundreds or even thousands of problems at once, without worrying about any of them. Think about it, maybe someone already solved your current problem, maybe you can solve it by simply installing a Game Engine!

Let's take a look at the above To-Do list again. If the creators would have decided to choose a Game Engine like Unity, all the entries in bold would fall away immediately:

Think about it. It would have taken about half a year to solve all those problems written in blue. Instead they could have been solved in one hour by just installing Unity. The developer could have went on a six months vacation if he would have used Unity instead.

2.) Motivation

No matter how good the Game Engine is, there are always a few problems left that you have to solve. Motivation is like taking an Aspirin when having a cold. It doesn't cure you, but it helps you to push through the day. Just go on YouTube, look for motivational speeches or Google for motivational quotes and pictures. Find interviews about game developer veterans like John Carmack. Usually it helps to push through the next few problems rather easily.

But as with Aspirin, it doesn't cure you. After a day or so, you will be tired of the game again.

3.) Persistence

If you ever saw a school or a university from the inside, then you already know about persistence. The first four years in elementary school are all fun. Your parents and teachers are still able to motivate you to go through all that learning. But for most of us there is that point somewhere in 9th or 10th grade where we start to question the value of knowing things about Chemistry or Ecuador's politics, or when some guy did some important historical event back then five hundred years ago. I am sure you will confirm that there is the point where you just can't motivate yourself anymore. The boring stuff just stays boring and useless, no matter what you do.

The key here is nothing but persistence. Realizing that the problem sucks but still pushing through it over and over again. That's persistence, and that's what can help you when making games as well. Accepting the pain and pushing forward until it's finished. The kind of thing that movie heroes would do.

4.) Find what you love

Now if you are persistent enough, it's surely possible to push through ten years of school and another five years of university, followed by another twenty years of solving the problems that occur when making games. Since you are still reading this article, you probably have some procrastination issues and a long list of problems too.

Many game developers love playing the games, but they realize that solving all those problems when making them is nothing but pain. At this point it's important to ask yourself if this is really your profession, and if you really want to solve complex technical problems until the end of your life.

A great example are those Formula 1 drivers. People like Schumacher and Senna were working hard all their lives in order to become so incredibly successful. Schumacher won his first kart championship when he was six, and never stopped improving his skills since then. He also solved problems over and over again, but he never gave up because he loved racing with all his heart.

Think about it: loving what you do will make everything ten times easier and more fun. But if you actually hate it, then you will go through a lot of unnecessary pain.