CS 488 Computer Graphics - Assignments and Project (Click image to download my Shootout game or here to see screenshots)

September 2005 - December 2005: All of the following assignments were completed using C++ and OpenGL. The Raytracer and Hierarchical Modeller also used Lua scripts in order to import scenes and models.

  • Project:
    • Created a 3D hockey shootout game for my graphics final project using OpenGL with a C++ backend
    • Ice surface and glass reflections, texture mapping, key frame animations, cloth simulation to model movement of the net
    • Modelled players using Blender and 3D Studio MAX, then imported using MD2 file format.
    • ice surface perfectly scaled to resemble an actual rink
  • Raytracer:
    • Simulates lighting effects by tracing "rays" of light from the eye to light sources.
    • Spheres, Cubes and polygonal meshes implemented
    • Diffuse and specular (Phong) lighting, shadows, reflections, bounding volumes
  • Hierarchical Modelling:
    • Created hierarchical "puppets" from transformed sphere primitives.
    • Able to manipulate joint angles of puppet and rotate entire puppet
    • OpenGL picking, undo/redo stack
    • z-buffer, backfacing, frontfacing hidden surface removal can be toggled on and off.
  • Graphics Pipeline:
    • Modelling and Viewing transformations
    • perspective and homogeneous coordinates
    • 3D line/plane clipping (viewport clipping)
  • Rotating 3D Tetris game:
    • U-shaped well that can rotate 360 degrees in every direction and scaled.
    • falling 3D blocks that follow rules similar to the popular 2D game "Tetris"
    • variable game speeds, modes (wire-frame, multi-colouring), single/double buffering

CS 446 Software Design and Implementation - Voice over IP System

December 2005: This month long team project (four individuals) was the major coding project of my three software engineering courses. This fully functional, multi-threaded VoIP phone system consisted of four major modules and was based around a MySQL database. This distributed system was able to have all processes be run at different locations, as everything was managed using sockets and ip addresses.

The major modules of the system included:

  • A complete administrative system that handled customers, calling plans, hardware tests, bills, system settings, etc...
  • A bill processor that calculated bills each day based on an account's billing date.
  • A call processor that handled connections between phones and acted as the intermediate between the actual phones and the data stored in the database.
  • Phone processes that represented everyone phone in the system. Contained the logic for all situations a particular phone could encounter.

Sphere in Box Demo (Click image to download application or here to see screenshots)

June 2005: This was my first attempt at creating anything using OpenGL. This idea came to me almost immediately when I was thinking of what to do for my first project. This turned out to be more difficult than I first expected. 3D collision detection involving rotating objects is one tricky business! I wrote this with a C++ backend.


  • Translucent Cube with a solid sphere bouncing around inside of it.
  • Collision detection using ray tracing technique (not perfect yet).
  • Uses Euler's method to estimate the ball's location.
  • Uses display lists to save on processing time.


  • Left/Right Arrow - Rotate y-axis of box
  • Up/Down Arrow - Rotate x-axis of box
  • Page Up/Page Down - Translate z-axis of camera
  • Esc - Exits the program

Metroid Clone (click image to download application or here to see screenshots)

Late Oct. 2004: This was my first attempt at writing a 2D game engine. I wrote this using Simple DirectMedia Layer (SDL) and C++ (.net). This engine is not complete and many aspects are still unimplemented. This engine is currently being rewritten (see below).
Updated March 5, 2006: Fixed some glaring bugs.


  • 2D Side scrolling game engine.
  • Uses sprite system for animations and backgrounds.
  • Bullet-to-Enemy collision detection using reduced rectangles to provide more accurate collisions (Samus-to-Enemy collision is implemented but is commented out at the moment).
  • Sound effects and music done with SDL_Mixer.
  • Basic Joystick controls implemented but bugs with movement.
  • Random enemy speeds, render locations, life and movement (straight or curved).
  • Thanks to Tommy Lee for creating the sprites.


  • SPACE - shoot
  • Left Shift - jump
  • Left Ctrl - Run
  • Left direction arrow - walk (run slow) left
  • Right direction arrow - walk (run slow) right

New Metroid Clone (Click image to download application or here to see screenshots)

Dec. 2004: This was my second attempt at creating a 2D game engine. This engine is still in progress and is not nearly complete. I decided to re-write my first engine using a Tile-based system. I wrote this with SDL and C++ as well. The basic level editor is the only thing that is currently useable. The other sections of this game are partially implemented but not yet playable.


  • 2D side scrolling game engine.
  • Uses sprites system for animations and backgrounds.
  • Tile-based system.
  • All of the features mentioned in the "Metroid Clone" project are also included.



All Nintendo characters and music are copyrighted © 1997-2005 . These are for my own education and not to be sold.