Reel Run is a 3D arcade-style hack and slash that puts players in the lead roles of popular movie archetypes. In this action-packed game, players face off against hordes of enemies across multiple genre-themed levels, each styled to emulate the film’s era while keeping a fun, arcade-like energy. This blend of unique visual styles, intense combat, and familiar movie tropes brings a nostalgic yet fresh experience that makes players feel like true action heroes.
Engine: Unreal Engine
Team Size: 12 people
Project Length: 10 months
Role: Programmer
Focus: Data Saving, UI Implementation
This is arguably one of the most important blueprints in the project. All of the data that persists across scenes is stored in the GameInstance, and it is later saved to a SaveGame slot. The player's data is used to display their scores at the end of whichever level they completed, and if they did well enough, they can receive a 5 star rating. The perfect rating, along with the secrets it unlocks, is stored as a boolean in the GameInstance and then the SaveGame. At the end of each level, the temporary information brought across each segment is cleared to their defaults, prepared for the next level the player takes on.
A crucial part of the options menu is the adjusted options actually saving and applying to the player's game. Implementing this feature started the rabbithole of data saving. Whenever the blueprint widget is constructed, the variables stored in the GameInstance are recalled and plugged back into their respective elements to show the player their current settings. When the player hits apply, their adjusted values are applied to their respective elements and saved in the GameInstance. If the player resets the values instead, their default values are set to defaults in the widget follows the same application procedure as applying new values.
At the end of each level, all of the playtime data is compared to the data already stored in the GameInstance. If the data is better than its previous entry, it is stored as a new record. The playtime data is then passed to the Score Screen widget to display. After both of those play out, the previously mentioned reset wipes the playtime variables for the next level.