Mandatory Game Jam (19/1/24)


For this Game Jam I worked on a ‘Boomer’ shooter named “Bloom”. The premise involves you playing as a Plant who venture around the level and bring nature back to it, using a mechanic similar to Splatoon. Within this project, I was tasked with creating all the enemies of the game; along with a complicated Boss enemy, that would have several different attacks.

Standard Enemy Blueprint

This code sets the Blackboard value “SeenPlayer” to true if the enemy sees the player.

This code would sphere trace for Objects within a set range and return a hit if it traced a Pawn. Then it would check to see if the pawn is the player, and if so deal damage.

Standard Enemy Behaviour Tree

“BasicEnemyRoam”
“BasicEnemyChase”
“MeleeAttack” uses the pre-established “Melee Attack” function

All this results in a basic enemy that roams around until they find a player and will then charge them to attack.

Projectile Enemy Blueprint

Code that rotates the enemy towards the player and fires a projectile
This code updates the blackboard value on seeing the player, and when sight is lost, it starts a timer to reset the value

Projectile Enemy Behaviour Tree

The delay will change the enemy firing speed

This results in an enemy that roams, and when it spots the player, will fire a projectile at them until sight is lost or they are destroyed.

Boss Blueprint (Shove)

Upon sensing the player, the Boss calculates the distance between it and the player to fire off an appropriate attack. In this case, if the player is too close, then the blackboard value “BossAttack” will be updated to “Shove”.

Shove Radius

When the shove spawns, there is a delay before it “Can Shove” the player, this is also indicated by the material updating to non-opaque
If the player can be shoved and is overlapping, the shove sphere will turn to face the player and launch them

Boss Blueprint (Tick)

Within this first part of the tick, we can see that if “BossAttack” is blank and the player has been seen , the attack will be randomised.

Otherwise, “Charging Beam” is checked as the line trace needs to be rendered every frame to follow the player. And if the beam isn’t being charged, but they are shoving the player, then the Boss is rotated to face the player.

Boss Blueprint (Randomize Attack)

Simple code updates the blackboard according to a random integer

Boss Blueprint (Sweep Attack)

This attack, rotates the boss and spawns a “Sweep Box”, after which the attack is randomized again as the “Sweep Box” can operate independently.

Sweep Box

Sweep box also changes to non-opaque after a delay, and then it can start damaging the player over time
Health drains quickly in the bottom corner

Boss Blueprint (Laser)

Within this code, the beam is set to start “charging” along with a timer for the charge. Once the timer is done, the boss faces the last known player location and after a delay, spawns a projectile. This gives the player an opportunity to run away during the delay.

Boss Behaviour Tree

“Boss Shove”, the rest of these Boss tasks follow the same formula of simply executing functions accordingly

This resulted in a boss that has several randomized attacks, as well as the ability to maneuver the arena and shove the player away if they get too close.

What did I learn?

This project has been useful in teaching me the importance of communication. This was mainly because we lacked many participants, therefore some tasks, like set dressing, fell to met. If we had better communication within our team on who would be available, we could divided the work easier. However, I had a lot of fun and my implemented shove mechanic even acted as a force-field, which I didn’t originally plan on but ended up being an intriguing feature.


Leave a Reply

Your email address will not be published.