CSE 40166 / 60166 - Computer Graphics

|    Home  |   Syllabus  |   Assignments  |   Schedule  |   Resources   |

Homework 6 - Collision Game

This assignment is due by November 13, 2012 by 11:59pm.


Part I - Human vs Zombies

For this assignment, your goal is to design a basic 3D game. The two key components of the game will be using a particle system and perform collision detection. The exact goal for the game is up to you to decide. The exact design and visual look is up to you as well, but you should be encouraged to to incorporate all aspects we have discussed this far. Extra points can be given for visually pleasing submissions. At a minimum, your game should have the following features:
  • The World - The Hero and the Enemies should be moving around the world. The world should consist of a 2D plane but have a defined boundary. As seen below, it will be possible for the characters to fall off of the world.

  • The Hero - The Hero shall be under the user's control. The user can move the Hero around the world (probably by using the wasd keys, maybe he/she can jump too!) and there should be some goal the Hero is trying to complete (visit every square of the world, collect coins, pass through hoops, etc). It is possible for the Hero to fall off the edge of the world. If this occurs, then the user falls to their death (feel free to animate the death scene, they spin and rotate as they fall and then splat! hint: particle system?). The Hero should be animated as they move, similar to the vehicle assignment. The Hero can look however you want.

  • The Enemies - There will be N Enemies spawned around your world. The Enemies will represent a particle system, so it could be possible for more Enemies to be spawned over time if you desire. The Enemies will exhibit some very special properties. First, each Enemy has a given heading denoted by the direction they are facing. Every frame the Enemies move one step forward along their heading. As the Enemies move, they should be animated as well.
             The Enemies are also attracted to the Hero and are constantly trying to capture the Hero. In addition to moving along their heading, every frame the Enemy's heading should be updated to be one tick closer to being aligned with moving towards the Hero. (To accomplish this, calculate the vector from the Enemy to the Hero. If the Enemy's heading is aligned with this vector, then do nothing. If they do not agree, move the Enemy's heading one angled step towards the Hero vector. This will cause the Enemy to move along an arc until they are facing the Hero.)
             In addition to the Enemies simulating a particle system and being attracted to the Hero, collision detection must be performed between every Enemy and between the Hero as well. If two Enemies as they are moving collide, then they should react accordingly. Either they bounce off of each and each has their headings updated to reflect the collision (as if two billiard balls collided); or one of the Enemies dies and the other has its heading reflected. Also, if an Enemy collides with the Hero then the Hero should take damage, or be killed, or something should happen. The exact details of what happens is up to you. Lastly, it is possible for an Enemy to fall off the edge of the World just as the Hero does. Feel free to animate the death scene as well.

  • Objects in the World - Feel free to add additional objects around the World. However, if there is a tree or building in the World, the Hero or an Enemy should no longer be able to pass through the objects as the vehicle once was able to. Collision detection should be performed to prevent this.
What the Hero and Ememies look like are up to you. What the World looks like is up to you. The World should be placed within a Sky Box to give everything a sense of where they are in the World. You are encouraged to add sound, an overhead mini-map of where all the Enemies are located, etc.


Part II - Website

Update the webpage that you submitted with HW5 to include an entry for this homework assignment. As usual, include a screenshot (or two) and a brief description of the program, intended to showcase what your program does to people who are not familiar with the assignment.


Documentation

With this and all future assignments, we expect you to appropriately document your code. This includes writing comments in your source code - remember that your comments should explain what a piece of code is supposed to do and why; don't just re-write the code says in plain English. Comments serve the dual purpose of explaining your code to someone unfamiliar with it and assisting in debugging. If you know what a piece of code is supposed to be doing, you can figure out where it's going awry more easily.

Proper documentation also means including a README.txt file with your submission. In your submission folder, always include a file called README.txt that lists:
  • Your Name / netID
  • Homework Number / Project Title
  • A brief, high level description of what the program is / does
  • A usage section, explaining how to run the program, which keys perform which actions, etc.
  • Instructions on compiling your code
  • Notes about bugs, implementation details, etc. if necessary


Grading Rubric

Your submission will be graded according to the following rubric:

PercentageRequirement Description
5%World is placed within a Sky Box.
10%Hero is user controlled and animated while moving.
20%There is a goal for the Hero to complete.
10%Enemies are animated while moving and move one step along their heading.
5%Hero and Enemies can fall off the edge of the world.
10%Enemies are attracted to the Hero and their heading is updated each frame.
15%Collision detection is performed between Enemies.
10%Collision detection is performed between the Enemies and the Hero.
10%Entire World has additional objects, made up of multiple materials, lights, textures, etc. It should look good. A more than minimal effort should be made to have the scene be visually pleasing.
5%Submission includes source code, Makefile, and README.txt.
Source code is well documented. Webpage named <afsid>.html submitted and updated with screenshot from latest assignment. Submission compiles and executes in the lab machine environment.


Submission

Please update your Makefile so that it produces an executable with the name hw6. When you are completed with the assignment, submit the source code, Makefile, and READEME.txt to the following directory:

/afs/nd.edu/coursefa.12/cse/cse40166.01/dropbox/<afsid>/hw6/

Similarly, title your webpage <afsid>.html (e.g. jpaone.html) and submit it to:

/afs/nd.edu/coursefa.12/cse/cse40166.01/dropbox/<afsid>/www/

Place any screenshots or other images used on the webpage in:

/afs/nd.edu/coursefa.12/cse/cse40166.01/dropbox/<afsid>/www/images/

This assignment is due by November 13, 2012 by 11:59pm.