Samuel HÃ¥kansson - Portfolio

Gameproject 4

Logo
Info

This was a 5-week game project developed in Unreal Engine 5.

I was responsible for implementing several of the games gameplay systems. This includes the games persistent Save/Load System, to allow players to keep their progress across multiple game sessions, and the the Crafting/Repairing system which added depth to the gameplay and provided use for the materials the player can find in the world. I also created their respective UI.

Additionally, I also created a few puzzles and other supporting element. This includes a ball puzzle, follow-based puzzle and doors that opened using pressure plates.

Save/Load System

The Save/Load System was my primary reponsibility during the project. When saving, the system takes various data from both the player and the world, storing it in a single SaveGame object that is then stored locally as a save file. The save/load menu is then able to show a list .

When a save file is loaded, the screen fades to black before a loading screen is displayed, then world gets unloaded from the level stream before loading back in, in short, to reset the world to it's base state, before modifying it using the saved data. After the world has fully loaded in and all of the loading functions have been completed, the loading screen is removed as the screen fades back, creating a seamless transtion back to the gameplay.

(Chest being removed after being opened then saving and loading)

I structured the save/load system so that each variable has it's own separate save and load functions. This kept the the blueprint very clean, readable, and easier to debug or modify as more content was added to the game.

Logo
Logo Logo
Logo

The Save/Load menu was made using a single widget that switches functionality depending on wheter the player pressed the Save or Load. A list of save slots is dynamically generated when the widget is created, displaying the date and a screenshot of the game at the time it was made.

To make sure the player doesn't accidentally overwrite or load a save, a confirmation box is shown before the action goes through.

Logo Logo
Crafting/Repair System

The crafting/repair system can be accessed by interacting with an NPC. Upon interacting, the player is shown a list of crafting recipes that dynamically updates, and filters what recipes are shown, depending on what items the player has in their inventory.

When the player initiates a craft/repair, it checks if all required items and quantities are met. If so, the players items are consumed and the crafted/repaired item is given to the player.

The crafting and repair windows were separated in to their own distinct UI as a way to help give clarity to the player.

Repairing works in much the same way as the crafting, with the main difference being the UI. This allows both systems to reuse most of the same blueprint functionality.

Logo

All crafting and repair recipes are defined using data tables. Each recipe defines it's required input and output items as well as their quantities, and is what the systems logic is based on. This allows for recipes to be added or modified easily without making any change to the blueprints.

Logo
Puzzles

Another contribution I made to the game was creating puzzles and enviromental gameplay mechanics, which were mostly mostly on while the other programmers were developing and refining their systems so that I could fully integrate them with the Save/Load and Crafting systems.

These were intentionally made simple so that they could be reused and integrated in to various parts of the world, adding complexity through the enviroment rather than the core mechanics. For example, the ball puzzle which is fundamentally simple, "bring the ball to the hole", could be varied through the level design or by adding aspects like the pushers or door/activation plate. This gave the designers freedom to be creative and flexible with how the puzzles were implemented in to the world.

(Ball puzzle: The player rolls, or picks up, the ball and brings it to the goal hole)

(Follow puzzle: The player follows a object that is moving along a spline. If they get to far away it resets to it's initial position)

(Door and Activation plate: The player can activate the plates by standing on, or pushing blocks on to them. Supports as many doors/plates as needed, linked by index.)

(Pusher: An object that extends and retracts to push the player (or other objects). Customizability through variables (eg. speed and extention length))

For the ball puzzle and the doors with activation plates, I created a spawner actor for each of them as a way to "link" the pieces together and keep all necessary variables and references in one place to eliminate the need for casting. All the set up for the puzzle is handled through the details panel using exposed variables.

All systems were built with exposed variables for easy adjustment and to allow for variation in behavior.

Logo Logo