Click on one of the links above for a description of that project. Please be patient as images and videos load on this page.
Built with a custom Python engine (only using external libraries tkinter for graphics and pygame for music) and markup language, this game tells the story of two individuals who are traveling to a sinkhole that threatens to consume their planet. Travel between towns, collect items, and solve puzzles to keep the plot moving.
This game was made for a UVA game design course and built with a homemade TypeScript game engine which targets HTML5 canvas. Two players control a red and a blue character on a horizontally split screen; the characters have special interactions with objects of their color. To progress through the level, players need to switch places with each other: communication is key!
One of the first games I worked on! I developed much of the code within MonoGame for a top-down RPG that's set in a high school; the end product is still a prototype, but some parts, such as the in-game menu UI, were thoughtfully implemented. Talk to NPCs with branching dialogue, perform quests to infiltrate cliques, pickpocket items from other students, and even fight a boss!
Made for the UVA computer science capstone, this project (developed by a team of 6) supports PauseLab's participatory budgeting efforts by providing a centralized place for ideas and project proposals related to community development, mass-mail, news posts, and votes. The website was constructed with Ruby on Rails 5 (with Bootstrap 4 and some Coffeescript on the front-end).
As the Student Game Developers' webmaster, I converted our website from a large set of static HTML pages to a dynamically generated collection on the LAMP stack. With the addition of a SQL DB and PHP templates, adding new content is as simple as inserting new rows. NOTE: The front-end design (which originates from a Bootstrap 3 theme) was done by my predecessor.
As the Student Game Developers' vice president, I created a wiki to document our senior members' knowledge on tools and workflows for our future members' benefit. Content is written in Markdown (a simple format) and is automatically converted to HTML (with the help of Pandoc and TravisCI) to render nicely on GitHub Pages.
Made for a UVA deep learning graphics course, this project adapts a neural style algorithm to create a visualizer that fluctuates between two styles based on the frequency content of the music that is playing.
Made for the UVA computer engineering capstone, this system (created by a team of 5) allows humans to play over-the-board chess against computers. The system is composed of a Reed switch circuit to detect human piece movements, a connection to a Stockfish chess engine to devise responses, and a motor-driven actuating magnet to execute those responses.
Made for a UVA machine vision course, this project uses LabVIEW and NI image processing libraries to allow a webcam to observe a chess game and automatically generate a log of moves made. To keep piece recognition robust, we use custom cut pieces that are easily distinguishable from overhead.
Made for a UVA embedded systems course, this project is modeled after the cyclone redemption game found in many arcades. It targets the Texas Instruments MSP430 microcontroller, and uses three different header boards: flash memory, 7-segment display and rotary encoder, and circular array of LEDs.
Made for a UVA signals and systems course, this project uses a printed circuit board to read electrical signals from one's heart and send them to the NI MyRIO for digital processing.