Space ship in 3D maze
Due Date: Friday November 17th 2006
Idea:
A space ship trapped in a giant space station must navigate
a maze of tunnels to escape before the space station explodes.
Physics:
- Ship is a rigid body with volume and mass
- Ship moves at constant velocity when not using thruster (i.e. Newton's law of inertia holds)
- Ship has a rear thruster to boost speed; thruster, when
activated, gives a constant acceleration.
- Ship uses thrusters to steer ship. These thrusters also
give constant acceleration for a short duration. You may
place up to 12 lateral thrusters on your ship, in locations
of your choice. You may also pre-program thruster combinations.
- The rear thruster is expected to be much more powerful
than the lateral thrusters
- Ship responds elastically when it collides with maze walls (i.e. Like a billiard ball)
Collision Detection:
- Ship's collision model is a cylinder
- Collision detection is done with GJK
Rendering:
- View from ship's cockpit as main interface
- Walls of maze are textured
Core:
- Take user input from keyboard (or mouse) to steer ship and enable ship boosters
- Save user input to a file
- Replay user input from file to get same results
- In other words, there are 2 input methods, direct-human or a 'replay' file
- Must detect when ship has gotten to exit
- Must count down time before space station explodes
- Must announce win or loss
Scenarios: You need to create 2 scenarios.
- The scenario consists of the maze geometry,count down time,ship start position,maze end position
Submission Requirements:
- README file containing notes on what libraries you used and how to get them (if not included)
- README must include instructions on how to use the game
- REFERENCE file containing notes on what references you used. This includes books, web pages, discussion with friends, etc. This is an 'engineering journal'.
- Makefile or build script or detailed instructions on how to compile
- Source code
- Sample user input files for both scenarios
- Must be submitted as a single file (zipped or gziped archive).
Notes:
- Maze geometry must be scaled so that things look/feel 'right'
- Default velocity and thruster speed scaled so that things look/feel 'right'
- Must run on either Linux or MacOSX using OpenGL.
- Each student does own assignment (no group work this time).
- Any programming language can be used
- Recommend using pre-written linear algebra and ordinary differential equation integration libraries
Hints:
- For the human controls, use thruster combinations, not access
to single thrusters
- Also, have pre-programmed motion-reversing thruster combinations
(ie to rotate for a while, then stop your rotation); doing
this manually is very difficult!
- You might consider having a way to decelerate too
Bonus: (implementing any/all of these features will be worth extra marks)
- 3rd person camera view
- Add force fields which switch on and off at various frequencies. When force field is on the ship can't pass through them. Force field is rendered as a translucent maze wall with different texture
- Optionally randomly generate start and finish points for maze geometry.
- Top down (2D) view (animation and 'complete path')
- More complex ship geometry than just a cylinder
- Implement gravity; in other words give the station
a (large!) mass. However, since you are inside this
mass, gravity will change depending on your location
- Huge bonus: implement other computer-controlled
ships in the same environment and weapons-systems on your
ship. Lasers are easy, but if you have gravity then all
sorts of interesting things can be done (mine fields, projectile
weapons, etc, etc).