The Final Journeyman Post

So Journeyman is finally coming to its end, the last few weeks have been rather slow for me due to my tasks being completed and the final merge having been complete.

Once the final merge was completed I quickly contacted my Lead programmer to see if there were any more outstanding tasks that needed to be done before the project is passed off to the designers. However unfortunately there weren’t any tasks, I notified my team that even though I was completed I would still be available if anyone had any issues.

Over the Easter holiday our artists were hard at work to get their assets ready to go into engine, this meant that after the Easter break almost everything was ready for our game.

Unfortunately after Easter we found out that our characters would not be ready for the game in time and so our backup plan was put into place. Our lead programmer Tom had created an Alucard character that we could use for our main character which personally I feel works amazingly with the environment and so not having our main character didn’t cause much of an issue for our team.

One of the final tasks that I had as a team member was walk one of the designers through the setup of Wave Spawners as they would be in charge of setting up the Spawners inside of our vertical slice. In order to do this in a more detailed way I spoke to Dawid (Designer) over a discord call where I shared my screen and walked them through the setup of each spawner answering any questions that they had while we went through the setup. An unexpected issue was that Dawid was not currently on our GitHub, which meant that it took a little longer to get them setup as we needed to download GitHub and get Islam (Buildmaster) to add them to the repository.

Since then our team began work on the vertical slice and it looks… AMAZING – https://www.youtube.com/watch?v=aU7YpnL4xXI

The video aims to show off an example of what the completed game might play like and the typical environments that would be seen. Not all mechanics and work is shown off inside of the vertical slice due to time restraints for the video being 2 minutes.

As a final note for Journeyman I would just like to give a shoutout to my team for making the project

 

Week 10 – Merge to Master & Rosary Death Particles

During this week our team got all of the current work inside of one project however another issue occurred with merging which cause some of the work to go missing. Luckily before the merge I took a backup of most of the branches which made it fairly easy to fix the missing content once we knew which content had gone missing. I also merged together all of the projects that I worked on in order to make it less likely for conflicts to occur the next time we moved onto the master branch.

Rosary Death Particle Effect

After making the Particle effect for the Rosary pickup, I found that the way the enemies were removed from the screen was a little sudden as at the beginning all enemies on the screen would be removed.

As I am done with all my tasks, I decided to work on a particle that would be used to explain why all the characters die. My idea for this particle was originally to be a blood explosion that would occur at the enemies location just before removal in order to give the illusion that the enemies explode.

However again this still didn’t feel correct as the main question that I had for myself was… Yeah but why do they explode. What I decided on is that on picking up the Rosary Pickup the heavens open up and call down lightning on all your enemies, in order to create this I found a similar particle effect from one of the paragon abilities, inside this particle effect there was a static mesh for lightning which I used in order to create my lightning strike inside of my Rosary particle effect.

After lightning was added to the particle effect it still felt as though it was missing something as the enemies explode in blood after being hit by lightning but after that the blood goes up but never comes back down. This made me think about how I could explain where the blood goes which brought me to the idea of having some blood rain down on the player after the original blood explodes out of the players view. This was a subtle detail to add but I feel as though it adds a lot to the effect.

Week 9 – Creating A Bat Swarm Ability

As all the tasks that I have been assigned are completed, I spoke with my teams lead programmer about some of the tasks of the Trello board that were still outstanding. After speaking with him about some available tasks, I decided to take the task of programming the Bat Swarm Ability.

Bat Swarm Ability

The original plan for the Bat Swarm was to use it as a dodge ability where the player will turn into Bats temporarily and avoid damage. However as there is already a dodge ability we changed this to an offensive ability which would allow the player to deal damage in the area of the swarm.

In order to create the swarm area, I created a Bat Swarm Blueprint that on spawn collects all of the players SOB (Swarm of bats) stats. This would allow the ability to be upgraded through a shop in game and will also make it easier for the designers to alter as they will just need to alter the stats in the Player BP when testing. The stats that we need for this ability are Duration, DPS and the Radius of the swarm.

Then as I was working with some else for the VFX I needed I needed to make it work with the VFX provided, I was given a separate blueprint containing some bats that fly around a centre point inside of the blueprint.

VFX Given: https://www.youtube.com/watch?v=-f65INVrklk

In order to make this ability more effective I Looped the amount of Bat Swarms to spawn and altered their VFX flight speed to 30 in order to make the bats feel as though they are rapidly flying around the player. I settled on 7 Bat swarms to spawn however I made sure to make the “Amount of swarms” a variable in order to make it possible for the designers to increase or decrease the amount that should spawn. I also made some small changes to the speed multiplier ranges of the bats in order make some of the bats slightly faster/slower than other bats to get a better spread of bats.

The final things that I did for this ability was the implementation of damage to enemies within the spawn. I did this by creating a AOE (Area of Effect) Function inside of the Game mode blueprint. This function checks for overlaps in a sphere, depending on the AOE will change whether line of sight is required and so when calling the Spawn AOE Function there is a booleen for checking if LOS (line of sight) is needed. If line of sight is required then it will check to see if a line trace can be done from the centre of the swarm to any overlapped actors. If the actors are hit by the line trace then the ability will deal damage to that pawn. As a final touch for the AOE function I added a debug which allows for the user to set a debug duration and colour which then allows for the AOE bubble to be visible. This can be extremely helpful when trying to find the perfect size for an AOE ability, especially if the VFX has already been created.

Final Ability: https://youtu.be/iteRrGONEbs

Next Steps

As a team our next steps are getting the whole project merged together and to start importing assets and to continue polishing some of the work that has already been completed

 

Week 8 – Creating some VFX

During this week I decided to work on some VFX for some of the blueprints that I have worked on in the previous weeks.

 

Rosary Particle Effect: https://www.youtube.com/watch?v=uyvLhL5PTGg&ab_channel=MatthewStott

When I first started creating this particle I wanted to create a rotating cross that has a trail following behind it. The main challenge that I encountered with this was giving the illusion that the cross’s never Despawn. In order to do this I needed the particles to return to the exact spot that they spawn.

I managed to achieve this by using a velocity over life node and the plotted the different points in the particles life. Once that was done I added a ribbon to the particle to make it more apparent to the player that this is a Powerup.

 

Spawning Particle Effect: https://www.youtube.com/watch?v=gRDb3iMwHQc&ab_channel=MatthewStott

In order to create this particle I started by finding a free to use magic circle as a base from https://permaclipart.org/clipart/magic-circle-blank-03/, after this I added some Rotation and Size by life which makes the circle feel more alive. After this I added some smaller details such as waves and sparkles inside of the magic circle.

While creating this I spoke with my team showing the progress and asking for feedback in order to make something that the team was happy with. The original design was coloured green based off some of the Magic Circles found inside of Castlevania Lord of Shadow, however due to our enemies being vampires we decided that a red colour would be more appropriate.

Once this was created I applied it to the Destructible Spawner, I did this by line tracing from the potential spawn point, then once the line trace hits the floor it will spawn the particle effect at the impact point and then 1 second later spawn the enemy on top of that particle effect

Next Steps

In the next few weeks I will be working with the rest of my team in order to get the whole project merged as well as creating the code for the Bat Swarm Ability that will then be linked with some VFX that are being created by my lead programmer.

 

 

Week 7 – Destructible Spawner

During week 7 I started work on a destructible Spawner,

Even though one Spawner has already been created most of the code for the destructible Spawner is completely different to the wave Spawner as one Spawner will continuously spawn enemies whilst the Spawner has health and the other only spawns enemies in waves whilst there are waves remaining.

I also wanted this Spawner to have many changeable settings in order for the designers to create a range of encounters using just the one blueprint. Some of the options that I added to this Spawner were as follows:

Initial Wave Spawn – This option allows for the Spawner to spawn a specified amount of enemies when the player first enters the encounter.

Invincibility after hit – This lets the Spawner become invincible for a specified time after the player deals damage to it which will allow some time for some enemies to spawn.

Gargoyle Option – This allows for the Spawner to interact with a gargoyle which will attempt to stun the enemy whilst its alive. If this option is enabled the gargoyle will be able to act as the Spawner health and can spawn enemies as long as the gargoyle remains alive.

As mentioned in the previous blog, I have now ran out of image/gif space on this blog website and so code will be shown using a link to the blueprint.

Destructible Spawner Code: https://blueprintue.com/blueprint/e85j-ptj/

Week 6 – Spawning Enemies & Pickups

Were officially past the half way point in journeyman now… were only half way and I am out of storage space for Gifs…

For the start of the week I got in a call with Ryan in order to help him get his destructible objects to spawn a random pickup when his destructible is destroyed.

I wanted to give the game designers the option to pick which actors the pickup spawned, so I created an array for the Spawnable actors that the destructible can spawn either specific pickups or random out of multiple pickups.

 

 

 

 

I took another look at the pickups that are already inside of Castlevania and came across a pickup called Rosary that has been used to clear the enemies on the screen, which could fit well with the brawler gameplay. I then put together a blueprint that gets all the enemies on the screen and destroys the ones that can be destroyed using the rosary powerup.

 

 

 

 

 

 

The notes on Trello which we have been using to keep track of tasks were helpful but not detailed enough to know which route to take when spawning the enemies so I decided to speak to the design team in order to get a better idea of where the enemies should spawn.

The designers got back to me and said that they wanted the enemies to spawn off screen and then walk into frame to fight the player. They specified due to the enemies being spawned off screen it doesn’t matter if the enemy spawns in the air and falls to the ground as the player wouldn’t be able to see this happening.

In order to create this I made two separate blueprints. One which is the Spawner itself and then some spawn bounds that the designers can place in the level to define where the enemies will spawn when that particular Spawner is activated.

Due to the storage on the blog website ill be linking the blueprint for the wave Spawner and its all commented to explain inside the link

https://blueprintue.com/blueprint/wda6xczb/

Once it was working I demonstrated it working to my team during our weekly Uni lab session and was asked by our supervisor asked if I could attach a particle effect to the actors that spawned which I quickly implemented during that session and made it possible for designers to change the particle effect that the enemies spawn with. I also added billboards in order to make the actors easier to select in the viewport as selecting collision boxes can be a pain.

The Spawner is now ready 3 days before the deadline and is just waiting for the enemies to be finished so that the designers can start creating the fight encounters.

As a final note with all the work from the team being put in we have met our minimum value product early and can begin polishing the things that we have created so far, we also managed to receive team of the week during the presentation which was given by our groups lead.

The plan for the next few weeks is to polish what has been made as well as to create a destructible Spawner that will continually spawn enemies while it remains alive as an extra option for the designers to place throughout the levels.

 

Week 5 – Gitting Merged & Spaghetti Code Cleanup

GitHub

GitHub is finally ready! However nothing is ever easy and so it came with a few difficulties,  much bug fixing, 4 different repositories and A lot of work from our Build master and it was finally working. Until I tried to use Unreal Engines built in source control…

After several hard crashes when trying to use Unreal Engines source control I decided to just handle my changes inside of the GitHub desktop which appears to work.

The final issue with Git that occurred this week was unfortunate but simple to fix, when the merge onto Git happened some of my Blueprinting inside of the player character had disappeared, along with variables inside the player however as we had been working on our own individual projects prior to the merge I was able to move the Blueprints over quickly.

Changes To Pickups

After all of that was over I managed to implement a decay sequence that once complete removes the pickup from the game, a small particle effect to indicate to the player that this item is something of interest and the added the ability for each pickup to hover up and down that the designers can toggle and change easily.

While I was working on the floating system I found that a lot of the code that I was using for the pickup system was a mess. I took a bit of time to clean up the code and to setup some functions inside the player to make it easier to increase the players Coins/Health. I took multiple passes on the code in order to try and make it as clean and easy to understand as possible.

Final Things

I also added some more changes to the Holy Water Projectile, when the projectile is thrown the liquid inside of it will adapt to angle of the bottle, I have also set this up to have a changeable viscosity so that the designers can decide how much the liquid should move, this could also be used inside of a blood bottle in order to make the blood move slower to more closely resemble the actual thickness.

Week 4 – Making Things Prettier

Overview

During week 4 I wanted to work on making the pickups look more presentable, in order to do this I started work on the Holy Water powerup/pickup.

Asset Creation

I started the week with some small modelling for the Holy Water Pickup, this is one of the first times that I have used Maya and so it took some time to stop pressing the wrong buttons and understand where everything is located.

 

I didn’t turn out perfectly how I wanted but it resembles the Castlevania Holy Fire well enough for a simple blockout and can replaced/integrated later. I then took it into unreal in order to start playing around with the behaviour of this pickup.

Blueprint Magic

I created a ProjectileBP for the Holy Water and then added some projectile movement to show an example of how it could look.

The team also released a version of our game with the basic player movement in order for us to be able to work with the player character. This meant I could setup the ability for the player to throw the Holy Water as well as adding in an ammo count for the Holy Water.

I did this by having a separate fire actor spawn once the holy water hits the group, this actor the gets all of the overlapping actors and checks if the actor is flammable, if they are then they will be set on fire.

Week 3 – Getting Stuff Working !

Overview

During week 3 I got most of the blueprinting ready for the pickup system. While waiting for GitHub to be ready our group decided to continue working on the prototypes that we had inside of our own individual projects until it is ready to be put onto GitHub.

Week 3 Getting it to work!

So in an attempt to keep my blueprints as usable as possible I did my best to handle absolutely everything inside of the Powerup MasterBP and reference the player as little as possible in order to minimise the amount that needs to be updated onto the new Github at a later date for a smoother transition onto Git

In order to keep things tidy inside of the MasterBP as well as increase productivity later I used functions in order to create most of my individual pickup effects.

In order to keep it all inside the master blueprint I needed to find another  way to check which pickup the player was picking up. (Note from future Matt, Use child blueprints!)

For example with the health pickup it will first check to see if the player actually needs to use a heal and then if they do it will add an set amount of health to the player. In order to stop the player from being able to go over max health I have applied a clamp before setting their health.

Week 1-2 – Finding Our Game

Hi,

My name is Matthew Stott, and this is the beginning of my Journeyman Development Log for 2021. In which I will be talking about my development process for the Castlevania themed vertical slice.

The first week started with meeting my team to discuss the coin op theme and how we would decide to tackle it within the team. After taking a poll we found Castlevania to be the most liked within the group, however, to gauge interest we still decided to get together in a discord call to allow for peoples reasoning being heard for their decisions.

We took some time do some research of our own and came back later to talk about the common things that you would expect to find inside of

Castlevania and to talk about how we could implement gameplay.

For my own research I watched multiple playthroughs of games to get a general feel for the gameplay and scripting required for the game to easier break the game down. After this I found some previous examples of people using the Castlevania theme in their own projects to see how people are diversifying the Castlevania theme.

In week 2 I started quickly implementing some easy-to-use pickups that can be placed around the map. I wanted the user to be able to place them and then decide what the object looks like as well as being able to decide whether its breakable? Or if it is breakable will it spawn, and what will it spawn.

So I started work on a quick blueprint that would do that for me

 

Overall it turned out well for a quick test, I’ll be adding some more code to it over the next week to make it feel more like a world object rather than a box Spawner.