Welcome to Night Rush !
A 4 - player local party game set in a vibrant, musical nightly world !
Inspired by Fall Guys, the idea was to make a game to train myself on different elements of Unreal while creating a world with themes I personally like, such as upbeat musics, colorful things, the night and cute anime tropes.
With this project, I had the opportunity to work on:
Local Multiplayer (Interactions between players, setup different pawns for each player, keep in memory different informations on each player etc...)
GPEs easily tweakable for easy testing
Cutscenes (using sequencers)
Level Design
Creating a weapon parent class & make different childs variations
Work on shaders (Niagara systems + Materials)
🎶Let's see these things in detail !🎶
you can zoom in on blueprints examples by clicking on the image if you want.
In Night Rush, before actually playing the game, you can choose to play with 2 to 4 players at the same time.
Each player can also choose a skin they want to use before starting the competition.
This means that, right from the start, the game needs to save somewhere :
How many players there are
Which skin each player chosen
Assign a scoring integer
(because, depending on your place at the end of each level, you will gain more or less score)
Something to differentiate each player
(such as their name or their controller)
To do that, I choosed to create a game instance where I save players data using a struct.
So once a player spawns (using a special game mode),
I create a new index in the game instance and I save his name and controller.
I also update the instance before loading the first level to save the skin they choosed.
Other use case for the game instance is :
when a level is completed, I call the game instance to update some informations such as the score depending on what happened in the level.
I also use it at the end of the game to show the leaderboard.
While the level I use to select the number of players only uses one static camera, in gameplay, each player has its own camera attached to their character pawn.
Fortunately, Unreal has already a function to enable/disable a splitscreen functionality.
You can set up in the project settings how the cameras are layed out.
For weapons you can get during the game, I created a parent class named "BP_Weapon" where I stored all the shared logic for every weapon.
Using that simple idea, I just needed to focus on the specific behavior a new created weapon had, instead of copy pasting every time the same code used by every weapon and also loosing time.
An example of a shared behavior on all the weapons, this is used in the parent class "BP_Weapon" to share the behavior on all the childs actor without having to rewrite the code.
Glove weapon having its unique behavior and also sharing the same attributs as its parent class; the BP_Weapon.
To simplify the prototyping of my level design, I took the time to make my code on my GPEs, easily tweakable outside of the event graph using public variables.
For example :
for the moving platforms, I created variables to set their movement speed.
I also decided that my platform should move between two target points I place in the viewport instead of hard coding the location where the platform should go.
So instead of struggling on finding the exact location values I wanted, I just had to move the target points and the platform would move accordingly.
It's simple solutions like this that would make the prototyping phase less exhausting and also faster to do !
BP of my moving platforms to move
between two target points.
Something I wanted to improve myself on in Unreal was creating cutscenes using level sequencers.
I used cine camera actors and rails for smooth camera movements and use events inside the level sequence to trigger specific things.
Something I found interesting to do is when I needed to change the color of a material on a mesh.
For that, I used a "Dynamic Material Instance"
to create editable variables I could modify on the sequencer.Â
The Dynamic Material Instance was specifically used on the squarish ground of the main concert scene.
Something I loved working on was the materials and niagara systems.
I had almost 0 experience on these things (beside doing really simple things for prototyping) but it really grew up on me !
I loved making beautiful effects to make my meshes shine !