CSC 471 Final Project
Carl Taylor

 
Download executable:
Windows 32-bit

Overview:

This program is a simple driving game. The user drives a vehicle around a small world with obstacles and scenery. There is currently no objective; this is meant to be an exploration of graphics techniques rather than an engaging video game. This could, however, be used as a codebase for a driving game.

Features:

·         Hierarchical models – All models are hierarchically drawn

·         Scenery generation – Grass blades, bricks and stars are randomly generated and displayed via hierarchical models

·         User input – The user controls the acceleration and steering wheel angle of the vehicle

·         Camera control – The camera follows behind and above the car as it drives around the world. The camera may also be pitched up and down

·         Lighting – The sun lights the scene when it is up; when the sun is down, the light changed to reflect this

·         Rigid body animation – The wheels of the vehicle turn smoothly to reflect the amount that the vehicle is turning. Additionally, the sun and the stars move as time passes

·         Color interpolation – As the sun rises and sets, the sky’s color is interpolated over three phases to reflect the daytime, sunset, and sunrise

·         Physics simulations – The vehicle has acceleration and a momentum that propels it along the path determined by the rotation of its front wheels

·         Plane-based collision detection – The vehicle observes collision detection with both the trees and the walls. Tree collision is detected by the plane of the vehicle’s sides crossing a tree’s origin, and wall collision is detected by the plane of the walls being crossed by one of the four corners of the vehicle

Controls:

click and drag – pitch camera up and down

w – accelerate forwards
s – accelerate backwards
a – turn left
d – turn right
e – apply brake

r – toggle star rotation (will not be smooth)

 

Other notes:

This code is awful and should be broken up into many, many different files. This project’s purpose was exploration, and if I were to do this again I would organize it much differently.

Collision detection has some occasional problems as well. Sometimes when “pushing” into a tree for a bit, the front end of the car will actually pass through the tree.

Screenshots:


The opening view.

 


Night.

 


Sunrise.

 


Collision! Oh no!

 


Bricks colors and depth variations are randomly generated at the beginning of runtime.

 

References:

http://gamedeveloperjourney.blogspot.com/2009/04/point-plane-collision-detection.html
VERY HELPFUL plane-based collision detection tutorial

http://en.wikipedia.org/wiki/Momentum
Momentum refresher

http://www.batesville.k12.in.us/Physics/PhyNet/Mechanics/Circular%20Motion/turning_a_car.htm
Physics of turning cars