top of page
image_2022-06-30_162138485.png

Luddite

Project Status

Complete

Project Type

University Final Project

Project Duration

5 Months

Team Size

7

Software Used

Unreal Engine 5

Languages Used

C++, Blueprints

Primary Role(s)

Gameplay Programmer

If you would like to play Luddite, please visit the following page for the download:

https://me-gusta-productions.itch.io/luddite

About Luddite

Luddite is a third-person RPG that takes place in a dystopian steampunk universe. It has a focus on fast action combat, with player improvement coming from gear instead of leveling up. My main role on the team was gameplay programming, with most of my work being on the player character. As a team, we used Perforce and practiced an agile methodology with weekly sprints to keep us on track. Throughout this project I learned a lot about C++ and the many features of Unreal Engine 5.

My Contributions

As the gameplay programmer, my main focus was on core gameplay mechanics. I worked primarily on the player character and developed a ton of features including the main camera, the player's movement, combat and player abilities. Near the end of production I focused on polishing the player by adding visual effects and sound effects to make things feel more impactful. I also helped add some more minor features such as the training dummies and the hub world NPCs.

Melee Combat System

A core part of the game is its melee combat and combos. In the system I designed, lengths of animations are acquired at runtime so that different attack animations can be easily swapped in and out. Using these animation lengths, I created a timer based system to tell the program when it is allowed to move on to the next attack in the combo.

Combo&Hitboxes.gif

Because combat wasn't designed to be very precise, we opted for a more forgiving hit detection system. Each time the player attacks, a sphere trace is created in front of the player. Using this I can see if the attack collided with an enemy, and then damage logic continues from there. The system is made to be very customizable and the width, length, and offset of the sphere can easily be changed for different attacks.

Abilities

In Luddite there are 3 different weapons, each with their own set of unique abilities. Some of these were simple damage dealing abilities where I could utilize my basic melee combat system. But others were more complex and required different solutions. The spear abilities were in particular more difficult than the others.

To create the spear's multi-hit ability I used several variations of the same thrusting animation. The player quickly swaps between each one in a random order, creating hitboxes along the way. For the second ability, the lunge ability, I had to use logic from my target lock-on system (detailed below) to enable the player to slide towards the target, if the player hit the target then they performed a second attack.

Target Lock

Locking onto the target was designed to help the player easily be able to aim towards the enemy and to improve the game-feel of combat. The lock on mechanic is accomplished by using a multi-step priority based process. The first step is to detect all possible lock on candidates using an extremely large cylinder in the direction the camera is facing. During step two, the enemies are filtered down to the ones closest to the center. Finally, just in case there is an enemy behind the one you're looking at, it selects the closest one to the player, and that is the target that is locked on to.

When an enemy is locked on and the player attacks, they will always face towards the enemy during the attack. In addition to this, if the enemy is just out of range, the player will snap (in-game it appears as more of a sliding movement) to the enemy.

bottom of page