This was an online multiplayer card game built in Java using the libGDX framework. It was developed over the course of six weeks by a seven-person team for a software engineering class. The game replicates the fast-paced mechanics of the real-life card game. It was hosted on a live server for a time but has since been taken down post-submission.
Draw the Way is a 2D puzzle-platformer developed in Unity over four sprints by a two-person team. Players can draw directly on the screen to create physical objects like platforms, laser-reflecting mirrors, and portals to reach the goal. Set in a sketchbook world, the game doesn't take itself too seriously — and that's part of the charm. The aesthetic is playful and players are free to draw whatever they like, often leading to funny situations. The game features three main levels, each with a finish line goal, and all drawings persist unless the level is restarted. (Though, they may be displayed after beating the game.) The game is complete and available on itch.io.
This was a solo C++ project built over four labs for a game programming course. Implemented in a custom engine using SDL and OpenGL, the game replicates core mechanics from Portal, including recursive portal rendering, energy pellet puzzles, turret AI, and a VO system with subtitles. It features first-person movement, physics-based platforming, portal teleportation, and environment interaction via raycasting and collision detection.
Implementing quaternion-based portal orientation, player teleportation with forward vector transforms, and dynamic portal view matrices required a strong grasp of linear algebra and careful debugging of edge cases. While it followed the specs, executing every system offered valuable hands-on experience with real-time rendering and gameplay programming.
This project implements a heightfield renderer using OpenGL and GLSL shaders. A grayscale JPEG image is interpreted as terrain elevation data and rendered in various geometric modes, mainly points, wireframes, and solid triangles. The user can rotate, scale, and translate the terrain interactively, and toggle between rendering modes using keyboard input.
In addition to standard rendering, a custom vertex shader provides a smoothing mode that averages each vertex with its neighbors and applies a height-based exponentiation and rescaling. The user can control these smoothing parameters in real time with key bindings. Vertex positions and their neighbors are passed in as vertex attributes using separate VBOs.
This is a 3D roller coaster simulation using Catmull-Rom splines and shader-based OpenGL rendering. The track is defined by a sequence of control points loaded from external spline files, and a camera smoothly animates along it in a first-person view. The roller coaster rail is rendered as a geometric mesh using triangle strips and shaded with a Phong lighting shader. Simultaneously, the scene includes a textured ground plane rendered with a second shader, demonstrating multi-shader rendering in a single OpenGL scene.
This is a basic CPU ray tracer capable of rendering 3D scenes composed of triangles and spheres with lighting and shadows. The ray tracer supports Phong shading, interpolated vertex normals, per-light visibility via shadow rays, and global ambient lighting. It renders still images at 640×480 resolution using a camera with a fixed field of view. The entire pipeline was implemented on the CPU without shaders or OpenGL rendering logic, apart from final image display. This project demonstrated core principles of ray casting, geometric intersection, and physically based lighting models.
Over the course of the semester, this project involved building a simple 3D game engine in C++ using Direct3D 11. The engine supports textured 3D objects, z-buffering, real-time lighting, animations, models, collision detection, and post-processing effects like bloom. Each lab built incrementally upon the previous one—starting with triangle rendering and culminating in environment interaction and effects rendering. Multiple shader programs were implemented in HLSL, including mesh shaders, normal mapping, and lighting models.