top of page

Lost in Slime

Role: UI Programmer
Team size: 10

Time: 4 weeks
Made in Unreal Engine 5 with C++ and Blueprints

Fourth game project at Futuregames. During this project we were only game designers and programmers, instead of game artists we had a small budget to buy assets from the Epic Games marketplace. Before the project started we had one week of pre-production were we made physics-based game prototypes. I mainly worked on UI but also helped with other things when necessary.

​

Lost in Slime is a third person platformer where you play as a slime with the ability of sticking to surfaces.

Main Menu

The most of my time went into working on different parts of the main menu. I had to learn new things which took more time than I thought it would because I ran into problems that was hard to find solutions for. When it comes to widgets I try to make most methods in C++ but I might set up some things in blueprints if it's something that should be easily changed.

​

Transitions

For the main menu the designers wanted transitions between different screens to make it feel less static. When this was first discussed I was more or less done with all parts of the main menu so I added the transitions using level sequences. 

​

When playing the first level sequence it changes to a different type of camera which made a small jump from the normal camera which looked weird. The way I fixed this was by adding an idle transition which does nothing that is played when the level starts.

​

To use the level sequences they have to be referenced. Since they can't be directly referenced in normal blueprints I decided to set them up in the level blueprint by binding them to the different widget buttons OnClicked events.

​

Level select

The designers were able to make five full levels for this project and wanted to make it easy for players to return to a level they had already reached through the main menu.

​

For the level select widget I made a new button class that contains a string for which level to load that is broadcasted with an event to the blueprint when clicked. In the level select widget I made methods to unlock all levels, up to a certain index and also to lock all levels except the first.

​

To update which levels are unlocked I made a blueprint class that has an int for which level index to be unlocked that was placed in all levels. The blueprint updates a value in the SaveGame on BeginPlay which the level select widget reads from in the main menu.  

​

 
 
Options

In the options widget I made it possible to change the most usual settings like resolution and volume. All options are read from a SaveGame when the game starts and saved to when changes are made. For the camera settings I made it so that it changes values on a component on the player character that handles the camera.

​

Platform mover and rotator

For the platforming in the game the designers wanted to make platforms that move or rotate.
While I did find components like Interp to Movement I thought they lacked certain settings so I made my own actor components to add things like waiting x seconds between each step and how fast to perform a step.

 

The mover component has an array of relative positions to the actors start position which it uses to lerp between the previous and next position. Instead of an array of rotations the rotator component has a rotation value that it adds to it's current rotation to lerp towards. 

​

 
 
 
 
Music updates

We used FMOD in this project and one of our designers made some music for the levels which had different tracks to be played depending on how many keys the player have collected. The portal (level exit) blueprint contained a method that was called by the keys with their index when picked up. I used the key index to update the layer parameters of the music in that same method.

Takeaways

During this project I did a lot that I had done before but I also learned a bunch of new stuff like how to use level sequences. Some things took longer than they should've because I found it a lot harder finding answers to problems about things in Unreal Engine than Unity.

 

Making small blueprints to update some value on begin play or something else isn't something that I would have done previously because it felt wrong but this project made me understand that it can be very useful in certain situations.

​

There was some times during the project where it felt like there wasn't enough to do for all programmers but I tried to be flexible and helped whenever something was needed like making it so the music updates when picking up keys.

bottom of page