Menu

Uncategorized

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 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.