Remote Bomb Shrine

The remote bomb shrine is a Unreal Engine 5 prototyping project which recreates the remote bomb mechanics and a shrine style level from The Legend of Zelda: Breath of The Wild.

The remote bomb mechanic itself is foundationally complete so I’ve added here to showoff while I create a level to fully showcase it.

Players can spawn, drop, pickup, throw, put away (despawn), and detonate both cube and sphere style bombs. Bombs can destroy destructible walls and detonate each other.

Everything was scripted in Blueprints, or other native Unreal editors. I used the Third Person Character Template as a foundation and Git / GitHub for source control.

I used and slightly modified assets from a few different sources so please see the credits below for more details.

Asset Credits:

UI Elements - Kenny Game Assets

Cube bomb icon - From BOTW itself

Sphere bomb icon - Darius Dan

Reference tutorial, character animations - UE4WithCasey

All vfx - Rimaye.Std

Project Goals:

The goal of the project is to deepen my UE5 technical skills and get familiar with several aspects of the engine I’ve only briefly examined before.

My intention is not to have a perfectly polished AAA comparison to the real game but rather a simplified prototype that represents the mechanics well.

Future iterations of the project will focus on developing a shrine style level complete with scripting, and lots of improvements all around.

Longer term, once I’m satisfied with the remote bomb I may move onto another one of Link’s abilities! It would be really exciting to have built my own versions of each of them inside the same project.


Mechanic Breakdown

Player input is setup in the project settings, allowing for both keyboard and controller input.

Most logic is contained in the Third Person Character BP itself, there are custom events for all major actions like spawn, detonate, throw etc.

The TPC also controls the booleans for animations, signaling when to transition.

Animation blueprints, not only handle animations but also use anim. notify BPs to let the TPC know when to call gameplay logic dependent on animation timing. For example we don’t want to drop the bomb on the floor before the drop animation is finished.

UI elements are used to control which bomb is spawned, locking off non-selected bomb types, and timing cooldowns.

The remote bomb BP itself handles detonating logic, as well as destroying walls.

Animations

I added new animation states and transitions for each main action. Some like Put Away and Spawn are handled directly with a transition and don’t have thier own state. Spawn for example goes right from Locomotion to Holding.

Animation states are handled with a set of booleans or automatically change when an animation is finished.

Most animation states are accomplished by blending the cashed locomotion with the new animation at a specified bone in the skeleton.

Remote Bomb BP

You can use ctrl + scroll & right click to navigate the BPs on the right

Detonation is called from the TPC and is handled by the Detonate Bomb event.

Detecting available bombs works by doing a simple sphere trace around the bomb every frame, and stores an array of overlapped objects. This could be improved slightly by only doing the trace when the bomb is not being held and only storing destructible walls in the array.

Once the detonate event is called we spawn a Niagara system, make sure the bomb mesh itself is hidden away, then loop through the array to find wall BPs and call their destroy event.

Spawn BP Example

The spawn BP is a good example of how the TPC gets and sends info to multiple areas.

First, we do several checks to make sure that our UI in the right state and that there’s no existing bomb in the world. We set our animation booleans which trigger the transitions, we also take the opportunity to disable certain booleans to avoid issues.

We run a sequence to check for which type of bomb is available (or none), we spawn the desired bomb, and set it as reference for use across many BPs in the project.

We then set up the bomb to be held, attaching it to a socket in the skeleton and setting our UI to show the correct controls.

Next steps

I’m currently working building out a shrine style level that make use of the mechanics I’ve built out. I’ve also borrowed a few other shrine mechanics from BOTW to help build out this level. I’ve added a proposed level design I created in Miro but I’m still exploring ideas overall.