Pitfalls in Game Programming

by Steven Bradley - Date: 2007-02-27 - Word Count: 1042 Share This!

You have your compiler set up and then it hits you. Doubt. Do you have the skill to bring your idea to life? Most of the programmers I have talked to dream of making the next block buster in their favorite genre. Possibly the next first person shooter with fresh new ideas and features. Or possibly the next generation MMORPG. It is always good to have dreams and goals but if you are not careful, your dreams and goals may be the very instruments of your own failure.

Now how can having a dream make you fail, you ask? It is quite simple to reason so lets give it a try. First you have a goal such as listed above. Now that you know your target, many people will spend days, weeks, or months thinking about the different features they would like to have. Many times these features are seldom fleshed out in a usable form, rather are left at most as ambiguous thoughts. And this brings us to the first and most common pitfall in game development. No solid design. You can look on any online forum and see a post like, "I have a great idea for a new MMORPG that is going to change the way they are played and it has Elves and Trolls in it. You can be powerful wizards or assassins. It will be an online game where around 1000 people can play and the world will be huge with all kinds of quests."

Anyone that has been programming for a little while can see the obvious flaws in this "idea". Lets beak it down and see what usable information we have to work with.

MMORPG Elves, Trolls Wizards, Assassins Online (could get that from MMORPG) Server support for 1000 players Large World Quests

So in essence, we don't have anything to work with. I know it is hard for a new programmer / game designer to visualize what a design concept should look like but it isn't what you commonly see. Before anything else you have to understand the computer is simply a tool that will accept input and follow a predetermined logic path based on that input. What does that mean and why is it important to us?

That is a good question and one worth a real answer. A detailed design is the most important tool you have as a game developer. It gives you an opportunity to "see" the game in its entirety before you waste time on a single line of code. It will let you test your logic, program flow, and find any flaws in your idea. It will also give you an idea on the system resources you are going to need to play the game. But the single most important aspect of your design is that it will give you a complete list of things that need to be done to finish the game. This will help keep you on track and not add a bunch on new features in the middle of development.

As an example of the level of detail you need, I'll pseudo-code the instructions you would need to say, turn on the TV with a remote control.

Most people would say, easy, pick up the remote and hit the power button and everyone that has ever touched a remote would know exactly what you were talking about.

A computer doesn't have that luxury. It is a clean slate and needs to have every detail listed. For example:

1 Check left hand for remote (if true jump to 5 ) 2 Check right hand for remote (if true jump to 5) 3 Search for remote 4 Was remote found? (if false jump to 3) 5 Use thumb to press power button 6 Use thumb to release power button 7 Did TV turn on? (if false jump to 5) 8 Enjoy favorite show.

Ok now that we have an understanding of the level of detail a real design requires lets move to the second pitfall of game design.

We have our dream game designed and completely fleshed out, now what? Well now we have to evaluate our resources. But what do you mean? When I say our resources I am talking about everything that is going to be required to make the game. Just a few that should be mentioned up front are, programming skills, API knowledge, graphics / sound resources, time, and the financial resources for things like servers and contractor costs.

Not all of these will be as important depending on the type of game you make. An example would be making a version of PONG (see the http://groups.msn.com/cgameprogramming CGP Group Project ) This game can be done in a relatively short amount of time, with very few resources and none of which couldn't be done by even the worst artist (ME). But as the project becomes larger and more complex the resources are, the costs, both financial and available time become significant factors.

So what is the biggest factor that contributes to project failure in this group of pitfalls? There are many excuses and some or all may be valid but next to poor project design, a lack of programming skill has to rank #2 all time pitfall. Most new programmers want to make the next great game on the block but fail to take the time to learn the foundation of their language of choice. Then further down the road when they should be writing games they end up struggling with concepts they skipped and get frustrated and quit.

The last major pitfall comes when a developer / programmer tried to create a game project that is too large or requires resources they don't possess. This could be any of the resources listed above but a prime example would be.

Lack of solid design with inadequate programming skills on a project that is too large.

That sums up about 70% of new project failures. Certainly there are exceptions to every rule but exceptions are rare.

So what is a new programmer to do? Stick with the basics. Choose game projects you know you can finish. If you are going to try a new concept it is better to use it in a project with a high probability of success. Never underestimate the importance and the value of learning the basics. Anyone up for Tic-Tac-Toe?

Related Tags: design, free, programming, c, game, tutorial, programmer, coder

Steven Bradley

Your Article Search Directory : Find in Articles

© The article above is copyrighted by it's author. You're allowed to distribute this work according to the Creative Commons Attribution-NoDerivs license.

Recent articles in this category:

Most viewed articles in this category: