top of page
Screenshot 2024-05-24 062351.png

Destruction

Length: Current

Introduction

Mechanic/Technical Design

With this personal project, I challenged myself to recreate gameplay systems from the game, The Incredible Hulk: Ultimate Destruction.

​When taking on these projects, I researched the development of the actual game and did my best to recreate those mechanics using Unreal Engine 5's Blueprints.

I will be adding more details and mechanics as I continue to develop these

Jumping

In this demonstration, I created the ability to charge a jump and depending on the length held would increase the players jump height.

 

When creating this, it was a very simple script, I simply had the code check every tick while the player was holding the jump button if they were still holding it. For everytime the code detected the player was still holding the jump button, it would add a single value that was editable. This code would only run if the player was pressing and holding the jump button.

Blueprint Graph

Note: This also includes the car collision scripting which will be covered further bellow

image.png

Chaining Jumping

A feature I added in that was also apart of the original game is buffering between jumps. This is added to allow players to effortlessly chain their jumps together. Without it, the player would rely on frame perfect inputs every jump and in terms of fun would diminish as the player would need to recover constantly.

 

The code written would check every tick for one second after the player let go of the jump button to check if they were on the ground or not. This allowed for players to effortlessly chain jumps. As soon as the player hit the ground within the time frame, the character would immediately jump at the moment of contact allowing flawless chain jumps.

​

In the blueprint below one of two conditions must be met before the player is able to jump. Either they are grounded or the delay timer expires. If the delay timer expires then the input is cancelled and the jump action is null and nothing happens. The first branch handles the two conditions while the second determines if the action should be valid (The character is grounded)

Blueprint Graph

image.png

Dashing and Sprinting

When creating the sprint and dash, it was a simple set up of a launch script into a max walk speed change. Whenever the player pressed the sprint button, it would first launch the player forward to simulate the dash in the original game, and then set the player walk speed to be much greater. Whenever the player would let go of the sprint button it would immediately set the walk speed back to default.

Blueprint Graph

Note: This also includes the car collision scripting which will be covered further bellow

image.png

Car Collision V1

This is my first version of the running collision interaction with items. In this first version, I initially had it so that the item would launch as soon as the player touched an object. Using real life influences on how this was coded, I had thrown myself into a corner where the player's momentum would completely stop whenever they touched a car. This had clunky results but what came out of it was how I learned to manipulate an objects physics when interacting with another object. I then took a step back and revised the collision leading to version 2

Car Collision V2

When looking over the scripting of the car collision, I found out that using the On Hit event would mean that even if the car launched on touch, in the single tick the player hit a car it would completely stop their momentum first and then it would launch the car. I needed to find a way for the player to hit a car without ever "touching" it. This lead to version 2 where I created a hitbox in front of the player that detects and items in front of them. Doing this I also learned how to grab Normal Impacts from hit objects which allowed for the cars to now be launched and spun in certain directions depending on where it was hit from.

Blueprint Graph

image.png

Wall Running

Probably my most difficult mechanic to figure out since the way wall running works in the old game is different from what we know today. When coding for the wall running, I wanted the player to run all over the walls like of it was a platform. That is when I found out how to switch the direction of gravity for the player. Using this in combination with a trace line under the player to detect if they were still on a wall and would autocorrect if they when on a not flat surface. This allowed for the player to run on any surface as if it were Super Mario Galaxy.

Blueprint Graph

image.png

Car Collision on Landing

Probably the simplest to create right behind the sprint. Using the same code from the Item Collision version 2, all I had to change was the code to grab the player's Y vector rather than the Z and X. This created a blast radius with strength and length based on how high the player jumped prior.

​

Also utilizing the Y vector of the player, I created a dynamic radius for the landing. This means the higher the fall the bigger the radius of the blast.

Blueprint Graph

image.png
bottom of page