By James Soth | 9/30/2024
This past weekend I wanted to explore impossible spaces while utilizing Unreal Editor For Fortnite (UEFN).
A Euclidian space has a defined coordinate direction that will have a arrive at a set point. Non-Euclidian and impossible spaces break that coordinate understanding. Optical illusions help demonstrate the idea of these spaces in a 2D plane.
Impossible geometry and works of M.C Escher explore how space doesn't always have to make coordinate sense. Some games that explore non-Euclidian and impossible spaces would be Manifold Garden and Superliminal.
In this blog I design and explore:
While UEFN can script things via Verse, I decided to stick with the built-in Devices to get the results I wanted. The main devices I used were:
Mutator Zone
Cinematic Player
Data Layer
Trigger Device
This combination allowed me to group assets to specific data layers and load / unload them at will with the cinematic player.
As players approach the third door, they are teleported to the bottom of the stair case seamlessly, creating the illusion that they are climbing an endless set of stairs.
This effect can be enhanced with set dressing to convince the player that they are stuck in a loop.
This was the first space I designed and implemented in-engine, and upon reflection, it could have been optimized and simplified significantly.
The building is made of two main sections, level one and level two. Each level is grouped in its own data layer and accompanied by a mutator zone.
The mutator zone allows for the loading of each level, along with the unloading of the previous level. The cinematic devices are used for this loading process.
There is a trigger in the middle area at the second door. This spawns in the teleport devices located at the top and bottom of the stairs. This is essential for selling the looping effect.
Is that a Doctor Who reference? Yes, it is.
Impossible as it is, we can accomplish this trickery by leaving enough space behind the initial starting room to load in the assets.
Potential gameplay uses for this could be hidden areas only accessible through one point that are not visible from the exterior.
This was the simplest of the three to set up, involving one mutator zone that loads the back area depending on whether the player is standing in it or not.
Additionally, a solid wall piece and an archway wall piece are placed in the same location and swapped between during loading.
To make this effect convincing, the mutator zone is placed a bit in front of the door so the back will load before the player opens the door.
This setup does come with limitations, the player must be in the mutator zone or else the back end will be unloaded.
The intersecting hallways are what I was primarily building towards, combining all the lessons from the previous two designs.
The player enters a room with three door options, each door would lead them into a path that intersects the starting area before putting them back in that same room through a different door.
Each design follows a similar pattern of the player hitting multiple mutator zones that load and unload the starting area and connecting hallways. The Center path (middle image) is a bit different in that it contains only three mutators zones.
The Center Path has the player travel in a loop if they follow the hallway in a clockwise direction. The only way to end the loop is by traveling in the counter clockwise direction. The player will hit a mutator zone that loads in the starting area allowing for the loop to end. However, that mutator zone is loaded and unloaded when traveling clockwise.
This was the most tricky of the three to set up as the player passes through four mutator zones, loading and unloading three different data layers: The starting room, the hallway, and the connecting hallway.
The player starts in the main room, in this example they will enter the right door. The arrows showcase the path through the hallway. Upon hitting mutator zone 1 the hallway will spawn.
As the player enters the hallway they will pass through zone 2 which will unload the starting area and load in the connecting hallway.
Zone 3 unloads the hallway and reloads the main area.
As the player exits zone 4 into the main area the hallway will unload.
In conclusion, I do feel like I was able to create some impossible spaces.
I gave myself a short development period for this project to test these designs. During my 6 or so hours of development, I could see myself improving on each iteration. I want to expand on these designs and bring them all together in some playable experience. I could see this technique working well in a horror or puzzle experience.
During this project I got to familiarize myself with data layers and find new ways to optimize my UEFN levels; which is a massive bonus as memory limitations can be super challenging.
Overall, I'm pretty happy I was able to make something functional and representative of my points of inspiration.