## Tutorials

Here we provide some tutorials to help you start with game programming. There are several areas that we try to cover here. One is pure programming like a the simple application or reading the keyboard. Some others are more algorithm oriented such as collision detection and random number generation. And some are more physics tutorials like the car physics series.

This is the basic concept behind our work. Visit this page regularly to see what's new. This is list of the tutorials so far.

#### 34. Some programming required

Some programming tips to make the game code easier to manage.

#### 33. The joy of flight

Here is how to use a joystick to fly our airplane.

#### 32. Learning to fly

Create a simple flight simulator.

#### 31. Using vertex buffers to speed up drawing

Let the GPU handle geometry data.

#### 30. Heightmap

Learn how to encode 3D geometry information in an image.

#### 29. Create a moving camera

A really cool feature in video games is a camera that follows the action. Something like a movie camera following the actors around in the film, looking at the car from a short distance.

#### 28. Moving around in a virtual city

So far we have developed several techniques that we can use to make our games look interesting. Move around in a virtual city using quaternions to handle view.

#### 27. Stencil Buffer

Clip drawing using an arbitrary shape, not a rectangle. It is not very hard to do using stencil buffers.

#### 26. Skybox

Have you ever wanted to draw the horizon in your game? Here is how.

#### 25. Fog, transparency and scissors

Some simple effects that can make our games impressive.

#### 23. Collision and Response

Continue adding realism in your games with the simulation of the collision between two spheres.

#### 22. Trajectories

What happens when you throw a ball? What path does a canonball follow? Read this introductory physics article and start developing some more realistic games.

#### 21. Text display

Learn the basics on how to display 3D and 2D text in 3D environments.

#### 20. Quaternions

In the year 1843 the Irish mathematician Sir William Rowan Hamilton published his work on Quaternions.

Have you ever wondered what shadows are? Well we all know that shadows are the indication that the light from a source has hit an obstacle...

#### 18. Accelerate with Draw Lists

It is time now to speed up our drawing a little bit. Improving the drawing speed is crucial for applications that draw complicated scenes, especially games...

Realistic 3D environments, especially in games, are based on illusions. Illusions generated by images. These are the textures applied on surfaces...

In real world we see because there is light. Let's add some light to our virtual world to make it look real...

#### 15. Into the 3rd dimension

What is happening when we draw in three dimensions? How can we control the perspective and view of 3D environments? Read this introduction and stay tuned...

#### 14. Polygon triangulation

Our Computational Geometry journey continues with this polygon triangulation algorithm. Desintagrate your polygons into triangles for accurate rendering in OpenGL.

#### 13. Our first game

In this tutorial we ignite the fire of real game programming. We put all the other tutorials together to create our first game. A small car that drives in the streets of a small town. Collision detection, geometry of steering, timers, user input is all here.

#### 12. Point in polygon

Suppose you are writing some 2D drawing application and you want to check weather the user has clicked inside or outside some arbitrary polygon. Knowing the coordinates of the mouse and the vertices of the polygon can you tell? Well read on and you will.

#### 11. Line segment intersection

How can we tell if two 2D objects intersect? We have to check all their edges. The algorithm in this tutorial shows how you can find the intersection between two line segments.

In this tutorial we address the mathematics (geometry) of steering and turning. How can we calculate the path our car follows when we turn the wheel? It is not that hard to calculate the exact line the car follows and even compensate for some sliding with the applications of simple physics laws.

#### 9. Collision detection

Collision detection is essential in a game, unless we are playing cards or chess.

#### 5. Speed and acceleration

One of the first things we realize in nature is speed. How fast things are happening or the objects are moving. As we grow we start to feel the acceleration of objects. The are moving faster or they slow down and stop...

Getting input from the keyboard under Windows is easy. The system notifies the application via the WM_KEYDOWN and WM_KEYUP messages. All we have to do is respond to these messages. We will insert some code in the window procedure and get the key that was pressed or released.

#### 3. Keeping track of time

Our perception of the world and events has to do with time. Everything happens at some speed and that is what we need. A car covers some distance at a specific time interval while a free falling object accelerates at a standard rate. Another thing is the processing speed of different computer systems...

#### 2. Simple OpenGL program

Create a simple application to use a basis for the rest of the tutorials.

#### 1. Random numbers

Create your own random number sequence. Read the simple tutorial and get on with it...