Pursuit

Pursuit, a game for the sound assignment by Dmitry Portnoy, with code help from the SDL and opengl docs and the NeHe tutorials.

Goal

My intention was to create a simple game where the player had to follow some object. The challenge would be to not lose the object when it performed complicated maneuvers.

Method

My first step was to allow the player to move the camera in the style of many simple flight sims and to provide some terrain to serve as a reference point while the player flew. Creating a really simple scene of a city street was pretty straightforward. I created an Object class to keep track of the display list and transformations of each object to simplify the code in the draw loop. Creating flight sim-like controls was a bit tricky since I would need to update the player's absolute position no matter which direction he moved in. I tried using the opengl transformations to do this for me, but ended up using some hand-crafted code to transform the player's movement vector based on the direction he was facing. Once this was done, I created a sphere object and made it follow a simple path around the scene and kept track of the distance between the player and the sphere to determine if the player should lose.

Novelty

This game has many similarities to generic flight sims/racing games, but having to follow a different object very closely I think changes the game dynamics a lot. It encourages the player to anticipate the motion of the object. The game is really simple to understand, but it may take the player a while to master the motion of the object, if it's interesting enough.

Results

I played the game myself and definitely had fun playing it. The main weakness is the very simple path of the object. It's very simple to understand since it doens't perform any complicated maneuvers. Also, there is a huge difference in difficulty between following the object while it's going straight and following it as it makes a 90 degree turn. Following it around a turn is far more difficult and requires knowing when it will make the turn. Ideally, the object would make a circular turn that the player can detect and adapt to more easily. It would also be nice to have some meter so the player knows how close he is to losing the game. Maybe the ball could turn more red as the player gets farther away from it.