Bumper Carnival is a zany and action-packed bumper car brawler for all ages. Players will choose their loadout by selecting weapons and vehicle classes to pit their car against their friend or AI. The last one remaining wins! Choose from a variety of different maps all with their unique features and challenges.
This game was developed using Unity and C# by a team of 5 including myself. The project intially started as a class project but was then expanded upon in a production studio ultimately leading to around 5 months of total development time. The game was then presented at the Imagine RIT festival at Rochester Institute of Technology. This was by far the most fleshed out game any of us had ever made due to the amount of time and resources we were able to sink into it. The team dynamic was great due to the fact that all of us were friends, leading to a lot of shared roles and helping out in all areas of development.
There is still plenty of room for future development with this game, including enhanced physics to allow for stages to include slopes and ramps, better collision detection and resolution for more satisfying hits, more loadouts, more cars, more characters, more stages, different gamemodes, etc. As the main lead behind physics, I still have work cut out for me to perfect our physics system to produce the most satsfying experience. We've gotten the game to a great point, but there's a ton more to do. I am still most proud of this project out of all of my work.
Line Drive is a golfing puzzle game designed for mobile. Players must use their finger to draw lines to guide the ball to the hole. Use your toolbox of drawing abilities and speed boosts wisely to rack up the best score. With over 20 levels and multiple customization options, there's plenty to keep you busy when you want a quick game break on the go.
This game was developed using Unity and C# by a team of 4 including myself. It began during a class I took at RIT named Casual Game Development. The structure of the class was set up into three 4 week sprints where we design a casual game during each of the sprints. We also received two weeks at the end of the semester to polish one of our three games, and we chose this one.
We used Unity's physics system which definitely sped up production. Just after 1 week, line drawing with proper collision was implemented as well as speed boosts and holes. After the first week, we could focus our attention on cleaning up the UI and implementing more holes as well as customization. Playtests in class allowed us to tweak physic values, adjust the UX, and gain new ideas for level mechanics. Production went pretty smoothly and we were all really happy with how the game turned out. This game was my brainchild so I was real excited to develop it.
A band of hunters has gone missing on an island to the east, driven away from their camp during the night by an unknown foe. Uncover the fates of the hunters, slay the stalker on the island, and collect a unique armor set made with some of the finest hides in the land. May Hircine watch over you, Dragonborn.
This mod was developed during a special running of IGME 590 at RIT. The class was solely devoted to making a mod for The Elder Scrolls V: Skyrim. The class was divided into 5 groups of 5 and each of our teams worked on a specific subquest in the mod, with one group managing the overarching quest. My team was responsible for the fourth and final subquest: "Stuck Between a Wererock and a Hard Place". It was a very unique class as it required communication and cooperation with all 25 students, rather than just your own group. Everyone was fairly new to modding so it was a class effort to learn and share knowledge of the Skyrim Creation Kit together.
In my team, I was mostly responsible for asset modifications. My main work consisted of retexturing the armor set to create our own unique look as well as creating stone variants of Skyrim's werewolves and werebears and creating the bloodmoon transition effect. Working with Bethesda's assets was certainly a challange, as all of their filetypes are proprietary. Texture files are coded as .dds and 3D models are packaged as .nif. This required special tools to be able to modify the existing assets.
View of the Bloodmoon rising above the grotto in our quest
The retextured armor cuirass I made for the mod
The two werewolf statues and one werebear statue shatter into live enemies during the final wave of fighting
Our quest takes place in an enclosed grotto that plays like an arena
Feel the rush of snowboarding in this simulation style game! Step onto the physical board to lean and turn your way down the mountain through a giant slalom course. The Nintendo Wii remote attached to the simulated board will track your movements and translate those to in game movements. Try to get down the course as fast as possible to score the best time!
This proof-of-concept project was a result of a solo independent studio during the spring of 2017. The game was developed in Unity using C# and a Nintendo Wii remote as a controller. I used the Unity-Wiimote plug-in to get input from the Wii remote into the Unity engine. The platform consisted of a longboard with a Wiimote attached to the bottom and the longboard was positioned on a turn table. This allowed for both the rotational and leaning movements.
In all, the project was a good learning experience into using motion controls. The Nintendo Wii remote was not the best accelerometer to use for motion controls, as it would very consistently get disoriented and constantly require zeroing out. The physical platform itself was very jerry rigged and not very user friendly. The physics were decent but the controls where really what messed with the gameplay. There is a lot of room for improvement but it was a successful proof-of-concept using a Wiimote in Unity and experimenting with physical controllers.
Start at the top of the mountain and race your way down!
The next gate will have a red smoke plume to help you identify where to go. There's also a jump towards the end of the course!
When you cross the finish line, your total score is the time you took with an added penalty of +1 second for each gate you missed
This web app allows you to play music and visualize the beats and waveforms of the sound. You have full control over the visuals including what type of display you want, colors, visual effects, and audio effects. Feel the bass with an option to turn on a screen shaking bass effect. Customize the experience to your liking to fully embrace the music!
I had way too much fun with this project. As a big fan of music, I love watching videos of my favorite songs that incorporate the song's waveforms. I really wanted to go above and beyond and make a really cool experience with this. Built using JavaScript and web audio technologies, each "frame" of the song is divided into "buckets" based on sound frequencies. Each of these bucket values is then translated into how big each bar appears. The plethora of customization controls alter things like how tall or wide the bars should be, audio effects like reverb, and visual effects such as tinting the background.
I really wanted to make the UI look clean and modern. This was actually my first true website built with JavaScript so there are plenty of things I would like to go back and change in terms of the UI. A lot of the UI interaction is kind of hacky and not done effectively. After learning more about JS and web development, I am eager to go back and modernize some of my code. There's a few glitches with the custom audio controls but overall I was incredibly pleased with the final product. It was highly satisfying to sit and watch and listen to my work perform in front of me.
The bars around the middle are mirrored on both sides and represent the frequencies of the song. The purple line is another view of the frequencies
Some of the controls you can play with
The custom audio player interface
Battle your friends in a 1 vs. 1 game of Tanks! Move your tank back and forth and select the right angle and shot power to counteract the wind and hit your opponent. First player to land 3 shots is the winner!
This project was to practice using Canvas while also making a game. I choose a 2D tank game since the graphics are relatively simple and physics are my speciality. I was most happy with how clean and concise the code for the game is. I used the Module Pattern to help clean up the code and break the calls down into chunks. The main update basically comes down to update the tanks, update the bullet, and check for collisions.
I initially aimed to do terrain deformation when the bullets hit the ground, but soon realized this drastically complicated many other aspects of the game. Instead, I created a random terrain generaton algorithm that creates a new stage for each playthrough. It took some tweaking and playing around to constrain the values to make a balanced and playable stages. Overall I'm fairly happy with the gameplay, however the site design could use some work. Creating UIs in Canvas was a little tricky.
In the mood for a specific type of food? MoodFood will help you locate places nearby to fulfill your cravings! Search by your current location, or enter a custom location to find food. Sort and compare places by pricing or rating.
My initial plans for this app unfortunately did not come to fruition. I initially intended to make an app to search the menus of restaurants to locate specific foods you were looking for. I found the Zomato API and was under the impression it had the power to cross-reference menus. However, it turns out that feature was only avaiable in Czechoslovakia. So I had to salvage together the rest of the project and it will only show results that include your query in the title of the restaurant. In essence, I basically created another Google Maps to find restaurants.
Out of all my apps, I am least happy with this one. Mostly because the idea didn't fully work out, but also because the site design isn't the best. After scrambling to salvage the project, I didn't have a whole lot of time or care to clean up the design. While I do like some of the Google Material designs I created like the text boxes, the responsiveness of the site is pretty bad. Layouts and font sizing need to be adjusted and the color scheme is a little harsh.
My title at eLogic was open ended to allow me to float between different development mediums. I primarily worked as a mobile developer on the IoT (Internet of Things) team using Xamarin and C# to create and test apps for clients. I started off writing automated tests to run in Microsofdt App Center in order to test the UI. I also took on the role of deploying QA builds to the client through App Center for them to test. I later moved on to bug fixing. Aside from Xamarin, I also did a bit of Power Apps development. This was towards the end of my time at eLogic so I didn't get far with it. My employment was unfortunately terminated early due to the COVID-19 pandemic of 2020.
One major part of the LiveTiles brand is their intranet site building platform. The individual apps and widgets you add to the site page are known as "tiles". As a developer intern, my main task included refreshing outdated and non-functional tiles to a more modern standard. Often times I would rebuild the tiles from the ground up and design the front end as well program the backend myself. I was also involved with creating demo pages for potential customers, providing support to customers who implemented my tiles, as well as create custom tiles for different customers.
My primary task at Siemens was to prototype a new application to be used by railroad technicians. The app, an "IDE for programming signal box logic", was created as a WPF Application using C# in Visual Studio. As the sole programmer, I would work with a UX lead and UI designer to turn the concepts into reality. The design was insipred by the Microsoft Office suite and built to be a more modern UI over cluttered industrial style UIs. My team worked with a user group of real technicians to gain feedback and suggestions as we built out the program.
While my full-time title at LiveTiles was "Consultant", I was a web developer first and foremost. The majority of my work was developing custom applications customers ordered as well as prototyping software our product team would later implement. I was the sole developer on the U.S. Professional Services team so at the end of the day it was up to me to build and deliver great experiences directly to customers. The projects were primarily SPFx applications and React based web apps as plugins for LiveTiles's Reach platform.
Personal project to get more experience with Blender and asset creation from scratch. All models and programming in the world are done by myself. Features two different games: Shot Clock and Connect 4
Race against the clock to score as many baskets as you can
Play against a friend in a game of Connect 4 basketball. Your pieces enter the board depending on which basket you score on. Features full networking multiplayer
All the models were made in Blender from scratch. Was a good learning experience to get more comfortable with the interface as well as reinforcing modeling and UV unwrapping skills. The world was assembled in Unity utilizing the VRChat SDK. Programming was done using VRChat's Udon graph system. Connect 4 was the biggest struggle due to implementing full multiplayer for it. It was an eye opening experience to switch my programming logic from "Make it work" to "Make it work for everyone else too". I'm proud with how it turned out and the skills I gained from the project
Personal project to continue learning Blender and more advanced Unity rendering techniques. The scene is based on a level from the game Sons of the Forest. All the models (except the Ottomans) were made by myself in Blender. The scene features baked lighting and reflection maps, post-processing, and light probes.
This world was made for VRChat and was a particularly fun project to work on. Taking a good looking scene from a game and reverse-engineering it was an intriguing challenge. I learned a lot about using Blender itself as well as best practices for 3D modeling. Same goes for Unity and baked lighting. I'm very pleased with how the end product turned out and I'm eager to bring more levels from this game to VRChat.
A variety of settings are available to the player to customize their experience including post-procesing options
The light wall has a shader that when viewed up close shows "pixels". Credit to Mochie's Shaders for the effect
My first publicly released asset for VRChat world creation: Lightmap Swapper! This package allows for swapping of baked lightmaps and reflection probes at runtime. I also included a light switch prefab that includes sounds, animations, and logic to allow for desktop interaction as well as VR touch controls with haptics.
When developing my work-in-progress world, I really wanted to have multiple lighting scenarios but didn't want the perfomance hit of real-time lighting. I did some research and couldn't find any free packages that allow for swapping of lightmaps. So I decided to make my own! The scripts are specifically designed for VRChat worlds so they are writted in UdonSharp. However, the scripts could be easily modified to work with regular Unity development.
The script get a reference to every static object in the scene that uses a lightmap as well as any reflection probe. When a swap should occur, it loops through all the referenced objects, changes the lightmap to next one, and re-bakes all reflection probes to the new lighting scenario.
My biggest VRChat project yet, Cozy Obby is a game world featuring multiple obstacle courses with leaderboards and speedrunning features as well as a central hangout area. The world received great reception reaching 20,000+ visits and 2,500+ favorites in just 3 days, even reaching the top of the "New and Noteworthy" category and breaking into the "Popular" tab.
This world took about 4 months of development time. The first focus was on making a robust obstacle course system that was prefabable and expandable. A manager script handles most of the heavy lifting: holding the timer, checkpoint counter, calculating time splits between checkpoints, respawns, and leaderboard logic. Individual components like bounce pads, lava blocks, and glide walls handle collision detection on their own and call to the manager. The scripts were written using UdonSharp, VRChat's version of C#.
After the Easy difficulty course was made I shifted my focus to building the central hangout hub. The house structure and props were all made in Blender then textured in Unity. The hub features 4 areas: a fire pit lounge, a large couch with TV video player and queue system, billiards table with custom leaderboard, and a cozy bedroom. The billiards leaderboard was built from the parkour courses' leaderboard but enhanced for better architecture. All leaderboars are synced over the network and include crowns above the heads of the players at the top of each respective leaderboard.
The entrance view to the world
View from the corner of the fire pit area
The pool table with leaderboard in the back
Bedroom area
View from the start of the medium difficulty course
Aerial view of the easy difficulty course
During my time at Fleet Feet, I grew from just an Outfitter to adopting a wide variety of roles. Ultimately my day to day role is an Outfitter. On days where a manager is not present, I am the team lead for the day. When customers come in, I take them through Fleet Feet's fitting process of gathering their shoe needs, accounting for any conditions or injuries, taking a 3D scan of their foot, and presenting them with shoe options. I've come to learn that shoe fitting has a very similar feel to debugging code. Both require careful attention to feedback, learning from previous attempts, and seeing results emerge in real-time. When a customer finds that shoe that works for them, it gives me the same satisfaction as when my code works.
My roles first evolved include handling vendor returns. Essentially, keeping logs of consumer worn shoes that cannot be resold and submitting those logs to the different shoe vendors for credit. This involves me reaching out directly to the sales representitives of the different brands to facilitate the process. Shortly after I took on the role of "Special Orderer". When customers find a shoe they like but we don't have the exact size/color/model in store, I'm the one that orders it. This involves placing purchase orders on the shoe vendors' B2B websites. This later grew into me being the shoe buyer for the four Charleston locations for two brands: Altra and New Balance. This involves pinpointing shoes that need to be restocked in all four locations based on current inventory levels, demand, and shoe update cycles.
Recently I took the lead on researching, implementing, and vetting AI technologies and program that allow for more effecient shoe buying. This takes the monotony of reading through pages and pages of inventory data and automating the process to save tons of time. This improved not only my shoe buying experience but also our owner's experience as well.
I'm a game and web developer looking for my next career opportunity. Recently my professional roles have been in web development but on the side I still enjoy working on game related projects. My most recent personal projects
have been working with the VRChat SDK making avatars and games for the VR platform.
In college I was a captain on the RIT Track & Field team and a teaching assistant for IGME 202 - Interactive Media Development at RIT. I'm a big VR enthusiast, snowboarder and gamer.
Game Design & Development B.S.
Rochester Institute of Technology - 2019
C#
C++
JavaScript
TypeScript
Swift
HTML5 / CSS3
Unity
Visual Studio
XCode
Photoshop
Illustrator
InDesign
Maya
Blender
Microsoft Sharepoint
Microsoft App Center
jQuery
Bootstrap
React
Node.js
Xamarin
REST
OpenGL
DirectX
Udon