Wednesday, 1 May 2019

Week 11 & 12 - Polishing and Level Setup

Final Year Project

Week 11 & 12


For these final weeks before my final submission, I have mainly been working on piecing my game together within my level. I manually placed in the weaker enemies and set up spawners for the more difficult Brute enemy. These are set up using trigger boxes that spawn the AI class somewhere invisible to the player. For the final boss I have added a trigger box spawn as well as adding a focus camera so the player can see the boss spawn in. I have also placed health potions around the map that allow the player to replenish some health. 












This is the current play through of my project. 











This is the current state of my level blueprint. This includes my individual brute spawns around the map, camera changes and my boss room mechanics. Also included is my original idea for a wave spawner for the first room but sadly due to time restraints I have had to cut it.



Monday, 8 April 2019

Week 9 & 10 - Final Enemy/Root Motion Testing/Beginning Polish

Final Year Project

Week 9 & 10


Now that I am approaching the final weeks for my project I will no longer be developing any new content. Because of this, I will now be cutting the dragon enemy from my game and instead have different variations of the three currently implemented enemies as well as polish them over the coming weeks.  

The third and final enemy I have developed is the Banshee. This enemy has the ability to cast a variation of spells that will force the player to use their space wisely. I also believe that when the Banshee is combined with either the Vampire or the Brute, it will lead to varied and difficult game play. 

When I first started developing the Banshee I started with the basics by setting up a simple behavior tree and AI controller. Now I had to research into what spells and attacks I should include with this enemy.  I first looked into creating a basic spell such as a fireball. I researched into creating particle based projectiles and then sync it up to the animation. For my next few attacks I took inspiration from World of Warcraft where the player has to time their movement in time with attacks. The second attack is a timed fire whirlwind that spawns at the players location after a delay. I achieved this by adding a scene component to the player that acts as a spawn location. When The cast animation is finished, a small cloud is spawned where the player is, this location is then set as the cast location and after a small delay the fire whirlwind is spawned there. 


(This is the first attack sequence including the fireball and whirlwind attacks)

As you can see in the picture above I have a switch on int that makes the Banshee shoot 4 fireballs and then move onto the whirlwinds. The Banshee will keep casting whirlwinds until the 5th is cast, then Phase 2 is set. 

When creating the attack sequence for phase 2, I wanted the player to feel less powerful than the Banshee, this would created dynamic game play where the player isn't hacking into the enemy until it's dead. The second phase of attacks include an AoE attack that causes the player to slow down when inside and a large beam of frost. I also decided to leave in the whirlwinds during this phase to create more pressure for the player. 


The second phase works in a similar way to the first phase but with a few differences. In this case, the first cast is the AoE spell, then 4 beams. once this is completed the Banshee is reset back to phase one and all whirlwinds are removed. 

 

This is Behavior Tree I created for the Banshee. I have used a selector to determine what phase is activated. Creating this enemy has given me a greater understanding of behavior trees and I believe I have the ability to create even more complex AI. 


As I had time left over this week I decided I could try and fix a major issue with my project. root motion animations. To fix this issue I imported a mixamo animation into 3DS max and added a root bone as well as copied the X location the Hip bone to match the movement of the animation. I had successfully done this, however once imported into unreal the animation plays sideways instead of forward, I believe after another week of polishing I will have this problem sorted and begin adding root motion animations into all my characters. 


Finally this week I added some basic world lighting into my level to give it an overall feel, over the coming weeks I will be adding more lighting and polishing the level.

Saturday, 30 March 2019

Week 7 & 8 - Second Enemy

Final Year Project

Week 7 & 8


Now that my level is mostly finished I will be spending from now until close to deadline creating the various enemies in my game and polishing main mechanics. Due to this being my first experience with a fairly complicated AI, This task unfortunately took two weeks.This was due to the fact I was adding in phases to the enemy and also polishing various player mechanics for smoother combat. The only issue I am currently facing is that once the enemy performs their jumping attack, the mesh snaps back into it's original position. This is due to the lack of a root bone in the animations I acquired from Mixamo but I am currently researching into how to fix this problem. 





Here I have made some changes to the receive damage node in my player blueprints. I have added two separate functions that play the block and hit reaction animations depending on if the player is blocking or not. These functions also disable input while playing. This leaves the player open to receive another attack.




This is the current layout of the behaviour tree for my second enemy. the first half is similar to the basic enemy whereas it moves to the player. However, I have added wait functions to add realism to the attack animation. I have also added another attack that can only take effect once the phase 2 key is set. 



Sunday, 17 March 2019

Week 6 - Finishing Level

Final Year Project



Week 6


As I was ahead on my schedule, I decided that I was going to focus on my level this week so then I can focus on mechanics until final deadline. As I had already created the majority with geometry within UE4 I decided to fill out my level with assets as well as make some design changes to the map.









This is the current layout of my level in a birds eye view. I have tried to keep to a modular layout so I could create simple areas from asset packs I acquired through the UE4 marketplace.  





This is the current player start location, I have changed it from an open room to a landing to show that the player has just entered this dungeon and their only way out is to progress. 












The first room that the player enters is a destroyed hall full of basic enemies. This gives the player an area to get used to the combat mechanics. 




The player will then progress to this hallway where they will encounter the next type of enemy witch is currently a work in progress. This area gives the player a choice either to get closer to them to fight in an open space or take them one at a time at the rubble. 



However, if the player were to lure them back to the rubble, thy will be faced with two more brutes coming from a much tighter hallway. this adds a trial and error system as the player will have to learn where enemies are as to not be taken off guard. much like in dark souls. 




Once completed, the player will then enter this area, while it looks open and safe, once the player reaches a certain point in this room, a small boss fight will begin against the first beast, the griffon. 













After the boss fight, the player will then proceed though the archway into this room. here they will find a few items to help them along the rest of the way such as healing items and spells. 















The player will then proceed along this bridge where they will face the banshee. The player will have to fight these enemies on the bridge while trying not to fall off.












Once the banshees are defeated, the player will progress to this area. once here they are left with a choice, they can either proceed to the final boss battle or climb the other set of stairs to find the great sword.













This is the current work in progress for my final boss room. I am planning on adding a second phase where the dragon will knock down a wall which leads to outside. Here the dragon will be able to fly and use more attacks.

Tuesday, 5 March 2019

Week 5 - Player Combo and Stamina System

Final Year Project

Week 5


This week I mainly focused on Creating a combo and stamina system for the player. I began by creating three separate animation montages and adding anim notifies for saving the attack and resetting the attack. If the player continues to attack before the attack is reset the next montage will be played using a switch on int attack function in the players blueprint. 


This is the current combo system in the player blueprint, I plan on also adding in a heavy combo system using the right mouse button. 

As well as this combo system I have also created a function stamina function. when the player performs moves like attacking and dodging, their stamina will deplete. When the players stamina reaches 0, they will not be able to perform any of these abilities, they will also not be able to block enemy attacks. I achieved this by adding a Boolean to check when the players stamina is 0 and set the no stamina check to true.  As well as this I have also added a stamina regeneration system that will replenish the players stamina if they are not performing anything that requires them to use stamina. 







Wednesday, 27 February 2019

Week 4 - Enemy damage system and start of level block out

Final Year Project

Week 4

Since my basic combat system was almost complete, I decided that this week I would begin work on adding damage to the enemy and attaching weapons to the player through sockets. 

Setting up damage for the enemy was fairly simple. Once I had attached the sword to the player, I added a collision box around the edge of the blade. I then set up a overlap function with the sword in the enemy blueprint. Then I had to create a basic health system to test enemy death. I set this to a low number so that I could test attacking the enemy. 

The first problem I encountered while creating this was that when the enemy dies they freeze slightly before playing the death animation. This is an issue I can address while in the polishing stage of my project. 








This clip demonstrates the enemy death function. now that these basic combat mechanics are complete I will now be focusing on creating more enemy types as well as player abilities alongside my level design.













Now that I am currently on track for completing my project for the deadline I am currently working on my level block out. I am creating this so that I can experiment with my various enemies to see if I can make my project more challenging, for example, fighting a large enemy in a tight space. 


This is the current state of my level block out, I plan on completing this by the end of march. 

Week 3 - Enemy AI

Final Year Project

Week 3

This week I mainly focused on creating the first enemy AI for my project. I decided to start with something basic so that when it came to creating the more complex enemies I would only have to expand on the mechanics that are already in place. As I have had experience in creating AI using Behaviour trees in previous projects, I started by creating the various tasks needed for a basic AI such as sensing the player, chasing the player and attacking the player. 



This is the AI controller currently implemented into my basic enemy. This is where the player is set as the target for pawn sensing. 


Now that basic functions were added to the AI, I began to create more tasks that would make my enemy seem more real. I added a function that makes the enemy search the last know position of the player. I also added a focus task that allowed the enemy to follow the player more smoothly. 


This is the finalised Behaviour tree for my basic enemy AI. Once I begin to add more complex AI to my project I will be expanding from this behaviour tree.




This clip demonstrates the pawn sensing of my AI and how it searches the players last known location.














Thursday, 7 February 2019

Week 2 - Player Mechanics and Basic Animations

Final Year Project

Week 2


This week I decided that I should begin work on areas that I have knowledge in already such as the player mechanics and AI. I started by adding simple mechanics such as movement, sprinting, attacking and the ability to lock on to enemies. along with creating these mechanics, I began adding animations to these mechanics, the main reason I did this was to decide early on what the overall feel of my game would be like and after adding in animations I decided that I was going to keep my game slow paced with difficult combat. Once these were added I felt like I should finish the week by learning how to create a lock on system. During my research I learnt how to make my player focus on the closest enemy in a minimum range using camera rotation. 

     

These are the currently implemented player mechanics including target lock-on, attacking, blocking, movement and sprint which includes a timeline to provide a smoother transition between walk speed and sprint speed, this also provides a smoother transition for animations.


This is the current state of the state machine within my animation blueprint, I have included a combat stance in my game that is still in progress, but when the player enters this stance they become more effective at blocking and moving during combat. 


Finally this is the blend space I created for the idle/walking/running states of my character, this creates a smooth transition between animations depending on speed and direction. Currently I have only included one direction but when I come to the polishing stage of the project, these will hopefully be included. 




























Wednesday, 30 January 2019

Week 1 - Proposal

Final Year Project

Week 1



My first task for my final year project was to create a proposal that consisted of an overview, motivation and rationale, technical overview, project deliverables and areas for research.

For my project I decided to create my own combat system for an RPG inspired by games such as Dark Souls, The Witcher 3 and For Honor. Here is a basic run down of my proposal:



Overview

We follow Paladin Recruit Petyr Tedric that has been sent on a quest to Eliminate the forces of Hell and to recover a holy relic, however, there is more to this quest than what meets the eye.
The player will explore this dungeon in search of enemies, relics and upgrades. While they explore the dungeon, Petyr will also gain experience and level up his skills and abilities through combat and various tasks.


Motivation and Rationale 

The reason I chose this project was because I personally specialise with player mechanics and AI as I have previously worked on these areas in previous projects. . I believe with these skills I could create an effective combat system for an RPG. 


Project Deliverables

•Fully functional combat system that rewards the player for skilful gameplay as I am aiming to have a risk reward system in parts of the game..

•Full level polished suited to game environment and suited to mechanics, e.g. boss fights.

•Various completed enemy AI that challenges the player with various abilities.