Maximum Wipeout: Part 1 (Unreal Engine 5)

 As part of my university assignment, I have to add a mechanic to an existing template in Unreal Engine 5 using Blueprints. As usual, I decided to go a few steps beyond that and create a short demo based on Total Wipeout and Fall Guys. The play traverses obstacles while gaining points at checkpoints and for their total time, with a special treasure and challenge awarding bonus points.

The mechanic I chose to focus on (the assignment specifies just one new mechanic) is the points system. The reasoning is that regardless of how fun a game is (especially a platformer), if you are not being rewarded for your skill, why bother?

The Set-Up

Where to start? Well, if we are doing Total Wipeout we need water. Having bought the incredible Fluid Flux plugin for another project, it was an obvious choice for the water as it looks stunning.

Fluid Flux provides stunning water caustics

And for the sky sphere, I added Ultra Dynamic Sky for dynamic cloud coverage.

Both the stunning water and skybox distract the player 

The template used was the First Person Template and this was an easy decision as the templates provided by Epic are excellent. Now all the simple stuff is set up, time to make the first obstacle, the Whirligig.

The Obstacles
This was a simple blueprint made of 3 cylinders, an auto convex collision was added to the cylinder to ensure the player is moved when hit and a rotating movement was added to animate the arms of the Whirligig. It is a simple an effective obstacle and after duplicating the BP and reversing the rotation, having two Whirligigs moving in the opposite direction is a fun first obstacle.
Whirligigs in action

Only a single component needed for the Whirligig

The next obstacle was one I knew would be a challenge and is currently just a place holder. For those who know the show, it is the Sucker Punch. Simply put, it is a wall with extruding arms that hit the player and knock them in the water. I tried to use the Timeline node to get it to all animate individually but it didn't work well. It currently animates all at the same time and doesn't really knock the player back. I will use multiple Timelines and more forceful push at a later date.
Running all the pistons off the same Timeline node is not effective and needs implementing again

The next obstacles are the Bouncing Balls. Like the TV show, the objective is simple, launch the character in the air, but since this is a videogame, we can go really crazy with it! The player hits the collider on top and is launched far into the air, later a sound effect in the air and some particles and motion blur could add a lot of immersion. 
The Bouncing Balls will be retextured and animated later

The BP is simple for this one, the capsule collider is what will launch the character

A simple blueprint for the code, all that's needed

A delay was added before the launch to ensure the character could land on the Bouncing Ball and bounce again, without this, the player has to land on top, then jump again to trigger it.

A Few More Obstacles For Good Measure
Up next is the Pillar Hop, a deceptively tricky obstacle that requires precise jumps and then hitting a Bouncing Ball to cross a large gap. Set up is very easy here, place some elongated cubes as pillars and add a bouncing ball!
May have took just five minutes to think up and implement, but it is super fun!

Next up are the Dancing Platforms. For the prototype version, I opted to go for a simple system in which three platforms move back and forth at different speeds and the player has to traverse them. This was done to ensure the deadline would be hit and other assignments won't be affected. However, in a future build this will be replaced with physics enabled swinging platforms.

Here you can see a selected platform and a 3D Widget that shows the endpoint of the platform

All of the logic is done in the construction script

For this BP actor, a cube is used as the platform and an Interp to Movement component is added, this allows access to the Add Control Point node, which will determine the start and endpoint of the platform. A Vector variable was then created to establish the final transform of the platform and as the variable was instance editable and Show 3D Widget was enabled, the MoveToPos could be altered at will. Duplicating the platform and altering the duration of the Interp node finalizes the obstacle.

 And last but not least for now, we have a giant Whirligig. This is a simple little breather as the player has a choice to make. Go for the Idol of Desire, a tough challenge, or go finish the course.
Which way to go? 

And that is it for part 1! Probably only going to be one more post to wrap this little demo up. This is a short university assignment but I'm having a lot of fun thinking about this and where else it could go. The second part will focus on the last few obstacles, the points system, the timer and the swimming system. And ladders.....lots of ladders!


Comments

Popular posts from this blog

Creating a simple dialogue system in Unreal Engine 5

Remaking Mario in Unreal Engine 5 (Part 1)