For our final project, we’ll be making an openGL video game. The game will be a first person, 3D maze, in which the player will try to navigate to the maze’s exit.
Team Members:
- Sonthaya Visuthikraisee, 26123016
- Julie Han, 26022682
- Varsha Ramakrishnan, 3031797029
PROBLEM DESCRIPTION
- The problem: creating a video game using OpenGL. We must:
- Simulate first-person interaction with a maze-like environment
- Simulate interaction with in-game objects and physical responses (walls, movement, jumping, objects that can be picked up and moved).
- Simulate camera movement (looking around the world) in addition to player movement. This involves mapping camera rotation to a control system, giving the player the ability to look around for collectibles, etc. One cool power up we were thinking of (as a stretch goal) was allowing the player to switch to bird's eye view.
- Add in light manipulation. For example, having a light that the player can pick up and move to shine on different objects, reflect off mirrors to hit unreachable areas, etc. One stretch goal for this would be having a light that can shine through objects; for exmaple, if a glass door is in the way, we might give the player the ability to shine their light at the door, making the door disappear.
- Stretch goal: maze generation to create the world and objective.
- Why is it important:
- Simulate traversing through and interacting with an environment with changing illumination, in real time, is the basis behind all video games. The ability to do this accurately and efficiently is vital to rendering for video games.
- Challenges:
- Simulating physics between 3D objects with OpenGL and C++
- Simulating lighting of the game world and reflecting it off of objects, as well as tracking where it lands to progress in the game.
- Solultions:
- Add up forces, divide by mass, and multiply by time step to get the change in velocity, and multiply by the time step again to get the change in position.
- Treat the light ray as both a light source for illumination and an object, and use the laws of reflection and refraction to calculate where the light will travel in the game world.
GOALS AND DELIVERABLES
- We expect to create an interactive demo of a maze-like world, rendered in real time, so that players can move around with a first-person viewpoint and interact with objects in the world. There should also be a light source that players can manipulate to illuminate different surfaces.
- We hope to create a demo of a game that involves shining light through and off of objects in the game world and track where the light would hit in order to allow the player to move on to the next level of the maze.
SCHEDULE
- Week 1:
- Learn OpenGL
- Create a simple world that we can move the camera in
- Set up walls and player movement
- Start adding physics collisions
- Week 2:
- Refine the world physics
- Add in lighting effects and object textures
- Create a light source that can be moved with the player and that shines forward like a laser and not diffuse
- Add in a method for tracking where the light ends up/ reflects off of
- Week 3:
- Refine player-maze interactions
- Work on additional effects and reflections and refractions
- Week 4:
- Finishing touches and extra mechanics
- Writeup
RESOURCES