About

Project [REDACTED] is a single-player, first-person fighting parkour game for Windows in which players must skilfully navigate their way through levels and destroy the generator to complete them.

Context

Type:

Semester Project

Role:

Programming, Organisation, UI Design

Size:

3 Developers

Time:

~2 Months (May - July 2024)

Engine:

Unreal Engine

Project: [REDACTED] Logo

Introduction

I worked on this project with 2 other students. The initial idea was to make a fast-paced action jump-and-run game, inspired by gameplay mechanics from Mirror’s Edge, with added combat. We wanted to have different level sections: parkour, then a fighting segment, then again parkour and so on.

We chose to make a jump-and-run game also because the basic mechanics for a game of this type are easier to make and because we weren’t sure how well we would work as a team, as we hadn’t worked with each other before. We also had no specialized programmer, so we weren’t sure how well we would be able to program more complex new game mechanics.

Obstacles

With the exception of the lasers and moving platforms, I did almost all other work on the obstacles the player can face in the game (excluding simple chasms and wallrunning - that was part of level design). One of the things that took the most work was the breakable walls / obstacles. For that I used the “chaos breakable” Unreal function. The player can punch, which sends a signal from the player character that, if it hits certain hitboxes, leads to different outcomes, like in the case of the breakable walls, makes them break with a force that feels appropriate for the speed of the game.
I also programmed small consoles which the player can break with the help of the same chaos breakable system as well as collision boxes, which leads to doors opening up.

One of the biggest problems i had with the chaos breakables was that pieces of the broken wall would still lie aroud and have collision, which was very annoying for the player and could even softlock them. I had to research quite a bit, but in the end i had to use and edit a Unreal Engine content Blueprint for it to work, more specifically the “FS_SleepDisable_Generic”-Blueprint. By changing the settings in this Blueprint, Unreal Engine disabled the collision on pieces of the actor that were no longer moving, depending on the threshold value given in the blueprint.

Checkpoints

For a good parkour game that aims to reach as broad of an audience as possible, it is paramount to have a good gaming experience with not too much frustration, as that would just kill motivation to play the game. That is why we wanted to implement a checkpoint system. I was responsible for programming that, as well as a respawn system when the player character dies.

Enemy

It was planned to have more enemy types in the game, but I only managed to implement one enemy type, which essentially serves as a mobile obstacle. I programmed it with a simple behavior tree and a hitbox that triggers a game over when the player touches it.

Organisation + Time Constraints

For this project, i used HacknPlan to organise our workflow. HacknPlan is an online project management tool that uses Kanban Boards. For organisation and general overview, this agile method was much better than using our Game Design Document.

During development, we had to make some sacrifices. Several other mechanics and interactions were planned, however, as the game had to be made in a limited time frame, some features had to be cut to prioritise other more important ones. Among those were a combat system, more enemy types with different attack patterns, more movement mechanics like swinging, vaulting, hooks and a charge jump as well as a greater variety of interactable objects. Instead, we focused on getting the existing mechanics to work in a satisfying and bug-free manner.

Conclusion

This project was my first one in Unreal Engine on this scale. It helped me develop my organisational skills, like knowing when to prioritise certain features over others, which ones are must-have and which ones are just nice to have. It showed me knowing your teammembers’ strengths is very important to distribute work accordingly. Also, it helped me deepen my programming skills in Unreal Engine’s Blueprints and Visual Scripting.