Turning a tutorial FPS into an obstacle course

Hello, everyone! Thank you for approving :slight_smile:

I was told I needed to make a demo to be able to get a scholarship for a videogame development school I’d like to join. I have until August 27th to do it. I followed this tutorial, and figured out how to add jumping ability, change the color the targets turn when damaged and make it so you can swap guns, as well as adding background music. However, I’d really like to knock their socks off and ensure I do get that spot haha. I was thinking, what’s the use for the jumping ability if there’s nothing to jump, anyway? How to Create a Simple FPS in Unreal Engine 5 | Kodeco

A cursory Google search hasn’t revealed what I need, and so I turn to you guys, to see if anyone has any tutorials or some kind of guide I could follow in order to achieve this. The goals I’d like to achieve are fourfold:

  1. Create a start and pause menu that allow the game to enter, exit or reset without resorting to the Task Manager.
  2. Create a score counter for every target shot.
  3. Make the targets move around and randomize them.
  4. Make the game a timed obstacle course, with turns and jumps randomly spawning every time and the game ending if you haven’t made it to the finish line in the allotted time.

Is this possible to do, or have I bitten off more than I can chew? I really need to impress the judges lol, I’ve got only a few days to get this done.

Thank you in advance!

  1. Menu - watch this https://www.youtube.com/watch?v=2pnz_7WSSOw
  2. Scoring - try this https://youtu.be/icR_EgXrS6o?t=7494 , timecode is not precise, but he explains scoring somewhere around that time.
  3. Moving targets - just choose a random vector and move your target there using Timeline or FInterp with Set Actor Location
  4. Sounds too complicated to be quickly explained

Avoid even thinking about 4 before you have the rest done.
especially with such a tight timeline.
its like a mini game jam.

Assuming you have the working base.
a timer can be made by using the game time, adding to an existing variable within the Level Blueprint which you can reset.

Instead of doing random stuff, which could be too hard to pull off.
Make 1 level.
​Add a timing component to it. Reload the level if your player fails.

if that works and you have a couple days left you can start to play with making stuff be random.

The level layout can be altered OnBeginPlay.
you can check things with an overlap function to see if they should spawn or not.
a maybe more basic approach would be to create a set of blocks that get removed on begin play by the results of a randomized line trace.
Say you have 4 rows, at the start of the game a line trace can go in one of 3 directions.
forward, left, or right - using random.
You can have the line detect the room edge by not returning a hit result from the edge walls.
Any time a hit result is returned, you remove a block. IF no hit result is found you pick another random and run the function (recursive) again.
you keep on going until you hit a hit result that matches the end of the corridor. Probably using a game tag.

it’s probably more like a dungeon crawler. But to demonstrate you can make a game its probably very effective, even if simple.