Decipede (Nintendo DS)
- Language: C
As a final project for one of my classes, I developed a Centipede clone for the Nintendo DS as part of a 4-person team. This project only lasted 2 weeks, and was developed using an official Nintendo DS development kit. The game played over both screens and supported movement using either the touch screen or D-pad. Despite the short project, we managed to add in support for all the original enemies (centipede, flea, spider, and scorpion), poisonous mushrooms, and switching between 10 of the original color palettes.
Shape Battle (Nintendo Wii)
- Language: C++
I developed a Geometry Wars-style space shooter as a final project for a class on console development. This was a solo project lasting 3 weeks and was developed on an official Nintendo Wii development kit. My game took advantage of two control schemes, one using the Wii Remote and Nunchuk for aiming and movement respectively, and the other utilized the GameCube controller and the more traditional two-stick controls. Despite the short project duration, the game featured audio, asynchronous file loading, multi-texturing, particle systems, and a menu system.
Curve and Spline Viewer
- Development Tools: C++, wxWidgets
This project allows the user to place and move input points, which can be used to draw a curve or spline using one of six methods. This project is used to help visualize the results of various curves and the effects the placement of the input points has.
For this project I implemented Bezier curves using de Casteljau's algorithm for nested linear interpolation, calculating the curve using Bernstein polynomials, and approximating it using midpoint subdivision. I also implemented parametric polynomial curves, cubic splines, and B-splines using De Boor's algorithm.
Shadow Mapping
- Development Tools: C++, OpenGL, GLSL
This project implemented shadow mapping and percentage closer filtering (PCF) for my Advanced Computer Graphics class. Using procedurally generated shapes to cast shadows, sixteen samples are taken for the soft shadows, and depths are packed into a RGBA buffer.
Environment Mapping
- Development Tools: C++, OpenGL, GLSL
This project implemented reflection and refraction mapping using cube maps. The scene contains an object in the center that reflects or refracts the skybox and other objects in the scene. Texture lookup in the cube map was done manually using the reflection or refraction vector.
A* Pathfinding
- Language: C++
I implemented A* pathfinding during my Artificial Intelligence for Games class using the provided graphics framework. A* was implemented using a weighted heuristic, which allows adjusting the search to act more like Djikstra or best-first. To improve the final path, I used rubberbanding as well as smoothing using Catmull-Rom splines.
Quaternion Interpolation
- Development Tools: C++, Direct3D 9, wxWidgets
This project shows various rotations being applied to a 3D model to showcase the benefits of quaternionic interpolation methods. I implemented the following interpolation methods:
- LinMatrix: Linear interpolation of two rotation matrices
- LinEuler: Linear interpolation of two sets of Euler angles
- Lerp: Linear interpolation of two quaternions
- NLerp: Same as Lerp, but the resulting quaternion is then normalized
- Slerp: Spherical Linear Interpolation
- Squad: Spherical Quadrangle Interpolation