This assignment is due by 11/22/2024 11:59pm.
There is so much excitement around the park since the awarding of the Golden Ticket. Construction has now begun on your ride. You are pleased with the work thus far and begin to wonder when you need to complete the ride by. How soon until the park reopens? Maybe this is a question you should have asked sooner. No sooner does the thought leave your head that the woman who took your picture come running back up to.
Fabulous! I was hoping I'd find you here. We are getting ready to open the park and must begin publicizing the grand reopening. We've got a new mascot. Our Intern is all set to do the dance and bring people in to the park. This will surely get people talking! They'll be lined up to get in.
You're off to find the intern to help with publicity. While heading over, everyone starts rushing towards you in a tizzy! What could be the matter?
Quick! We must run! The Interns! They've commandeered all of the Mascot costumes and after us! They insist working for free is not what they signed up!
You think back and now recall that when you first arrived at Arda Land, the people working on the rides that were under construction were the Interns.
Our only hope is to escape the Park before they catch us! Hurry!
Part I - Get to the Gates!
You immediately join the fray of people scrambling to get out of the park. You pass your ride, the main attraction, everything you've worked so hard on the last two months. You wonder if you'll get to actually bring your family to the park to enjoy the rides, as you had as a child. And now you think
I've been here two months!? What is my family doing? Where are they? I need to find them!
As you near the gates you realize not only they are closed, they are chained shut. Attached to the gates is a note from Ilúvatar:
For this assignment, your goal is to design a basic 3D game. The two key components of the game will be to use a particle system and to 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 incorporate all aspects we have discussed this far. 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.
Extra Credit: The Mountains Are Calling: Consider using adding elevation to add some 3D movement to your characters. A carefully placed hill can obscure the view of where enemies are coming from or coins are located.
Extra Credit 2: Surface Deep: Consider using one or more Bézier Surfaces to create more interesting terrain. Everyone in your world must move on the surface.
As noted 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 by pressing space!) 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. 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 can look however you want.
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; or both take damage until their health reaches zero; or they merge into a larger Enemy (for the Spheres, the resultant MegaSphere could have a radius equal to the sum of the two merging Spheres). 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. This would be a good instance to create an overhead minimap placed in a viewport so the player knows where all the Enemies are coming from.
- 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 Hero once was able to. Collision detection should be performed against static objects to prevent this. Therefore the path of least resistance is to place no additional items in your World (but that's not as cool).
What the Hero and Enemies look like are up to you. What the World looks like is up to you. The World can be placed within a Sky Box to give everything a sense of where they are in the World. You are encouraged to add anything else we learned.
It seems your work in Arda Land is not yet done. You must face the Interns and inform them of the valuable life experience they are learning in lieu of pay. (Plus Ilúvatar wants the mascot costumes back before he fires them all.)
Part II - Website
Update the webpage that you submitted with MP to include an entry for this 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, you are expected 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 what 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 / email
- Assignment 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
- How long did this assignment take you?
- How much did the lab help you for this assignment? 1-10 (1 - did not help at all, 10 - this was exactly the same as the lab)
- How fun was this assignment? 1-10 (1 - discontinue this assignment, 10 - I wish I had more time to make it even better)
Grading Rubric
Your submission will be graded according to the following rubric.
Percentage | Requirement Description |
10% | Hero is user controlled and animated while moving. |
20% | There is a goal for the Hero to complete. |
15% | Enemies are animated while moving and move one step along their heading. |
15% | Enemies are attracted to the Hero and their heading is updated each frame. |
10% | Hero and Enemies can fall off the edge of the world. |
15% | Collision detection is performed between Enemies. |
10% | Collision detection is performed between the Enemies and the Hero. |
5% | Submission includes source code
and README.txt .Source code is well documented. Webpage named <heroName>.html submitted and updated with screenshot from latest assignment. Submission compiles and executes. |
Experience Gained & Available Achievements
Assignments +125 XP
|
Web +125 XP
|
The Mountains Are Calling
|
Surface Deep
|
???
|
???
|
???
|
Submission
When you are completed with the assignment, zip together your source code, README.txt
, and www/ folder.
Name the zip file, HeroName_A4.zip
. Upload this file to Canvas under A4.
This assignment is due by 11/22/2024 11:59pm.