Bonus Rooms and Final Boss


Jamari Williams - April 28th, 2023

This week, I finished the base functionality of the bonus rooms, created a tutorial level, made some fixes to the Last Stand system, and worked on our final boss. 

My focus this week was getting the bonus rooms functioning. I plan on making more next week, so I just created the base functionality and a simple room that spawns a chest if the player completes the room. I made a BonusRoomManagerBase class that has functions for checking if the player succeeds or not. I also created a new enemy spawner that spawns enemies that are ready to be possessed and will not chase the player, so that I can base a bonus room around a specific enemy type. The room I made is similar to the other rooms in the game, the player can only progress if they kill all of the enemies. Upon completion, there will be a chest to reward the player guaranteed. If the player dies in the bonus room, their run is over, so I added an exit portal if they don’t want to do the bonus room. 


After the bonus rooms, I worked with another developer to create our final boss, the Enraged Yeti. The player is tasked with climbing a mountain to fight the boss. I was responsible for the snowballs that he sends at the player down the mountain and the yeti himself. Starting with the snowballs, I made them move along a spline and they damage the player a bit and inflict frost damage, which will slow the player. 


Before starting the yeti himself, our idea for the fight was to have the player get launched onto his back, hit the weak spot, then he would fling the player back down the mountain. I created a simple launchpad that calls the LaunchCharacter function in unreal to do this. https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Character/LaunchCharacter/ 

The challenge came with the Yeti himself. First, I made him derive from the BossBase like the others, but since that class derives from Unreal’s Character class, the slime can’t walk on the yeti, they just bounce off. I tried adding a static mesh for the player to walk on as a child to the Yeti, but that didn’t work either. I really needed to have the Yeti derive from BossBase, because it derives from our PossessBase, which every system in the game relies on. 


After some trial and error, I decided to make a YetiContainer, which hosts a skeletal mesh that the player can walk on and is just an actor. Once we get an appropriate asset, this is what will be replaced. I created a separate YetiWeakSpot that derives from BossBase which is a spawned on BeginPlay and attached to the YetiContainer, so he is still connected to the PossessBase. 


After that, I created a quick tutorial level, as we have received feedback multiple times that players don’t know what to do. It covers all of the basics of the game. 


This sprint was a success overall, as I feel like I got a lot done. I’m not satisfied with the snowballs, as they look very robotic right now. I plan to add some variation in the movement to make them look more organic. Also, there are some bugs with entering the tutorial multiple times and other quality-of-life fixes.

Leave a comment

Log in with itch.io to leave a comment.