My Projects

shutterbuds

shutterbuds game art

Project Overview

This multiplayer photography games allows players and their friends to explore a beautiful environment and interact with the local fauna. Take pictures of funny creatures and interesting landmarks to fulfill quests and earn rewards.

Technical Highlights

  • Camera detection for storing landmarks and creatures
  • Additive quest system that easily allows designers to add and change up quest requirements
  • Fully functioning creature AI
  • Xbox controller support
  • Fully networked multiplayer

Development Challenges

One of my main challenges early on into the project was developing the camera detection. As it was a core part of our game, it was integral to get exactly right. Making the general raycast for detecting objects was the easy part. Going back and checking if those objects were fully in frame of the camera was the hard part. I ended up making muliple diagrams in MS Paint to help me visualize the camera's frustum and how to know when something is not fully encompassed in it. I ended up comparing the actor's position in terms of the camera's forward vector to the camera's field of view to get the effect I wanted.

My Contribution

As the systems and UI programmer, I contributed almost all UI functionality and a lot of the base systems. The bulk of my work includes the camera detection and the entire quest system and infrastructure. I set up all quest functionality and tied it to camera detection so that whenever a photo is taken, it is able to store that photo's information and check if it fulfills any quest requirements. Additionally, I made all of the diegetic UI, which includes the journal and quest board, in addition to other UI elements like the shop and the HUD. Finally, I implemented controller support for the UI systems, as the diegetic UI didn't work with regular Unreal controller support so I had to improvise by allowing the player to access UI by using their joystick as a mouse cursor.

Steam Page

Picross

Picross Screenshot

Project Overview

This program allows the user to upload any square photograph and will auto-generate a picross puzzle for it. They can play through the puzzle until it is complete, and then they can upload another picture.

Technical Highlights

  • Picross auto-generation
  • Visually similar to base image
  • Fully playable puzzle with easy to use controls

Development Challenges

Limiting the color pallet was the main challenge. I wanted to limit the amount of colors being grabbed so as to not make too complicated a puzzle, so I first found the most frequent colors in the picture. I quickly ran into a problem where a picture that is mainly the same color will have very little changes between each color. I then ended up comparing all frequent colors and if they had similar gray values, I would discard one of them. This lowered the color pool significantly while also keeping the color options diverse to make for a more interesting and fun puzzle.

My Contribution

As this was a solo project, I developed everything myself. I used the assistance of Raylib for drawing onto the screen, but all code is mine

GitHub

Puzzle Collection

Sudoku Screenshot

Project Overview

This collection allows users to endlessly play their favorite number puzzles. Each board is randomly generated, so repeated puzzles is exceedingly rare, allowing for a fun and interesting player experience.

Technical Highlights

  • Randomly generated sudoku
  • Fully playable game with note taking functionality
  • Difficulity and board size settings

Development Challenges

Figuring out the initial sudoku randomizer was very challenging. Just randomly placing numbers would very rarely get a working suoku puzzle, so I ended up going through the steps to see how to program it. I first used an online number generator to get random numbers between 1-9 for an entire 9x9 grid. Then, I would point out the repeats in the rows, columns, and boxes and see how I would swap around or replace numbers to get to a functioning sudoku board. I eventually landed on a method of swapping the repeat in the box with the number in the row that was missing, and then adding that recently swapped location to the stack to go back and check. Eventually, everything was swapped to their correct places to make logical sense for a sudoku board.

My Contribution

As this is a personal project, the majority of the code is my own. Since it is an extension of a class project from school, my partner Nate Spielman contributed to certain portions which are commented in the code itself. Additionally, I used a library provided by my teacher, Dean Lawson. All other code not credited in the project is my own.

GitHub