Below is a sampling of my five favorite projects that I made and/or have worked on throughout the years. I like to add an element of surrealism to the games I work on, and create the feel I want. This page will be updated periodically.
Unreal Engine Knight Game (WIP)
All art assets, models, and animations are free to use assets from the Infinity Blade Collection. I do not own nor claim ownership to them, as they are under public domain.
"Unreal Engine Knight Game" is an action game made in my spare time in 2019 using Unreal Engine. This was a project started to learn the ins-and-outs of the engine, with the end goal being to develop a Virtual Reality game.
In this game, the player must survive in pitched combat against waves of attacking knights until they are the last one standing. Left click to swing the sword, or right click to use a fire spell. Enemies typically hunt you down, but will prioritize grabbing health pickups when hurt; try no to let them get away with it.
All art assets were obtained for free and special effects were done from tutorials. I used the engine's Visual C++ programming language to:
Implement combat, and a damage system
Game State Management
Controls and pairing animations w/game actions
Enemy spawning logic
The current goal is to redo this game for Virtual Reality, with new assets.
Grandma's Tech Support
Made at the MIT Global Game Jam, Grandma's Tech Support explores the trials and tribulations of teaching Grandma how to send an email. GTS is a simple text-based adventure game under the hood, enhanced with cartoony visuals and audio courtesy of Unity. Players have 10 tries to give grandma the correct commands, with the goal being to have her successfully send her friend Mildred an email. Don't get her angry!
My contribution was to write the C# code in Unity MonoDevelop to integrate all of the different parts of the game (main code, art, and audio).
"SWAMPED" (Directx 11 Game)
Swamped is a small game built in DirectX 11. Escape from two nasty demons who are out to get you in this eerie swamp. Also known in-house as "3D Pacman", this game shows off several lighting effects. One can see fog, directional lights, and bloom.
My responsibilities were Collision (OBB), Skybox, and fog. The first two were easy: I had old collision code in OpenGL, which I spent time translating to be compatible with the D3D11 Math library. Sky was quick process of cubemapping.
The fog looked like it would be tough because of particle effects, and lack of time. But, I found out how to make Linear Fog without particles. A "fog color" is assigned to each object. The color LERPs between values based on distance, and cluster enough objects together and you have fog! The effect takes place after the player is a certain distance away. I followed this post for guidance, and translated the code from OpenGL.
DirectX11 Graphics Engine, based on starter code by Chris Cascioli. A personal project that I continue to add to in my free time. The final slide is a short video demo of linear fog.
If you check my blog, you can follow my process of implementing Physics-Based Rendering (PBR). I go through the math needed for each component of PBR.
Personal additions to starter code:
*Shape Movement (required creation of Entity class)
*Textures (required creation of Materials class)
*Shadows (Directional Light)
Quartz is a platformer built in Unity. After being shot out of a cannon,The player must collect 100 gems across all zones to open the Staircase to Heaven. There are ice, desert, magma, and the neural green zone. A trail of light follows our plucky crytal hero as it rolls and jumps.
My contribution: Enemy AI, jump physics, jem scripting + placement.
The AI was done purely in C# code, without the use of states. Each enemy has "sight"...when the player gets within that range, they act (like the angry yellow block falling in the player, for example).
Jump physics were the biggest challenge of the project, but I got them working. I wanted the same feel as Mario 64 and Banjo Kazooie: when a player jumps, they can control their direction and trajectory in midair. Also, the height of the jump is dependent on the amount of pressure applied to the button.
The latter of these concerns is easy to code in Unity Monodevelop C#, and mainly has to do with adjusting two variables: height and a parameter for how far down the button is pushed. The time went into adjusting the numbers to make it feel just right.
The former of those concerns (directional control) was dones with states: we check "is player on ground?" or "is player in air?" (if it isn't one, than it has to be the other). If in air, give player control of the direction vector until "is on ground".
Check out the design doc below!