30/03/25

Souls-like combat

Welcome back to my Knight Veil Blog. The main selling factor of this game is its soul-like mechanics and this week ill be solely focused on developing it in Unreal Engine Five. I did this in a flexible way that allowed me to update the animations and values for the combat framework system. I won’t be incorporating any other type of combat mechanics other than strictly melee because of the lack of time I have left.

A key factor in a player's experience with souls' games is a diverse and cohesive weapon system, throughout this week I designed and developed a variety of weapons. I initially gathered multiple weapon assets from Fab, an Unreal Engine 5 marketplace. After acquiring the weapons and importing them into my project, I created a master weapon which exists so that the children classes share and inherit the values from the master.

In the game, my objective is to allow the character to pick up the weapons from chests as they progress through levels, to implement this I created an interaction system, this way the player character will be able to go towards a weapon to interact with it and pick up the weapon. However, I then encountered an issue where if I equip a weapon and then find another weapon and equip it, both weapon meshes become equipped simultaneously and share the same sockets. To fix this bug, I developed a system where if another weapon is picked up, the player character automatically drops the sword they are currently holding. But this system is only temporary and I plan to implement a robust inventory system for the players to use.

Furthermore, I implemented socket locations on the character to accurately place where the weapons will be located when a weapon is equipped or unequipped. For the equip and unequip input actions to work I first set up a flexible animation system, this is due to the variety of weapons that are implemented with different animations regarding equipping and unequipping the weapons. This system ensures that all the variety of animations are handled in a montage action enumeration which allows me to customise different animation montages for different weapons. For the animation to occur, I set up a user input that controls both the equipped and unequipped animation trigger for the character.

Additionally, I gathered and imported free equip and unequip animations from an online marketplace, which was then converted into an animation montage so it could be selected via the data table that I created to place the equip and unequip animations. I wanted to add conditions during animations such as making the weapon attach to the equipped socket when the player picks it up, and then make it attach to the unequipped socket when the player decides to sheathe the weapon, so I created an animation notify which allows specific events to happen at certain points I select during the animation.

An issue I encountered is that if I spam my equip and unequipped button, the player character rapidly transitions throughout both animation montages. To eliminate this design flaw I created a state called the general action state where the player character isn't performing any animations. This allowed me to implement the design feature that the player character has to enter the general state before equipping the weapon, as well as entering the general state after unequipping the weapon. This allowed me to incorporate a delay by adding the state late within each equipped and unequips animation montage, ensuring the whole animation must be played before the character can perform the next action.

Overall I made a good start to the combat system by utilising unreal engine features such as anim notifications, state machines and so on. Next week I will build up and expand on the game combat

09/03/25

Knight Veil

β™ 

Knight Veil β™ 

Eighteen