Program 4: bringing it all together

Due: by final exam time Monday, December 14th

Submission: Submit your assignment using Wolfware Classic. Remember that 10% of your assignment grade is for correctly submitting your work! For more information about how to correctly submit, see this post on the class website.

Goal: In this assignment you will apply what you've learned of basic Web/OpenGL and GLSL to build a simple game.

Our suggested game is a 3D version of Q-Bert. If you are not familiar with the game, you can play it online here or here, view some historic gameplay here, and find more information about the game at its Wikipedia entry here. There are also many other sources online.

If you would rather implement a different game, you may do so, providing you obtain instructor's approval before you start. To obtain that approval, send an email to Dr. Watson (and copy our TA Adam) with a short description of your proposed game and begin a dialog. Small teams are also acceptable, but the scope of the project must increase to match. Again, obtain approval from your instructor.

All graphics functionality of this assignment must be completed using a rasterization API (WebGL or OpenGL). Your assignment will be evaluated as follows:
  • 10% Properly turned in assignment.
  • 15% Create the basic board. Models should be 3D, though the projections may be orthogonal. 
  • 25% Create the player's QBert character. A simple 3D box will do, though more interesting is better (use my face if you like)! Some models are here. Make sure QBert can move in four directions, including off the board, with keyboard or mice. As QBert moves, the board's squares should change color. No need to animate the movement of QBert at this point, just show it first at one square, then another. You need to create only one life for the moment.
  • 30% Create the creatures. There are three basic types early gameplay. The creatures should move randomly across the board, and should not fall off. Some creatures move differently from others,  (e.g., one jumps "on the side" of the board). 
  • 10% Create the spinning disks. You need not animate the disks spinning, or their motion transporting QBert to the top of the field.
  • 10% End the game when the entire board has changed color. No need for multiple levels at this point.
  • Participation credit: You can receive participation credit (outside of this assignment) for posting your resulting imagery and video, good or bad, on the class forum!

General Notes (read carefully!):
Since variation is encouraged, make sure to include a README file. You will demo your game in class during the final period as part of the turn-in process. We will have a small voluntary contest, in which you demo your game in front of class. The top three will receive retro (i.e. old) games as prizes!

Additional Turn-in Requirements:
Unless you request us not to, we will be hosting some of your games for the public to see and play. For this reason, in addition to normal turnin requirements, please also deliver:
  • description: of your game in four sentences or less. If you don't want your game visible to the public, state so here.
  • thumbnail: 100x100 image representing your game.
  • screencast: video representing walking us through your game within a few minutes. I recommend Google Hangouts for capture straight to YouTube. Important: for file size reasons, do not include the screencast video in your Wolfware submission! Instead provide a link to the video (download or YouTube) in your README file. 

How Your Assignment Will Be Invoked (read extra carefully!):
Unlike previous assignments, your game is not required to implement specific command line or query string parameters. You are free to hard-code paths to load models, textures, and others assets your game requires.

JS / WebGL:  the browser will be run with --disable-web-security in order to allow cross origin requests. We will run your assignment using:


C / OpenGL: We will run your assignment using:


Extra Credit :
Extra credit opportunities include the following:
  • 5% Animate QBert. Describe a nice arc during motion, change QBert's shape a bit.
  • 5% Animate creatures. Describe a nice arc during motion, change creature shape a bit.
  • 5% First person QBert. As QBert moves, follow his movement using camera.
  • 5% Multiple lives. More than one life for QBert. Show the number of remaining lives.
  • 5% Event Sound. On certain game events, e.g. game start, movement, etc. Some QBert sounds are here and here, but feel free to use your own.
  • 5% Add at least one additional creature, if you have enough levels to reach them.
  • 5% Multiple levels. When all board squares change color, a different board is presented to the player. Show the number of the current level.
  • 5% Level transitions. Between levels, there is a cool animated transition to the new level.
  • 5% Enable Scoring. You can choose any scoring scale you want. Display the score.