Arcade Racer

For this project, I had to design a race track for an arcade-style racer at advanced greybox quality. The length of the track needed to be between 2 and 3 minutes and separated into three unique regions. The entire track needed to be designed properly, with enough time for act-recover-react moments. I started with a diagram and worked through creating a full Level Design Document which I then used to create a final track. The track was created using pre-made module track pieces and everything else was created by me.



Minor Assets

There are three things I’m looking to quickly touch on with this post: a force field asset, a highlight for interactive objects, and the main menu for the currently unnamed Waking Reverie project.

First, the force field. This is a pretty straightforward Blueprint I had to create. It needed to look like a proper force field, it needed to push the player back when they ran into it, and it needed to let the player through (without turning off) when they activated a certain ability. The physical appearance of it is pretty simple. There are two generic beams at the top and bottom, and then one of the Unreal Engine’s glass meshes between them, but with a tweaked material. Basically, I just tinted the glass to blue while also making it a bit more opaque. When in game, the transparency changes rapidly, which gives it a sort of oscillation look. Apart from that, it pushing the player back was the only other challenge, as it needed to be enough to get noticed while not moving the player very far.

Second, there is a system I put into place to allow for certain objects to be highlighted when the player got close enough. This turned out to be a rather hefty technical challenge, and I needed to do a lot of researching in order to get it to work. I had to create a series of materials in the engine that basically calculate where the outer bounds of any mesh are and then show a small red highlight along them. The material portion was rather complicated, and honestly, I don’t know exactly how it works. The problem I had to solve on my own was communicating between the actor that is highlighted and the Matinee (Unreal Engine’s cinematic animation addon that can move and rotate actors on set timelines) that it was attached to. It ended up being a rather messy solution, but as it stands, every time one of these actors is clicked on, the game runs a check in the entire level for every Matinee and reverses the one with the matching tag. This will likely be changed when Epic fully implements their new Sequence system.

Finally, there is the main menu for this project. In order to work on this, I had to learn some basics of Unreal Motion Graphics (UMG). Thankfully, UMG is actually pretty user-friendly, so figuring out how things worked was pretty easy. The main menu for our project currently can start a new game and assign a save slot, load a previously saved game, allow the player to choose a level from a list, adjust the screen resolution, and exit the game. UMG at its core is pretty simple logic checking. If the player clicks this button, change to this menu screen. If they click this other button, load a map.

This is owned by Waking Reverie, LLC.

Bounce Pad Asset

This was one of my first custom assets I made for the first project with Waking Reverie. It’s a pretty simple concept: the player hits the bounce pad and they get launched in the air. We quickly discovered that figuring out how to make it work properly was not so easy.

After spending a bit of time thinking it over, I decided on a plan of action for tackling this challenge. The bounce pad would be separated into 3 different parts, the target sphere (1 in the picture below), the actually bounce pad mesh (2) and the collision volume (3).

The target sphere is only visible in the editor, meaning the player never sees it when in the game. It is the physical representation of where the player (or object) is launched. The asset draws a line from the center of the bounce pad mesh to the target sphere and uses that vector as the direction of the launch. The sphere can be freely moved around independently of the bounce pad, making it easy to get the desired direction.

The bounce pad mesh has a flat cylinder by default, but each instance of it can have the mesh changed to anything else. The collision volume is what checks for the player and triggers the launch. It can also have its size adjusted. This allows us to have the bounce pad look like anything we want while keeping the functionality the same.

On top of all this, the launch velocity can be changed for each instance of bounce pad for both the player and other objects. Below the image is a short video demonstrating how the same bounce pad can be used for different things in an example map.

This is owned by Waking Reverie, LLC


Level Design: Halo 5 Forge Map

This is my first serious level design attempt in Halo 5’s Forge level editor. I’ve messed around in Forge every since Bungie introduced it with Halo 3, but this is my first level for Halo 5. I focused on a semi-asymmetrical layout, where each side has similar times to get to power weapons, but the power weapons are different for each side. The key feature of the map is the crashed dropship near the middle. I tried to give it the impression of being damaged by adding a few particle effects that show the engines on fire, and one that has a periodic explosion. Below is a video of me running through it quickly.

Full Sail Final Project

So, four long months have brought me here. The final project for Full Sail University is finally complete. And here it is for you to see! We’re all pretty proud of the work we did. There are still a few bugs and some issues we ran into when cooking this (some textures missing in the 3rd Chapter), but the gameplay is where we want it. Unfortunately we ran out of time to give all the different modules something other than their placeholder models. I’m providing a video showcase and the link to the .exe for the build if you wish to play!