Boards

Objective 1: Implement multiple completed games, including 3D games, using common tools, languages, and software for web, console, PC, or mobile platforms.

Tank Royale (GitHub)

Tank Royale is a game where you must guide your tank to victory as you destroy the enemy tanks.

This game was created in the Unity engine with scripts written in C#.
This game is set in a 3D game world.

Tank Royale title screen

Maxwell's Bullet Sumo (GitHub)

Maxwell's Bullet Sumo is a game where you play as Maxwell, our beloved campus cat, and attempt to push an Evil Shadow Maxwell off of the platform by shooting plushie-shaped bullets at them.

This game was created in the Unity engine with scripts written in C#.
This game is set in a 3D game world.

Maxwell's Bullet Sumo title screen

Jailbreak (GitHub)

Jailbreak is a game where you sneak through a prison to rescue a prisoner trapped within, dodging guards and finding keys along the way.

This game was created in Unreal Engine 5 with scripts written in C++.
This game is set in a 3D game world.

Jailbreak title screen

Objective 2: Design, develop, and implement the architecture and infrastructure needed to support a complete game project.

Tank Royale (GitHub)

Tank Royale contains an options menu that contains volume sliders (Master, Music, and SFX) and options for the map generation. You can let it be random, play the Map of the Day, or generate a map based on a set seed, which can be set in the input box.

Tank Royale options screen

Maxwell's Bullet Sumo (GitHub)

Maxwell's Bullet sumo contains an options menu that contains volume sliders (Master, Music, and SFX) and a toggle for the difficulty of the enemy AI. The harder AI attacks more often and attempts to move to the center of the map, whereas the easy AI attacks slower and doesn't try to get away from the edge.

Maxwell's Bullet Sumo options screen

Jailbreak (GitHub)

Jailbreak contains an options menu that contains volume sliders (Master, Music, and SFX). It also contains a level select menu that lets you jump to any level you've unlocked.

Jailbreak title screen Jailbreak title screen

Objective 3: Implement and analyze fundamental data structures and algorithms associated with game applications supporting gameplay mechanics.

Nikolas: A Lost Penguin

Part of my work on N:ALP was creating an AI enemy character. A problem I ran into was that the enemy would continue attacking the player character after they died, and ignore their party members.

To solve this, I had the AI check to make sure that their target was alive every tick, and clearing the TargetActor blackboard key if they weren't.

I also had trouble making the enemy lose sight of the player after they locked on, so I added some code that checks whether or not the current target is within the AI's "forget distance", and clearing the TargetActor blackboard key if they weren't.

This solution worked very well, and I was able to finish creating the base AI class that could then be used to create other types of AI.

The Blueprint code for the AI's 'Event Tick'.

Tank Royale (GitHub)

In Tank Royale, the map is procedurally generated depending on a seed. In the options menu, the player can either choose Random (the seed is set as the system time), Set Seed (the player can type in a seed), or Map of the Day (the seed is based on the time, but truncated at the date). Each map tile has four walls which can be turned off as necessary to form a border around the map.

Each room tile prefab contains an EnemySpawner object, whose sole purpose is to be detected by the GameManager. When the game begins, the GameManager spawns one of each enemy type at a random EnemySpawner. A similar system is in place for the player's spawn location. This system allows you to play a new map every time, or practice either the Map of the Day or a known map.

The C# code for the MapGenerator

Objective 4: Use software development processes to analyze a project problem and to design, build and test a corresponding software solution.

Task Planner App (Snack)

This task planner app was coded in React Native. I wanted to create an app that would allow me to create a list of tasks and then get reminders to do them. You can type tasks into the text box and put them in a list.
You can then set a timer that sends a reminder notification after the desired seconds have passed.

I created this app using the Expo website.

Screenshot of the planner app

Step Goals App (Snack)

This step counter app was coded in React Native. It uses the device's pedometer to keep track of how many steps you have taken.
You can put in a step goal, and it will tell you how many steps away from it you are.

I created this app using the Expo website.

Screenshot of the Step Goals app

Objective 5: Demonstrate development skills using multiple programming languages, development environments and platforms, including advanced and/or experimental topics in game programming.

Exbloom

Exbloom is a unique spin on the falling-block puzzle game genre, where the pieces don't clear until a fuse timer counts down.
This mechanic allows for complex chain reactions that wouldn't be possible otherwise.

I created the prototype in Unity with scripts in C#.

Screenshot of Exbloom

Dice Roller Program

I created this dice roller program for the M5StickC Plus. It can roll any of the standard polyhedral dice, as well as a d100. I created it in the Arduino code editor in C++.
I also 3D printed a "case" for the M5StickC Plus that allows you to roll the dice by swinging it like a sword. I envisioned bringing this to a DnD session and using it to help immerse yourself in the game by swinging it to roll for attacks.

Objective 6: Establish collaboration, mentorship and professional leadership skills by working with other disciplines to deliver highly polished and completed projects.

Katalyst

I worked on Katalyst during my time in the Production Studios class. I worked on the inital bullet patterns, level start screen, pause screen, and bugfixing. I worked with the artists to implement their meteor models into the bullet patterns, and helped out my fellow programmers while I was bugfixing.

Nikolas: A Lost Penguin

During my internship at Fear Element Studios, I worked on various things for the game. I created the base AI class, a friendly NPC you can talk to, and an NPC who will say their dialouge above their head when you walk close. As of writing, the artists haven't finished their design for the dialogue box UI, but I have set things up so that it will be easy to implement it once they do.