Realtime Rendering
Assignment 2
Assessment: 50%
Deadline: Wed 12/10/2011 1:30pm
Deadline: Fri 14/10/2011 1:30pm
Deadline: Fri 14/10/2011 9pm
Clarifications and Corrections
Mon Oct 10
-
Clarified other libraries: glut for text rendering, OpenAL
Thu Oct 6
-
Extended deadline to end week 12. Removed demonstrations.
Fri Sep 30
-
Clarified that polygon intersection tests are to be performed
after AABB intersection tests indicate hit.
Mon Sep 19
-
Deadline Wed week 12 of semester. Corrected date.
-
Clarified AABBs for convex polyons.
-
Clarified extra key bindings - those additional to the ones in
the base code - to be chosen by implementors.
Aims
This assignment is intended to have students learn about
collision detection, spatial data structures and game physics.
Problem Description
'Breakout' was an Atari arcade game in the 70s. Since then many
variations on the same basic idea have appeared, such as
Arkanoid, and more recently Shatter.
The assignment is to implement a 2D version of Breakout,
starting with a level of circular and rectangular bricks, a
rectangular playfield, a single paddle and a single ball. Then
a progression of enhancements.
-
Include convex polygon 'brick' shapes. To improve collision
detection time use axis aligned bounding boxes (AABBs), and
if only perform the more expensive polygon test when
needed. For debugging and testing have a switch which shows
the bounding box outline, including highlighting it in a
different colour when using it in a test.
-
Include different playfield and paddle shapes, e.g. circular
playfield and arc paddle.
Add more gameplay interest/creativity, e.g. different brick
patterns/formations/waves/levels, multiple balls, power ups,
special effects such trails etc.
-
Use a grid spatial data structure for collision detection
acceleration. Include the ability to switch the use of the
data structure on and off, and a switch to display or output
the time taken to perform collision detection. (Note that
for this game, collision detection is not likely a bottle
neck).
Use C/C++, OpenGL and SDL (not glut, except possibly for text
rendering), and possibly other libraries such as OpenAL.
Include in your program the ability to 'pause and step'
execution at key times, for example, when performing collision
detection. Also include the ability to slow the ball speed by
doubling/halving. Choose your own key bindings.
The assignment may be done in pairs.
Marking Guide
| PA |
circles and rectangles |
| CR |
convex polygons with AABB bounding boxes |
| DI |
circular playfield and paddle, other gameplay enhancements |
| HD |
collision detection acceleration
|
Note: this is a guide only. Marks will be awarded/deducted
depending on coding quality, algorithms and approaches used,
handling of 'corner' and special cases, and creativity shown.
A brief readme explaining features and key bindings is required.
No demonstrations this year.