Personal project
Engine: Unreal Engine
Genre: Thirde person shooter
Platform: PC
Team size: solo project
Aboute the project
This is a thirde person shooter game I am currently working on where trying out new things like making my own ability system and Using Slate to make UI instead of using unreals User widgets.
UI
Unreal Engine Slate UI
In this project currently all the UI is made using Slate instead of Userwidgets. I decided to use slate because I wanted to try different ways to make UI in unreal engine. The UI I have currently made is the health bar for the player, ammo display for the guns and the UI for the ability cooldown's. Learning slate was difficult in the beginning when I didn't know how you did everything but it became les difficult as time when on. the most difficult part of making UI using slate is when I hade to get a shader from the editor and put it on a image, this was solved by having a variable of that shader in the Hud class that the UI can axes.
​
One of the issues I hade when working with slate was that the game would crash after around 30 seconds and I later found the material instance pointers inside the UI class where geting deleted because the Slate UI class is not a UObject. I managed to fix the issue by having the pointers for the material instances in the HUD class that the UI have axes to.
User Widgets
The only UI in the project at the moment that uses user widgets is the UI for the Buff and debuff display. Why I used user widgets for the buff display is because I couldn't figure out how to add objects to a Vertical box in runtime using slate so until I figure out how to do that the buff display and the buff icons are going to use User Widgets instead of Slate
Ability system
In this project I wanted to try to make my own ability system for the game. The current Iteration of my ability systems works by having a objects in the world that has all the logic for each ability inside of it and the player have axes to all of those objects. When making the ability system I tried to make it as scalable as possible so it can work with different type of ability's.
The abilitys I have created
Buff / Debuff system
The buff system uses classes that inherits from UObject that have to logic for each buff and data assets for what class the buff is and all info for the UI. When a new buff is applied I use the NewObject function to make the buff object and then add it to the list of buffs inside the player. Currently all the duration countdown is handled by the player. Currently the buffs can only effect Damage, reload speed, Movement speed and Damage mitigation.
Full auto
Weapon System
Gun / Range weapons
The weapon system I made for the game is created to be scalable. when I create a new gun I can use the same base class and change the stats in the editor to make the gun act differently, the type of guns I can make currently are full auto, semi auto, charge (increases projectile speed and damage the longer you hold down the fire button) and burst guns and I am planning on adding more gun types. The most challenging of the gun types to implement was the burst option and that was because after every shot I hade to check how many shoots hade been fired and if they where less then the amount of shots ber burst or if the shots left in the burst is less then the remaining bullets in the guns magazine so it knows if it has to stop the burst midway trough .The gun is a separate actor that is attached to the player when equipped, the player has a variable that is the equipped gun so the player can use it.
Melee weapons
The weapon systems also works with melee weapons because both the melee and the range weapons use a delegate to bind functions that are called when the player presses the fire button(left mouse button) and the weapon script has the logic for what it is suppose to do when the weapon is used.
​
the current version of the melee system uses a timeline to lerp the rotation and position of the weapon to simulate a animation because I don't have a character with a rig so I cant attach the weapon the hand bone and animate the weapon attack

