Thursday, September 24, 2009

Making a Game: Tools of the Trade

You can't make a game with just your bare hands, you have to have the right tools! It can take a long time to decide what programs you need if you have never made a game before. Sometimes they are incompatible with each other and will not save files in a usable format. Or sometimes they just don't have the features you need.

If you want to make a 3D game you will need a 3d modeler, a photo editing program to make textures, a scene editor, and a game engine or graphics engine of your preferred programing language. Sometimes the 3D modeler you choose will not have all of the features you need and you will need to use a separate program for texturing or animating. The scene editor may come with the game engine or you could place all of the models in the game within the games code. Sometimes you can use the 3d modeler as a scene editor too. Also the game engine or graphics engine you choose may not have everything in it you want so you will have to program it in yourself.

These are the programs I will be using to make my game "Lost Kingdoms":
You have a lot of options when it comes to the 3d modeler. There are a lot of other professional packages available such as Maya, 3ds Max, and ZBrush. Many of them can handle everything with the 3d model including lighting, animation, and handling the scene. Wings3D and Blender are the two major free 3D modelers. A lot of people swear by Blender, however if you are just learning 3D modeling, I would suggest choosing something else. It is a potentially great program that suffers from having a seriously steep learning curve, and in my experience is very buggy. Wings3D Benefits from being one of the easiest to use 3D modelers out there, and is my favorite. Sure it does not do everything, but what it does do, it does great!

The choice of a graphics editor is easy. Go with whatever you have access to and are comfortable with. If you have not chosen one yet then try Gimp. Ive used Photoshop and Gimp and they have a lot of the same features. Im running on a tight budget so I tend to go with the free alternative. You may also want to use a repeating texture generating program such as Genetica or something similar. There are several to choose from, some free, some not. I also use a drawing program called SAI when I use my graphics tablet. It has some great tools and features that are absolutely invaluable to drawing.

A scene editor helps you put your game together. Once you have all of the 3D models done for a town for instance, the scene editor will let you place the models where you want them. IRREdit also allows me to place lights, terrain, primitives, and can do some simple animations like allowing a windmill to turn. IRREdit was written specifically for IRRLICHT so if you choose a different game engine you would need to find a different scene editor.

The game engine took me the longest to decide upon. I nearly went with the JMonkey Engine instead, and it would have been a good choice too. But there are a lot of major factors to decide upon when choosing a game engine. You have to find one written in your preferred programing language. If you do not have a preferred language then you would have to learn one. Fortunately IRRLICHT and JMonkey are good engines to get your feet wet with. IRRLICHT is written in C++ and JMonkey is written in Java. Ultimately it came down to one factor for me, it is easier to find reusable code and modules written in C++. I can easily plug in a physics engine like ODE Open Dynamics Engine into IRRLICHT, but I would have a hard time finding something similar written in Java.

Other concerns with a game engine choice is what kind of stuff does it support? Does it have a good community? Is it well documented? Is it up to date and support newer features and graphics shaders? Is it still being developed? Is it easy to modify or expand? Does it have networking support? With all of these questions it took me several months to research and find the right engine for me.

Now that I have all of that done, I better get started on my game! I have a long road ahead of me. Fortunately I'm not alone.