CSCI 441 - Computer Graphics

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

This assignment is due by Wednesday, September 20, 2023 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).

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

  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 involved 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 is an Arcade page 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 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:


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, CMakeLists.txt, 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 WEDNESDAY, SEPTEMBER 20, 2023 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


When you are completed with the assignment, zip together your source code, CMakeLists.txt, and README.txt into a folder named src/ plus include your www/ folder. Name the zip file, HeroName_SQ1.zip. Upload this file to Canvas under SQ1. The structure of your submission should look as follows:

This assignment is due by Wednesday, September 20, 2023 11:59pm to earn the achievement.