3D Lunar Lander
Due Date: Monday October 8th 2007
Idea:
You are to implement a 3D simplified version of
Lunar Lander (also available in flash), a game with a
long history.
You control a space ship which has one rear thruster and (arbitrary)
attitude control. You get limited fuel, and must land on a (spherical)
planet with a specific gravity constant(s).
Physics:
- Ship is a point mass
- Ship is steerable in all directions
- Ship has a thruster to affect speed (through acceleration)
- Gravity is the only external force on your ship
- The initial speed and attitude of your ship will not necessarily be in
a "straight line" with the planet
Rendering:
- View similar to those in Lunar Lander
- 2D view acceptable, 3D view preferable
Core:
- Take user input from keyboard (or mouse) to steer ship and enable ship booster
- 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
Scenario(s). You need to create the following scenario:
- Landing on the moon with initial position in orbit around
the moon (thruster pointing tangential) at distance of 2
lunar radius, and initial velocity so that orbit would be
maintained.
- Bonus: Landing on the earth - initial position is
geosynchronous orbit. You must simulate air resistance as well
as gravity
- Bonus: Landing on moon (like first scenario) but initial
ship velocity has the ship "spinning" in all 3 directions.
Submission Requirements:
- README file containing notes on what libraries you used and how to get them (if not included)
- Reference(s) file containing notes on what references you used.
This includes books, web pages, discussion with friends, etc. This
is an 'engineering journal'. [can be appended to README]
- Makefile or build script or detailed instructions on how to compile
- Source code
- Sample user input files for your scenario(s)
- Must be submitted as a single file
(zipped or gziped archive).
Notes:
- Thruster strength must be scaled so that things look/feel 'right'
- You must use the Moon's actual mass in your physics. The actual characteristics
of the Lunar Module might be useful in setting some thruster parameters.
- 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
Marking:
- 80% physics, 20% rendering/playability
- Good "software engineering" of the physics engine will be
marked as part of the 80%
Bonus: (implementing any/all of these features will be worth extra marks)
- [See above for scenarios]
- Any extra controls, graphics (especially 3D) will be worth more
- Bumpy terrain (like the original lander game)