Devlog 9: Elijah Jackson: Upgrades People, Upgrades!


"Upgrades People, Upgrades!"

Elijah Jackson

05/27/2025


Weapon Upgrades:

I continued my work for this sprint with weapon upgrades. As the game progresses enemies will get stronger, faster, and spawn more frequently. To balance this out, the player has both the skill tree (for upgrading stats) and weapon upgrades (for upgrading damage capability). This allows the player to choose where to spend their scrap, making each playthrough somewhat unique. To start, weapon upgrades will allow the player to unlock some basic stat increases to fight enemies. However, the weapons will soon have their own unique abilities that unlock upon reaching a certain weapon level threshold. Right now, a weapon can have as many levels as are made in blueprint allowing for weapons with a larger upgrade curve versus weapons that need few upgrades to reach maximum potential. This is accomplished through a new custom struct called FLevelInstructions.


This struct holds only three basic stat increases, but will be expanded to support more options as the upgrade system is expanded upon. In creating the upgrade system this way I was able to reinforce the polymorphic nature of my code. Any weapon can support the upgrades declared in the struct, and this allows them to be applied without excessive casting or many function calls. Calling a weapon's upgrade function will upgrade it to the next level if one is present, otherwise it does nothing. Additionally,  a weapon only has as many levels as instructions are supplied to it. For example, if the pistol is given two sets of instructions it has three total levels (Level One is base, Level Two is the first instruction, Level Three is the second). One challenge of creating the upgrade system was applying damage increases. Prior to the creation of this system, damage for projectiles was stored on the projectile itself and not the weapon. This system required a refactor of that system in order to allow weapons to load and use the correct damage values.

The next part of adding weapon upgrades was adding a way for the upgrades to be applied. With the system in place, I could tie the function to an interactable in game as I did with the upgrade bench. With that in mind, I created the charge station. The charge station serves as the place to upgrade weapons to their next level by "charging" them. Currently, when you interact with the charge station you are prompted with a screen that shows you the next level of your weapon, how much the upgrade will cost, and what the upgrade provides. The screen also has an "Upgrade" button which takes the currency from the player and confirms the upgrade.


I chose to design the interface for upgrading as simply as I could, as the player may only glance as they are fighting but needs relevant information fast in order to understand what they are getting. In creating the gameplay loop and UI I have to consider the pace of the game. Not only are convoluted menus a drag on gameplay overall, but they could result in more "feel bad" style moments where players get lost in menus resulting in their losing the game.

Overall, my work on the weapon upgrading system allows for flexibility with upgrades and for the player to know what they are getting out of each upgrade. Combining all the features I've shown thus far, the player upgrading a weapon during gameplay looks like this:

The current result is in need of more polish, but is on its way to looking good! Currently, I want to add an indicator for a max level weapon, more descriptive UI to the screen, and some sound effects to the upgrading itself. Overall, the feature is working as intended for its base functionality but needs more improvement to stand out.

Recoil:

Something else briefly shown in the video is recoil. The player recoils up upon shooting a weapon to emulate the kick back from shooting a weapon in real life. Currently this kick only rotates the player camera, but is planned to affect the cross hair as well. Additionally, recoil will allow the resetting  of a weapon to the original fire point after waiting a moment. This will allow the player to re steady their aim at a target. Recoil currently uses a range to be less predictable with the values needing to stay low as high values cause the camera to snap.

Bug Fixes:

A notable bug that I fixed this week was the fixing of the bug that reset the player's position to look forward upon firing a ranged weapon. Marking the animations as additive cause the player's arms to move in an odd way which stopped me from making progress for a while. To fix the issue, I looked to the Unreal Engine example shooter Lyra where I found that I was missing a base reference pose for the animation to use. After setting that reference pose to use the first frame of the firing animation, my issues with shooting were fixed.


Going Forward:

Over the course of this next sprint I plan to continue to improve upon gameplay systems and add some polish to them overall. I plan on finishing the upgrades system and touching up on the current UI. Also, I plan on adding the weapon abilities to each weapon to allow for even more fun combat! Thank you for reading!

Get Project Meltdown

Leave a comment

Log in with itch.io to leave a comment.