MirrorBeam

MirrorBeam, a game for the 'viewpoint' assignment by Evan Mullinix, code help from the OpenGL programming guide and ported camera transformation math from 15-462 starter code originally designed by Eric Butler, Zeyang Li, Kristen Siu and Frank Palermo.

Goal

I wanted to design a game to test the 3d spatial sense of the player under somewhat time limited circumstances, by giving them extremely free range of camera motion (provided they do a little bit of toying around).

Method

First, I ported a movable camera class from the openglut application we used in graphics to sdl and applied the camera control transformation math used in that application to it. Next I went about designing shapes to go in the environment and setting up lighting in OpenGL so they would render correctly. Originally this game was going to require a user to bounce a reflecting beam off of as many objects as possible, but the game proved extremely difficult on the player to even manage two bounces so I changed up the premise. Then I implemented a test to see if objects were still in the camera view and a scoring system for the game. To finish, I added a few touches like an instruction screen and more finely calibrated the field of view test.

EDIT: My attempts to add an instruction screen failed. I cannot figure out why code that I literally copied and pasted from the last to projects is not loading textures anymore. Anyway,

the objective is to keep as many shapes as possible in the middle of the camera view for as long as possible. Holding down left click and moving the mouse moves the camera and the shift and control keys both act as modifiers to alter this movement. Holding down the middle mouse button zooms.

Novelty

This game gives the user a very free range of camera motion, with the ability to adjust the position, roll, pitch, yaw and zoom of the camera. However, they also have a limited time to think about how they will exercise this freedom as the objects move slowly out of the field of view.

Results

My game works fairly well as long as the user does not figure out how to zoom using the middle mouse button. The game starts with the objects being very easy to keep on the screen and slowly reaches a point where it helps a great deal to utilize the control and shift modifiers to access different types of camera motion. It's disappointing that my original beam bouncing game had such a low playability. If you are looking for it, it's fairly obvious that this control system and some of the methods in the code were originally meant for something else. The atmosphere of this game could be improved some with some mellow music to play during the game to add a little bit more fullness to the world. It feels pretty plastic and empty with just a black background and some polygons. Some new polygons with interesting textures mapped onto them would also help vary the user experience for increased replayability.