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
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.
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
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
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
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.
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/