Space Hunt is an On-Rails shooter in space, made in Unreal Engine 5, with rogue like mechanics inspired by Hades.
In this project I worked as the systems designer, designing and implementing the upgrades system as well as implementing the effects of these upgrades.
To match the project’s theme and make this game replayable I set out to create a series of interesting upgrades that would entice the player to always try new combinations every playthrough.
To achieve this, I created a scalable upgrade system that made it easy to quickly add new upgrades, and edit them.
I wanted to create an upgrade system that would allow for different builds and strategies but with an element of randomness. Taking inspiration from Hades’ boon system as well as Brotato. The player is confronted with the need to adapt on the fly. I created a system where each time you level up, 4 perks get chosen from a list of upgrades where the player can then select the one you want.
Upgrtades in the game are organized as unlocks and stat buffs.
Unlocks can fundamentally change your playthrough. Examples include the multishot, laser and fire shot upgrade. These upgrades would only be pickable once and would lock you out of alternatives. this means that you could not have both multishot and lasers as they both altered your main mode of attack in the game. These upgrades where complex to implement as they usually needed full blueprints, VFX and sound effects to work.
Stat buffs are upgrades that would simply change a number like health or damage. I made it possible to set a max amount of times you could pick these before they would get removed from the upgrade pool.
Without the need for vfx or sound effects, these upgrades where very time efficient to create, and added some much needed content to fill out the game’s upgrades.
For efficiency and increase of clarity
Originally I planned to give every upgrade two parts: A big positive and a small negative
with only 5 numbers to tweak (firerate, health, armor, damage and move speed) this would give you 5 x 4 potential upgrades.
I the end I realized that I did not need that many upgrades. And that doing so would increase the time it would take to balance substantially.
Another idea I played with was the inclusion of a rarity system. Here higher rarities would have large impacts on gameplay. The idea was that players would be given choices between small incremental upgrades that fit their build or wild swing the legionaries might offer.
This would also offer a huge upgrade variety as well to make every playthrough unique.
We did not do this because of the Large amount of UI element necessary.
I wanted to give the player multiple abilities that could change over a run. At the start you have a main attack you can spam, and secondary attack that you can use every few seconds.
This is the main attack of the player. It’s a hold to fire weapon where depending on your upgrades it could rapid fire projectiles or be a sustained laser. Based on how you choose your upgrades it can be either your main mode of attack, or just your cleanup tool.
The game essentially funnels you into one of two builds for the main weapon, either being multishot based or laser based.
Your secondary attack is a AoE bomb with a longer cooldown. It can do a lot of damage and is good for taking out groups of enemies, but in return it is harder to aim and might not be great for taking out stragglers.
It starts as a mine that explodes a second after placing it but can be upgraded to a rocket or a damaging field that does damage over time instead.
Since there was only one programmer in the group I not only did the designing of the upgrade system but also the implementation using Unreal’s Blueprint system, and GAS (Gameplay Ability System).
The core components of the upgrade system are the Data Table that Holds the upgrades and the blueprint component that uses the data from that Data Table to apply effects to gameplay.
The Data table is the place where all the upgrades are stored. It holds the images the UI shows when you unlock an upgrade. Also, the information of what an upgrade should alter and what is unlocks, is stored here.
The upgrade system is mostly managed by a blueprint component on the player. This component uses the upgrades in the data table to generate a pool of eligible upgrades on runtime based on the upgrades the player already has or doesn’t have. In this way all I needed to do to add a new upgrade, was add another entry into the data table.
When a player selects an upgrade this component updates the different variables on the player or even swaps out the weapon the player uses.
I wanted a simple pop-up that shows you a couple of options to pick from. At the start of the project I planned to show 3 upgrades but that was quite quickly increased to 4 as I found that 3 upgrades was too limiting on player choice and made it hard for the players to make the builds they wanted.
We later expanded a bit on this by adding a reroll mechanic. You can collect reroll tokens during gameplay that let you reroll all four of the options.
Le Grand games is proudly powered by Powered by WordPress.com.