A1: Physics Control

The goal of this assignment is to experiment with physics-based game mechanics.  Your task is to create a simple 3D game where your avatar is controlled by a Character Controller, and you are collecting objects under physics control.

The game should satisfy the following basic constraints. (But as usual, you can get bonus marks for going above and beyond the requirements).

  • The avatar should be represented as a combination of primitive objects (as the sample code in the github repositories), and should use transformations on these primitives to convey the state of the avatar. It should be different then the sample, however
  • There should be a large game space defined as a ground plane, and a collection of obstacles that require the player to jump over them.  Representing these with large rectangular objects is sufficient, as long as the player must jump over them
  • The player should have both single and “double jump” abilities
  • Double jumping is triggered when the player pushes the Jump key while the character is already in the air (i.e.: double jumping is triggered after two clicks on the Jump key). Only one double jump per jump is allowed.  The player’s motion trajectory should be visibly different during the single (first) and double (second) jump
  • The basic game requires the player to collect “objects” (represented by small primitive objects) that are spawned randomly throughout the play space.  Whenever one is collected, another is spawned randomly
  • Your game should have a start screen, a fixed time limit to collect objects, a score counter, and a high score displayed after the game ends

Your avatar should use the common WASD+space controls.   You should be able to turn and move in the air, although the effect of your input (rate of turn, change of speed) should be less pronounced than on the ground.

You should add reasonable sounds, both as background sound, and when game-world actions occur (jump, collision with walls and obstacles, collision/collection with the collectable objects).

You should have a high score, but it does not need to be remembered between plays of the game (i.e., each time you run the game, it can start at 0, and record the high score for that run of games).  If you want to record the high score between runs, you are free to do that.

You will submit your assignment by posting the working game on the blog, and submitting the code (as a zip file) and URL to your blog post to t-square.

Grading Scheme

  • 1pt – submitting properly
  • 1pt – avatar, ground plane, obstacles (scene setup)
  • 1pt – input working properly(wasd, space)
  • 2pt – physics based movement with character controller
  • 1pt – in-air movement
  • 2pt – collectible and respawning objects
  • 1pt – start screen, time limit, score/high score displays
  • 1pt – collision sounds, background and other sounds
  • 1pt max bonus – for going above and beyond