The Project:
This was a Senior Capstone project for the Utah Games program. I worked as an engineer in Unity on a team of 30 over two semesters, going through multiple phases (ideation, pre-production, alpha, beta, gold, live ops, DLC). I primarily worked on UX, managing the input system and UI for interacting with it, as well as some of the menus and dialogue.
Steam Description:
Just the Boss Fights is a classic 2D platformer RPG with a twist: the game skips all the story, dialogue, exploration, and grind, leaving only the bosses themselves! Unfortunately, our hero wasn't quite prepared for this shift into a boss rush, and finds himself confused at every turn.
Join the Hero as he pieces together what's happened to his world. Why are there gaps in his memory? How does everyone seem to know him? And, most importantly, who keeps changing his gear while he's not looking?
Features:
Experience 4 unique and engaging boss fights!
Adapt to an ever-changing moveset to overcome each battle!
Find clues to what happened in this world and what's causing the glitches!
After you win, up the difficulty with Challenge Mode!
Classic pixel art style!
Supports both Keyboard/Mouse and Controller!
Free to play with no in-game purchases, what's stopping you from taking on the challenge?
private void OnJump(InputValue value)
{
//in combination with code in update
jumpBufferCounter = jumpBufferThreshold;
if (pauseManager != null && pauseManager.isPaused)
{
return;
}
if (value.isPressed && dialogueManager != null)
{
dialogueManager.AdvanceDialogue();
}
}
Sample of Dialogue System
[Serializable]
public class DialogNode
{
public string text;
public string imageFilename;
public Position imagePosition;
}
{
"text": "MORTAL, BEFORE YOU VANQUISH ME, I ASK YOU TO CONSIDER THE IMPACT OF YOUR ACTIONS.",
"imageFilename": "Dragon1-sheet",
"imagePosition": 1
},
My Role:
I worked with the build team for Call of Duty to compile all files and assets for the game into package builds through large CI/CD pipelines. These builds are then distributed to vendors, QA, etc. For big milestones, package builds are archived for future use. This is what most of my work revolved around: creating an integrity check for the archival system. This took the ID of a build and found all of the different parts to check that they were properly archived. This interfaced with many existing databases and systems to gather the needed information. I created a user-friendly UI to run and display the results of an integrity check with special parameters, as well as clear indications of the status of the build parts and actions to take (sending expiring parts to the archiver).
I am unfortunately unable to provide screenshots of anything, as I do not have access to the code at this time.
The Project:
I created a simple scene in OpenGL with glut/glew and the Cy Codebase to experiment with some interactive graphics techniques.
I implemented deferred shading with minimal
g-buffers to reduce rendering cost by only running the fragment shader once per pixel on screen. In addition, I implemented ambient occlusion, specifically screen space ambient occlusion (SSAO), which adds lots of realism to scenes by darkening crevices and other areas occluded from the scene's light sources.
Sample Shader Code
vec4 viewPos = view * model * vec4(pos, 1.0);
fragPos = viewPos.xyz;
texCoord = txc;
mat3 normalMatrix = transpose(inverse(mat3(view * model)));
normal = normalMatrix * (invertedNormals ? -norm : norm);
gl_Position = projection * viewPos;