CSCI 441 - Computer Graphics

Fall 2016 - Side Quest 1 - All Your Base Are Belong To Us



|   Home |  Syllabus |  Assignments |  Leaderboard |  Schedule |  Resources   |
This assignment is due by September 14, 2016 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:
  1. Your scene must be drawn using OpenGL 2D primitives, at least one of which is solid.

  2. 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.

  3. 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.

  4. 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?

  5. Your game must have a conflict which attempts to hiner 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.

  6. 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 pag where everyone in the class will be able to download and play your game. We will track high scores across the various games.

2D Game
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:
  1. At least one object is drawn using OpenGL 2D primitives and at least one is solid and drawn in hierarchical fashion.
  2. Game is animated.
  3. Game accepts input from the keyboard and the mouse. The position of the mouse affects the input response.
  4. Game has a clear incentive/reward/goal/target.
  5. Game has a clear conflict that makes the incentive/reward/goal/target difficult to achieve.
  6. Game can be lost.
  7. 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.
  8. Submission compiles and executes.
IN ADDITION: IN ORDER TO EARN THE ACHIEVEMENT, THIS SIDE QUEST MUST BE SUBMITTED PRIOR TO SEPT. 14, 2016 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 Attribute
Web +50 XP
Pong Master
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 Blackboard under SideQuest1.


This assignment is due by September 14, 2016 by 11:59pm to earn the achievement.
Last Updated: 01/01/70 00:00


Valid HTML 4.01 Strict Valid CSS! Level Triple-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0