Built the player movement and attack systems using the Gameplay Ability System (GAS).
Added metahuman and implemented live retargeting onto the metahuman skeleton.
Implemented dynamic switching between a gun and a katana, each with distinct combat mechanics.
Created combo sword attacks using animation montages and notify events for responsive chaining.
Implemented heavy, air, and ultimate attacks, including visual effects and gameplay tags for ability control.
Designed a dodge mechanic with an afterimage decoy to mislead enemy AI.
Week 1: Initial Setup
We discussed different character types for our base character; our top choices were the third-person character in Israel or a Mixamo character. However, we decided to use the third-person character in Unreal.
I created a blank 3rd person template Unreal Project.
Added a Mixamo character, set up an IK rig, created a retargeter for animations, and edited the third-person character Blueprints.
One of the reasons I pushed for using the third-person blueprint is to later add a metahuman on top of the third-person blueprint, as it has a live retarget that can be used to change the character at any point without any consequences.
Week 2: Character and Weapon Setup
We decided that the character has two types of attack, one using a gun and the other using a katana.
We added two sockets to each hand, a gun to the left hand, and a katana to the right hand. A member of our team created the gun and katana.
Added a crouching system and collision response of glass breaking on contact with the player character.
Week 3: Character attacks and Combo system
Discussed and implemented a combo attack system (Q+E+Q+E+LeftClick).
Added three different sword attack animations, retargeted them from Mixamo to the third-person character, and created animation montages for them. At this point, we did not know that Mixamo character animations do not have a root bone.
Added animation notify nodes to track animation completion and switch to the next attack in the combo.
Implemented this system in Blueprints with a complicated boolean system with many branches. It was very inefficient programming and was creating some bugs.
Week 4: Heavy & Light Attacks
Worked on fixing bugs from last week, such as blocking light attacks in mid-air or while jumping.
Decided to implement an air attack (ground pound).
Created a heavy attack triggered by holding a left click for half a second.
Focused on integrating these attacks into the combat system, aiming for dynamic combinations like in God of War. But the attacks were not feeling good.
Week 5: Damage Feedback & Polishing
Created the grayscale effect by setting saturation values to 0 and alpha to 1 in the player character's post-processing settings.
We wanted to implement damage feedback in terms of visual feedback similar to the Uncharted game series for low health:
A grayscale effect for low health was added by adjusting post-processing saturation settings. The grayscale effect is achieved by setting the saturation values to 0 and alpha to 1 in the player character's post-processing settings.
Reduced the movement speed on low health.
I also added a blood spatter on the screen on the event take damage.
Week 6: Playtest Feedback
Planned to transfer GAS and attack systems to the main project and start implementing enemy AI and damage systems.
This week, we had a few people outside our team to try our game. They had the following feedback.
There is no movement during attacks. There is a three-attack combo, but the character performs all the attacks in the same spot, which feels unnatural.
The camera is adjusting to shooting mode.
Players did not like the (Q+E+Q+E+ left-click) combo.
We need a combo attack with movement to address the movement issue, such as attack 1 taking one step, attack 2 taking another step, and so on.
I also wanted to switch to the GAS (Gameplay ability system), so I had to test it in another project before making changes to the main project file. I had to convince my team to switch to the GAS.
Week 7: Gas System & New Abilities
This week, we started implementing the GAS system in the main project. Switched jump attack and heavy attack to the GAS system.
Added three new combos that can be triggered randomly were added.
There was a root motion issue with the animations in the animations that I downloaded from Mixamo. I installed an addon in a blender that adds a root bone to the animations. Then, the animations were imported to Unreal, and montages were created. Notify us that tags were added to the animation and montages.
For playing different animations, I checked the player-owned tags and switched the animation when the owned tags count was 0.
Added a dodge and block ability to the player.
Week 8: Refining Dodge and Block abilities
This week, we mostly fixed bugs related to the dodge and block abilities.
I wanted to balance them so that they can not be abused. I decided that a player can not dodge or block when doing a heavy or jump attack. I did this using the GAS system, where I restricted abilities with the tag dodge or block. This was way better than using booleans and branches.
I also limited dodge and block on combo attack three, as the player can dodge or block attacks with the first two combo attacks but not the third one.
I also worked on changing the player's rotation to ensure that there is a hit on them when they are close to enemies, like an animation lock that allows the players to attack and hit the enemy without missing. This is still in the works, and I need to work on this more.
Week 12: Added an Ultimate
I helped my team members fix the AI and worked on a new type of attack.
I created an ultimate where the player charges up and then does a kick, which sends the enemy flying. I did this by enabling physics and adding an impulse in the direction of the kick.
Week 14: Added efficts to ultimate and dodge
I fixed a few bugs this week and added a particle system for the dodge ability. It is like an afterimage when done in front of an enemy. When attacking, the enemy hits the particles and not the player character. I also added the same effect for the ultimate ability, where the player kicks the enemy, and the particle effect follows the player like a trail.
Week 15: Final build
This week, I added the take damage on block animation and worked on refining and getting the project build ready. I also moulded a riot shield for the enemy. I also added a start screen with a still from a cinematic shot. I also added the condition that four kills enable the ult attack and added a UI for that, and disabled taking damage on performing the ult. Built the game.