This assignment is due by September 16, 2019 by 11:59pm to earn the achievement.
Part I - 2D Video Game
For this Side Quest, you will create an OpenGL 2D animated video game. With only the tools needed
for the second assignment, it is now possible to make some complex and amazing looking video games. Many classic
games are on a 2D platform, from Pong and Asteroid to Super Mario Bros and Tetris. Your task is to create a 2D
video game (it can be a new idea of your own or you can re-implement a favorite). For inspiration you can visit
Kongregate, I'll recommend Amorphous+.
There are several elements that must be present in your game:
- Your scene must be drawn using OpenGL 2D primitives, at least one of which is solid.
- Your game must be animated.
There should be some form of constant animation. (We are not implementing Zork.)
As with Assignment 2, when the user is not interacting with the game there should still be some animation occurring.
- Your game must accept input from the keyboard and the mouse.
Be sure to explain in the README.txt what the different keys and mouse do. A new player should be
able to read this file and start playing the game right away. As with A2, the position of the mouse
must be incorporated into the controls. For instance, the mouse may be used to aim a missile
launcher and clicking shoots a missile. It is typically standard for the w, a, s, d keys or arrow
keys to be used if moving a character around the screen. Lastly, the ESC key should exit you game.
- Your game must have an incentive/reward/goal/target.
In most games this is Points, but it doesn't need to be, many racing games have a fastast lap record. Your game
must have a goal that the player is striving for. Why is the user playing your game? What are they trying to
accomplish?
- Your game must have a conflict which attempts to hinder the user from achieving the incentive/reward/goal/target.
There should be an antagonist present that is attempting to prevent the player from completing their given task. This does
not need to be complex! There does not need to be a multilayer AI playing for the computer. Think of the asteroids in Asteroid,
they have a direction they move along and if they hit the ship, you lose a life. Or in Tetris the blocks can only move
until they hit another block. More details about the conflict are given below.
- It must be possible to lose your game.
Oddly enough, it is not always fun to play a game that is "broken" and is instantly beatable. If the conflict in
your game occurs often enough, then the game should end. This does not necessarily need to be a health
system (number of lives, Health Points, etc.). Perhaps a task needs to be completed in a certain amount of
time. Whatever method is used, make sure this information is available to the user so they are aware of
if the end is near. When a player loses a game, they now have an additional incentive to play again and better
their score or get further into the game.
It is up to you to determine the format and structure of your game. The graphics invovled do not need to be
complex either, the focus is not on the design or modelling of each object in your scene. Instead the focus
should be on the interaction between the player and the game as well as the gameplay. Once the above criteria
are satisfied, then feel more than free to make your game look as cool as possible.
After all games have been submitted, there will be a 2D Games download page where everyone in the class will be able to
download and play your game. We will track high scores across the various games.
The only winning move is not to play.
Part II - Website
Update the webpage that you submitted with A2 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 expeced 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 / HeroName
- 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
To earn the achievement, your game must exhibit these qualities:
- At least one object is drawn using OpenGL 2D primitives and at least one is solid and drawn in hierarchical fashion.
- Game is animated.
- Game accepts input from the keyboard and the mouse. The position of the mouse affects the input response.
- Game has a clear incentive/reward/goal/target.
- Game has a clear conflict that makes the incentive/reward/goal/target difficult to achieve.
- Game can be lost.
- Submission includes source code, Makefile, and README.txt. Source code is well documented. Webpage named HeroName.html submitted and
updated with screenshot from latest assignment.
- Submission compiles and executes.
IN ADDITION: IN ORDER TO EARN THE ACHIEVEMENT, THIS SIDE QUEST MUST BE SUBMITTED PRIOR TO SEPT. 18, 2017 11:59PM. LATE SUBMISSIONS WILL BE
ACCEPTED AND ADDED TO THE GAME PAGE, BUT THE ACHIEVEMENT WILL NOT BE AWARDED FOR A LATE SUBMISSION.
Experience Gained & Available Achievements
Web +50 XP
|
Pong Master
|
Submission
Please update you Makefile so it produces an executable with the name sq1. When you are completed with the assignment, zip together your source code,
Makefile, README.txt, and www/ folder. Name the zip file, HeroName_SQ1.zip. Upload this file to Canvas under SQ1.
This assignment is due by September 16, 2019 by 11:59pm to earn the achievement.
|