Making a Game


I want to make a game! This is the first sentence we have all said -everyone in his own language- just before getting involved with game programming. Making a game though is not as easy as i first thought.It requires months of learning and trying, and lots of hours in front of a computer screen. Trying most of the times leeds to a failure but some other times leeds to success.Both situations are equally valuable for a programmer because both build his experience.

The Basic Tools For Game Programming
The basic tools that helped me during this process were deep knowledge of a programming language(VB in this case),mathematics and of course experience.

You can't start game programming without first having deep knowledge of the programming language you are going to use.And this is because game programming requires every available tool the language can give you.Else you will be unable to complete some game programming tasks.

It's like trying to make a pizza without first know how to make the dough.

Mathematics now is the most powerful tool in computer programming.

In game programming you are going to need mathematics,from simple equation solving to vectors and matrices.I think someone over 16 has (or should have) the appropriate mathematical knowledge for game programming.So if you don't like maths you better start now!

Experience is something gained through time.

You gain experience by trying and either succeeding or failing. The main advantage of experience is that you rarely do the same mistake more than once. Also if you face a problem once and you solve it,the next time you face the same problem experience makes you say "Oh,yes i know what to do!" or in a worse case "Oh,yes i remember i've solved this once".The more experienced you get the more easily you will overcome problems.

Another thing i've learned during game programming is that you can't do everything alone. Sometimes you may do it all alone but in most cases cooperation is the key to success.

You see,a game is a unique computer program that combines mathematics,physics,art,music and interaction all in one.

However you can't do by yourself all these tasks because it's one in a million to be a good programmer,a good artist and a good musician.

And even if you are an excellent game programmer,the job done by the efforts of more than one programmers is much better and less time consuming.

Also the existance of a good game programming community (like the VB gaming community :P ) is very helpful in every stage of game development since you can get programming help and feedback anytime.

Oh,and don't forget the most important element you need that can't be learned in any school: Imagination!

It's just inside you so try to unlease it.

The Development Procedure

I seperate the game development procedure in three parts.

A)Game Design B)Game Programming C)Game Graphics and Sound

I'd like to focus some more on the Game Design part since this article is mostly theoretical rather than technical.

Many people do not have a clear view of the game they want to make and i personaly asked myself a few times this question:

"Should i just start programming and decide in the process what i want to make?"

Well,this is not a good tactic and in most cases leeds to failure. You can't just start programming without having a plan.A skeleton of the game. You have to design the game first before you start coding. What most game designers do is to create a design document where they put all the main aspects of the game like what kind of a game it is,the plot,the characters,the conditions and limitations,the main programming aspects,etc. This will help all the team members to cooperate more effectively on a common basis.

There are many people who want to enter the game development community but have a false belief about game development.

I have seen in game development forums many questions that sound utopic or do not have a realistic basis.A few examples:

"I want to make a game like Diablo-Quake-Unreal-Starcraft.Could someone help me?"

The fact that this poster is considered a newbie does not excuse this question. We have all been newbies and i'm still newbie in many programming sections but i never had the illusion that someone could explain to me in a few lines how to make a game like Diablo or Quake. We all love a certain game and we all want to make a game "like" it,but we must first consider what we need to achieve that:

20-30 excellent full-time programmers 10 artists professional musicians and sound editors maybe actors for the voices a budget of 2 million $(that was the budget of Quake2)

not what every team can have,right?

"I want to make a cutting edge game!"

OK, hold on now. This is a very hot topic. First of all question yourself: Does "cutting edge" mean "a good game"? I agree it is nice to have photorealistic effects,fullscreen antialiasing,smooth liquid effects,etc. but does this enhance gaming experience? I've seen many games advertised as "cutting edge" with a list of impressing effects but in the end they sucked! Why? Because a game is NOT only visual pleasure.

Like a movie is not only special effects.They're just there to enhance a movie not to identify it! There are other factors like plot,gameplay,addictiveness,etc. that determine a game as the plot,the dialogs,the music,the atmosphere,etc determine a movie.

Another question that rises is: Do you have the means to develop a cutting edge game?(latest hardware and software) How many game players have the technology to enjoy your "cutting edge" game?

My advice:Start from more simple,easier to develop projects and give attention to "playability" of the game. Eye-candy is nice but not the essence of the game.

"I want realism in my game.I don't want it to look fake!"

Realism is good in games but misunderstood sometimes. You have to take seriously in mind this line:

Realism depends on the kind of game

In a few words realism is good for a football(soccer for US readers) simulation or for a flight simulator but it is completely unnecessary for Super Mario. It's like expecting to see blood and intestines when a bomb explodes in a Bugs Bunny cartoon!!

Does this mean that there shouldn't be any laws,any principles followed in the game? Sure.Super Mario,for example, does not defy gravity but it is up to the game designer to specify the in-game laws that characters should obey.

This means that Super Mario could even fly if his designer wanted to.

On the other hand it is good to expect realism from games that should be realistic(like simulations). However again we should not seek total realism because the game will loose its magic! If you want total realism then close your computer and just live your life!!

Something you have to decide during the design process is wheather the game will be freeware,shareware or commercial. I think you must first begin from freeware,then move to shareware and when you have the ability to create a complete and functional game move to commercial.

There are many game design issues that need to be discussed but it is out of the scope of this article,plus there are many excellent game design articles on the net like Ernest Adam's "Designer's Notebook" articles at Gamasutra( www.Gamasutra.com ).Go check them before designing your game!

About the programming process i don't have much to say since individual programmers tend to follow their own coding standards.Besides there are thousands of ways to program a game and i'm not any programming expert to guide you. Just make sure you write clean(readable) and flexible(easily transformed) code.

I would also suggest to use temporary art during the programming process. I think it is better to add final art when you are close finishing the game. This way you can save time since artists can work parallel to programmers.

I can't say anything more about graphics,music and sound effects since i'm not an artist or a musician and since this is out of this article's scope.

I just hope you all understand that it's totally necessary to make a game plan first before you start programming.And that cooperation,as in most parts of life,is a key for game programming. Fullstop.


Previous Columns

Voodoo4 is:
Webmaster of Ancient Code and programmer on Darkness Rising.