Portobelly Production Journal #45

25/03/2019

Last week I set myself the goal of implementing a damage system onto the enemies attacks. I managed to complete this goal and I exceeded my expectations as I was also able to add knockback and damage indicators to these attacks.

This week will not be very production heavy as I need to focus on creating a presentation for one of my other modules.

Fig 1 - 25 03 2019 chat

 

Figures List

  1. Rees, O (2019). 25 03 2019 chat. YouTube [video] 25 March. Available from: https://www.youtube.com/watch?v=uT3Okle55rE&feature=youtu.be [Accessed 04/04/2019].

Portobelly Production Journal #44

21/03/2019

Today I plan to fix the jump detection system and adding an indicator to the player to display when the player has been damaged.

Fig 1 - Using sphere traces to detect the ground instead of line traces

Fig 2 - Detecting the ground using sphere traces blueprint

To allow the player to chain together consecutive jumps, I created a system that sends a line trace from the base of the player that detects the ground. If the ground is detected by this line trace the player is able to jump. This system work perfectly on the flat ground, however, when the player wanted to jump on rough or sloped surfaces the line trace was unable to reach the ground due to Belly’s round body. To solve this issue I replaced line trace with a sphere trace that changes size depending on the size of Belly.

Fig 3 - The player flashes white when damage has been inflicted

Fig 4 - Receive damage flash blueprint

One of the problems with the damage system at the moment was that there is no indicator of when the player is receiving damage apart from the knockback. To allow the player to see when damage has been inflicted I created an effect that would make the player flash white when they have received damage. This effect is created by a timeline that changes the value on the emissive and colour parameter of Belly’s mesh material.

Fig 5 - Normal damage flash

Fig 6 - Quicker damage flash

When creating the flash effect I originally set the effect so that it took 0.3 seconds to complete which we agreed felt too long for the effect as if the player got attacked in rapid succession they would not be able to display individual flashes. I decided to reduce the speed in which the hit flash lasted so that the player would return to the normal colour quicker.

Fig 7 - Using the slam ability to apply damage and knockback to the enemies

While the slam ability can be used to break through destructible platforms it’s secondary use is to apply damage to enemies so that they can be absorbed quicker as they have less health. To add more impact to the slam ability I decided to add knockback to the ability so that enemies will be knocked back on impact with the slam radius. Something that needs to be changed with this ability is that the slam radius scales to the size of Belly which makes slamming some of the enemies difficult as the radius is too small when at a small size.

 

Figures List

  1. Rees, O (2019). Using sphere traces to detect the ground instead of line traces. [offline]. [Accessed 25/03/2019].

  2. Rees, O (2019). Detecting the ground using sphere traces blueprint. [offline]. [Accessed 25/03/2019].

  3. Rees, O (2019). The player flashes white when damage has been inflicted. [offline]. [Accessed 25/03/2019].

  4. Rees, O (2019). Receive damage flash blueprint. [offline]. [Accessed 25/03/2019].

  5. Rees, O (2019). Normal damage flash. [offline]. [Accessed 25/03/2019].

  6. Rees, O (2019). Quicker damage flash. [offline]. [Accessed 25/03/2019].

  7. Rees, O (2019). Using the slam ability to apply damage and knockback to the enemies. [offline]. [Accessed 25/03/2019].

Portobelly Production Journal #43

20/03/2019

Today I focused on implementing damage for the boomshroom enemy.

Fig 1 - Boomshroom mine inflicting damage when the mine has been triggered

Fig 2 - Mine triggered collision blueprint

Fig 3 - Mine damage and knockback blueprint

When discussing the Boomshroom’s mine, we decided that the mine should trigger it’s explosion when the player overlaps with the mine’s trigger radius. When the trigger has been activated the mine will inflict damage after a set amount of time. To add more impact to the explosion, I decided to add a knockback to the player when the damage is inflicted from the mine. Adding the knockback gives a form of visual feedback to the player so that it exaggerates the effect of the explosion.

Fig 4 - Boomshroom’s self destruct causes damage and knockback to the player

Fig 5 - Boomshroom causing damage blueprint

Using a similar effect as the mine for the Boomshroom, I applied the damage and knockback effect for the Boomshroom’s self destruct state. I made the damage effect only apply damage once as I did not want damage to be applied multiple times during the explosion. If the damage was applied multiple times the player would die incredibly quickly if the player overlapped with the explosion for a extended time.

 

Figures List

  1. Rees, O (2019). Boomshroom mine inflicting damage when the mine has been triggered. [offline]. [Accessed 25/03/2019].

  2. Rees, O (2019). Mine triggered collision blueprint. [offline]. [Accessed 25/03/2019].

  3. Rees, O (2019). Mine damage and knockback blueprint. [offline]. [Accessed 25/03/2019].

  4. Rees, O (2019). Boomshroom’s self destruct causes damage and knockback to the player. [offline]. [Accessed 25/03/2019].

  5. Rees, O (2019). Boomshroom causing damage blueprint. [offline]. [Accessed 25/03/2019].

Portobelly Production Journal #42

19/03/2019

Today I decided to focus on polishing the abilities of the BFF and implementing a damage system on some of the enemies attacks.

Fig 1 - BFF turning to face the player before firing

Fig 2 - Rotate to face the player custom event

One aspect of the BFF’s abilities that was a minor issue was that when the BFF fired a projectile, the BFF would not face the direction of the player. When first trying to solve this problem I created a system that would instantly rotate the BFF so that it was facing the player and while this worked it resulted in an unnatural feel to the character as it would snap to the desired rotation. To make this rotation look more natural I made the BFF rotate gradually over time which made the BFF’s movement feel much more natural and believable.

Fig 3 - BFF firing projectile with particle trails

Fig 4 - BFF spore trail particle effect

After many discussions with the artist on Portobelly, we came to the conclusion that the BFF would be firing a spore ball as a projectile. We agreed that the projectile would need some sort of spore like trail leaving the projectile. I created a basic particle system that would spawn many small particles at a low velocity so that they would trail behind the fast moving projectile. I feel this effect works well and sells the projectile being a spore.

Fig 5 - BFF projectiles that create spore clouds on impact with the ground

Fig 6 - Spore cloud fade in and fade out

Instead of the spore creating an explosion we decided that the spore should make a cloud of spores when the projectile makes contact with the ground. To make the cloud appear we made a static mesh shaped as a sphere with a panning texture appear and grow with size and increase opacity over time to look like the spore cloud has gradually appeared. This spore cloud will do damage to the player over time much like a poison effect.
The next step with the BFF would be to put a limit on how many projectiles it can fire before it has to change to a different state so that it would have to move to a different location before firing more projectiles.

 

Figures List

  1. Rees, O (2019). BFF turning to face the player before firing. [offline]. [Accessed 20/03/2019].

  2. Rees, O (2019). Rotate to face the player custom event. [offline]. [Accessed 20/03/2019].

  3. Rees, O (2019). BFF firing projectile with particle trails. [offline]. [Accessed 20/03/2019].

  4. Rees, O (2019). BFF spore trail particle effect. [offline]. [Accessed 20/03/2019].

  5. Rees, O (2019). BFF projectiles that create spore clouds on impact with the ground. [offline]. [Accessed 20/03/2019].

  6. Rees, O (2019). Spore cloud fade in and fade out. [offline]. [Accessed 20/03/2019].

Portobelly Production Journal #41

18/03/2019

Last week I set myself the goal of refining the enemy AI so that they have animations with their activities and I planned to place some of the AI within the level. I managed to implement AI animations to all of the states of the BFF. Although I didn’t complete the AI animations for all of the enemies I managed to solve one of the main issues with the game that was preventing me from making progress with the game. This issue was with the suction ability which caused enemies to become unable to return to their previous AI states when they had been absorbed or had suction applied. This made the suction ability extremely powerful and unbalanced. Once this was fixed I managed to continue to refine the abilities and animations of the enemies.

This week I plan to implement a damage system onto the enemies attacks so that Belly can be damaged. I also plan to add the enemies into the level so that the map can be blocked out.

Fig 1 - 18 03 2019 chat

Fig 2 - Spiral spore knocking back the player when using the spin attack

Fig 3 - Spiral spore knockback blueprint

Fig 4 - Enable and disable spinning collision

I wanted to add some knockback to the spiral spores spine attack so that the player would realise when damage had been applied to the player. To achieve this effect I created a sphere mesh that would appear around the spiral spore when the spinning animation was played. Although you can see the collision volume at the moment, you will not be able to see it in the finished came as it will be replaced with a particle effect. It is only displayed at the moment for demonstration purposes to help see when the collision is active. The knock back effect is achieved by launching the player in the opposite direction of the spiral spores location when the player has overlapped the spiral spores spin volume. Overall I think this effect works well although I feel it could be improved with some fine tuning which could involved reducing the amount of knock back.

 

Figures List

  1. Rees, O (2019). 18 03 2019 chat. YouTube [video] 18 March. Available from: https://www.youtube.com/watch?v=jNoWruu6Wno&feature=youtu.be [Accessed 20/03/2019].

  2. Rees, O (2019). Spiral spore knocking back the player when using the spin attack. [offline]. [Accessed 20/03/2019].

  3. Rees, O (2019). Spiral spore knockback blueprint. [offline]. [Accessed 20/03/2019].

  4. Rees, O (2019). Enable and disable spinning collision. [offline]. [Accessed 20/03/2019].

Portobelly Production Journal #40

16/03/2019

For the suction ability I wanted the enemy to decrease in size they longer they were being sucked towards the player.

Fig 1 - Finished suction animation for the BFF

I decided to finish of the animation for the suction state for the BFF so that it had more exaggerated movements so that the animations are easily readable from the distance of where the camera is in relation to the players position.

Fig 2 - Suction ability reducing the size of the enemies when suction is applied

Fig 3 - Suction size change timeline setup

Fig 4 - Suction size change activation

The size change works using a timeline that reduces the scale of the enemies mesh over time. When the suction starts the timeline begins to play and when the suction ends the timeline is reversed from the point it stop at. The reason I used the play and reverse pins instead of the play from start and reverse from end pins was to allow the animation start and reverse from the last point it ended at. This allows the mesh to scale smoothly in both directions.

 

Figures List

  1. Rees, O (2019). Finished suction animation for the BFF. [offline]. [Accessed 18/03/2019].

  2. Rees, O (2019). Suction ability reducing the size of the enemies when suction is applied. [offline]. [Accessed 18/03/2019].

  3. Rees, O (2019). Suction size change timeline setup. [offline]. [Accessed 18/03/2019].

  4. Rees, O (2019). Suction size change activation. [offline]. [Accessed 18/03/2019].

Portobelly Production Journal #39

15/03/2019

When tackling my approach towards I decided to avoid physics completely when absorbing the characters because it was causing too many issues with the skeletal mesh and I felt that perusing the physics method was not worth the result.

Fig 1 - Suction system launching the enemy towards the player

Fig 2 - Function for absorbing characters using launch nodes

Instead of using a negative radial impulse to pull enemies towards the player which requires physics to work correctly, I decided to use a launch character node that launched the enemy towards the players location. This function was being updated rapidly so that the launch motion is controlled smoothly at small amounts rather than being launched with slower updates which would result in a jerky movement.

Fig 3 - Bug that was causing the player to hit the ground which played the landed animation when the enemy was absorbed

During testing the absorb ability I discovered that when the player absorbed an enemy the mesh would prevent the player from moving normal without causing a collision with the absorbed mesh. I realised that a hit event was being triggered because the landing animation was being played when the player began to move. This animation is usually played when the player lands on the ground which is triggered by a hit event so I knew that the mesh must be causing a hit a event to the player.

To solve this issue, I set the mesh so that it would disable collision when the enemy had been absorbed. When the player ejects the enemy the collision on the mesh is enabled so that the player can collide with the enemy again.

Fig 4 - Suction, absorbing and ejecting enemies working correctly on the test enemy

Fig 5 - Testing the suction on the BFF

Above shows two different enemies being absorbed and ejected successfully. The main issues with the system at the moment is that the enemies do not stay on the spline path so that they can be launched in front or behind the player. Another issue with the enemy is that the when it is being absorbed the enemy continues running through their behaviour tree. This is an issue because if the enemy had been absorbed the BFF would continue to fire projectiles while inside of Belly which would cause is a problem.

Fig 6 - Timer that checks if the enemy is being absorbed

Fig 7 - Behaviour tree that checks if the enemy is being absorbed

To prevent the enemies from continuing to execute the behaviour tree while being absorbed I created a timer that checks if the enemy has been absorbed. This timer changes a blackboard variable when the enemy is being absorbed which will change interrupt the behaviour tree which stops the enemy from progressing through the behaviour tree. I applied this method to all of the enemies in the game so that they would all act the same when being absorbed. In the future, I plan to add an animation to the enemies when they are being absorbed so that they are not just playing a walk or idle animation when being absorbed.

Fig 8 - Testing the suction ability on all of the characters

Fig 9 - Locking target points to a spline path

Fig 10 - Target point icon

Fig 11 - Target point construction script

One of the issues with the BFF is that I need it to walk along the spline path when it patrols from both of it’s target/patrol points. This could be done manually, however, any changes made to the spline would involve moving every target point which will make this process lengthy. To solve this issue, I created a tool that allows the target points to snap to the spline paths using the construction script (footage of this tool can be seen in the clip above). The tool finds the nearest spline point and moves the target point along the Y axis so that the Y axis matches that of the spline. This system allows the BFF to move to valid target points that are only on the spline path. Matching this with a blueprint that updates the location of the BFF so that it is limited to the spline for movement will result in movement that is locked to the spline along the Y axis.

Fig 12 - Rough BFF being absorbed animation

Fig 13 - BFF with the being absorbed animation

When the enemies are being absorbed I wanted to add an animation to the suction state so that you can easily identify when enemies are being absorbed. I created a basic rotating loop for the BFF and I feel that it fits well with the absorb ability. I will have to create separate animations for the different enemy types.

 

Figures List

  1. Rees, O (2019). Suction system launching the enemy towards the player. [offline]. [Accessed 18/03/2019].

  2. Rees, O (2019). Function for absorbing characters using launch nodes. [offline]. [Accessed 18/03/2019].

  3. Rees, O (2019). Bug that was causing the player to hit the ground which played the landed animation when the enemy was absorbed. [offline]. [Accessed 18/03/2019].

  4. Rees, O (2019). Suction, absorbing and ejecting enemies working correctly on the test enemy. [offline]. [Accessed 18/03/2019].

  5. Rees, O (2019). Testing the suction on the BFF. [offline]. [Accessed 18/03/2019].

  6. Rees, O (2019). Timer that checks if the enemy is being absorbed. [offline]. [Accessed 18/03/2019].

  7. Rees, O (2019). Behaviour tree that checks if the enemy is being absorbed. [offline]. [Accessed 18/03/2019].

  8. Rees, O (2019). Testing the suction ability on all of the characters. [offline]. [Accessed 18/03/2019].

  9. Rees, O (2019). Locking target points to a spline path. [offline]. [Accessed 18/03/2019].

  10. Rees, O (2019). Target point icon. [offline]. [Accessed 18/03/2019].

  11. Rees, O (2019). Target point construction script. [offline]. [Accessed 18/03/2019].

  12. Rees, O (2019). Rough BFF being absorbed animation. [offline]. [Accessed 18/03/2019].

  13. Rees, O (2019). BFF with the being absorbed animation. [offline]. [Accessed 18/03/2019].

Portobelly Production Journal #38

13/03/2019

Today I wanted to try and fix one of the major issues with the game. This issue was with the absorb/suction ability when physics is applied to the skeletal meshes of the enemies. This bug permanently disables the enemies makes the enemies complete inactive which is a huge issue as it ruins the immersion of the game and makes combat far too simple.

Fig 1 - First attempt at trying to fix the issue

Fig 2 - Blueprint for the first attempt

When physics is applied to a skeletal mesh, the skeletal mesh is detached from capsule component. To allow the enemy mesh to reattach to capsule component | had to disable the physics simulation on the mesh and attach the mesh component back to the capsule component. I also had to reset the location of the mesh so that it was on the ground and reset the rotation so that it was in the correct orientation. This method had some clear issues for example the mesh would still fly across the screen before snapping back to the capsule component.

Fig 3 - Launching the capsule component when ejecting the absorbed character

The next thing I tried was launching the enemies capsule component when the enemy is ejected. This method look more believable but it still didn’t look right. I feel I may have to take a different approach to the absorb and eject system so that it doesn’t use physics as it is difficult to create consistent results and the effect is unpredictable when using skeletal meshes.

Fig 4 - Particle effect added to the BFF projectile on impact

Fig 5 - BFF projectile particle system activation blueprint

To improve the feel of the BFFs projectiles I decided to add an explosion particle effect when the projectiles make impact with the other objects. When the projectile hits a surface, the projectile will activate the particle effect and the projectile will be destroyed. The next step will be adding a collision sphere to the explosion so that it does damage to the player or enemies.

 

Figures List

  1. Rees, O (2019). First attempt at trying to fix the issue. [offline]. [Accessed 14/03/2019].

  2. Rees, O (2019). Blueprint for the first attempt. [offline]. [Accessed 14/03/2019].

  3. Rees, O (2019). Launching the capsule component when ejecting the absorbed character. [offline]. [Accessed 14/03/2019].

  4. Rees, O (2019). Particle effect added to the BFF projectile on impact. [offline]. [Accessed 14/03/2019].

  5. Rees, O (2019). BFF projectile particle system activation blueprint. [offline]. [Accessed 14/03/2019].

Portobelly Production Journal #37

11/03/2019

Last week I set myself the goal of completing all of the AI behaviours so that I can begin to blockout the end section of the game. I feel I have exceeded this goal as I was able to complete the AI behaviours for the spiral spore which allowed me to refine some of Belly’s abilities, such as adding sound effects and squash and stretch to Belly’s movement.

This week I plan to refine the enemies by adding animations to all of their states and implementing the animations with state machines. I also plan on adding the enemies into the level so that I can finish the blockout of the level.

Fig 1 - Problems with the skin weights for the legs of the BFF

Fig 2 - Updated skin weights for the BFF

Due to the limitation of being unable to connect to Perforce at university, I decided this was a good time to work on the animations for the BFF. When creating the first animation I realised that there was issues with the skin weights around the legs of the BFF which was causing undesired results. After some time editing these skin weights I painted the skin weights in a way which would allow the legs to bend correctly. The finished result can be seen on the right.

Fig 3 - BFF idle animation

Fig 4 - BFF walk animation

Fig 5 - BFF blend space between idle and walk animations

To create a blend space for the walk cycle I needed to create an idle and walk animations so that the walk would work at different speeds. When creating the walk animation I wanted to exaggerate the movement as much as possible as the BFF is a very heavy and sluggish character. Adding exaggerated animations would allow the animation to be noticed from a distance which is what we need since the camera in Portobelly is quite far from the player.

Fig 6 - BFF fire start animation

Fig 7 - BFF fire loop animation

Fig 8 - BFF fire end animation

When creating the firing animation I broke it up into three sections, the start, loop and end so that the BFF could fire multiple projectiles without having to come out of the animation loop after firing each projectile.

Fig 9 - Animation state machine

Although it’s not implemented yet, I wanted to include a fire end state on the state machine so that the enemy can end the firing animation and return to the walk cycle.

Fig 10 - Adding a firing event to activate the firing montage

I had to add a firing blueprint task to the AI behaviour tree so that the enemy would be notified to start playing the firing animation as there was no way of the enemy knowing when to play the firing animation. This task can also be setup to end the firing animation which I will need to include when I implement that feature.

Fig 11 - BFF animation implementation

One issue with BFF at the moment is that it does not face the player when it’s firing and the fact that once it starts shooting it does not stop.

 

Figures List

  1. Rees, O (2019). Problems with the skin weights for the legs of the BFF. [offline]. [Accessed 13/03/2019].

  2. Rees, O (2019). Updated skin weights for the BFF. [offline]. [Accessed 13/03/2019].

  3. Rees, O (2019). BFF idle animation. [offline]. [Accessed 13/03/2019].

  4. Rees, O (2019). BFF walk animation. [offline]. [Accessed 13/03/2019].

  5. Rees, O (2019). BFF blend space between idle and walk animations. [offline]. [Accessed 13/03/2019].

  6. Rees, O (2019). BFF fire start animation. [offline]. [Accessed 13/03/2019].

  7. Rees, O (2019). BFF fire loop animation. [offline]. [Accessed 13/03/2019].

  8. Rees, O (2019). BFF fire end animation. [offline]. [Accessed 13/03/2019].

  9. Rees, O (2019). Animation state machine. [offline]. [Accessed 13/03/2019].

  10. Rees, O (2019). Adding a firing event to activate the firing montage. [offline]. [Accessed 13/03/2019].

  11. Rees, O (2019). BFF animation implementation. [offline]. [Accessed 13/03/2019].

Portobelly Production Journal #36

09/03/2019

One of the many pieces of feedback I received during the playtest at the Bristol Games Hub was to include squash and stretch on Belly’s movement. Squash and stretch is the process of deforming an animations structure so that certain movements are exaggerated.

By far the most important discovery was what we call Squash and Stretch. When a fixed shape is moved about on the paper from one drawing to the next, there is a marked rigidity that is emphasized by the movement. In real life, this occurs only with the most rigid shapes, such as chairs and dishes and pans. Anything composed of lining flesh, no matter how bony, will show considerable movement within its shape in progressing through an action.
— Frank Thomas and Ollie Johnston, p.48 , 1995.

Seeing as Belly’s body is supposed to be fluid I decided it would add to Belly’s character by allowing the character to squash and stretch when jumping and making impact with the ground.

Fig 1 - Initial attempt at stretch effect

Fig 2 - Squish custom event setup

Creating the stretch effect was fairly simple within the Unreal Engine since I was able to use a timeline to increase the scale of the character along the Z axis. Although this was just a proof of concept, the results were achieving the effect I intended.

Fig 3 - Finished squash and stretch effect when jumping and landing

Fig 4 - Squash and stretch timeline setup

Using these two timelines allowed me to achieve the effect shown in the clip of Belly jumping. I feel with Belly stretching when jumping and squashing when landing on the ground it resembles the effect a cartoon ball would have when bouncing on the ground.

 

Figures List

  1. Rees, O (2019). Initial attempt at stretch effect. [offline]. [Accessed 11/03/2019].

  2. Rees, O (2019). Squish custom event setup. [offline]. [Accessed 11/03/2019].

  3. Rees, O (2019). Finished squash and stretch effect when jumping and landing. [offline]. [Accessed 11/03/2019].

  4. Rees, O (2019). Squash and stretch timeline setup. [offline]. [Accessed 11/03/2019].

Bibliography

  1. Thomas, F., Johnston, O. (1995) The Illusion of Life - Disney Animation. United States: Abbeville Press.