# Make a 3D Game

I'm going to assume you know how to program Windows in C++. If you don't, you need to learn that first, then come back.

This is not an in-depth tutorial. It's just a pointer to some other resources I've put together to help in creating 3D graphics for computer games. For an exhaustive set of articles and tutorials, go to GameDev.net .

First, go to NeHe Productions to learn how to get a window on screen and rendering using OpenGL. Then come back here.

Then, you'll want to export meshes from your modeling tool, and you're going to wonder why your modeling tool (I'll assume 3D Studio Max version 5.1) keeps a separate array for each of texture coordinates, normals, colors, etc, each with their own index, but OpenGL (or DirectX) want a single index into all of these arrays. That's because hardware works that way, and it would be too complicated and slow and make it work like 3DSMax. Thus, you need to normalize your vertex arrays .

Next is probably a question about how to create and move a camera, separately from your geometry. Simple Camera will get you there.

Once you load a number of meshes and move around them, you realize that you'll need a system to keep track of all of these entities. Turn to Simple Scene Graph to do that. Hey, you're getting somewhere!

By the way, if you don't want to develop your own geometry exporters and file format, You Can Use Mine .

You may want to add effects like Laser Bolts or maybe a cozy Camp Fire . Isn't it great that there's code out there to use?

Now, the camera moves around, but you are probably using a height field (loaded from a grayscale image, no doubt) for your ground -- how do you figure out how high to put the camera for each camera location? Try using this Cubic Hermite Heightfield Interpolator . This is also great for generating higher level of detail from a lower-detail image; it makes everything rounder, and will interpolate outside the range of the input sample values (as opposed to linear interpolation).

At this point, you want to get going with actual physical simulation, rather than just rendering static meshes on screen. Hop on over to The ODE Web Site and download a FREE collision and rigid body simulation system. Then download my Simple Car Demo With Source based on ODE. Perhaps also read some notes on A Better Camera System Using Physical Simulation .

Boy, you almost have a game at this point! If you want to make it work on a network, you should probably make it NAT Safe so that your friends can all play, even though you're all behind separate firewalls. You might find ENet to be helpful in making a networked game, too.

That's it! No more help from me. When you're through with all of this, who knows, maybe you'll give me some pointers instead! You can try doing that at: