The Relay Station
Summary
Deep in the mountains a fortified relay station transmits signals over the peaks. Guarded by patrolling security bots and automated cameras it's no easy task to get access to the facility.
The Relay Station is a demo of design and level scripting. Set up as mainly a outdoor scene the level could be a minor encounter in a open world map or a side quest in a more linear setting. I created the level as a way to deepen my design skills in Unreal, while working with limited amount of assets I wanted to focus on composition, sight-lines and level scripting.
Since I wanted to work from a gameplay framework I set up the map with a stealth mechanism in mind. The goal for the player is to reach the endpoint without being caught.
Specifications
Single player map stealth map with scripted events
Created in 12 weeks half-time (4 hours/day)
Created in Unreal 4.18
Assets from Epic Games
2D Symbols made by Henrik Giang
Getting started
Before I started building I did some research. The Halo maps "Silent Carthographer" and "Sierra 117" caught my eye and I was inspired to use aspects of them. I started sketching on ideas and settled for a two main areas separated by a wall-like structure.
Blocking, Shapes and Early Composition
With a basic idea of what I wanted and started the blockout process. I needed to set the basic shapes of the landscape and the two buildings enclosing the game-play area. Using a mountainous landscape I tried to block out buildings that followed the lines and flow of the landscape.
Iterating on Approach and Blockout
While I liked the some things from the first drafts it felt they were a bit bland and not suited for the game play. Working with some ideas I changed the start area to a overhead approach. Changing the approach would enable the player to observe the entire gameplay area from above beforehand. I also changed the landscape adding more parallax and depth enhancing the feeling of elevation.
Hinting the Way - Guiding the Player
Even a linear map like this would need hints and nudges enabling the player to find their way. My ambition was to use shapes, color and light to provide the player with information of where to look and where to go. The subtleness and amount of information is vary throughout the level. I deemed that getting the player to understand the different paths and finding the exit were crucial and used quite direct guides in form of pipe-lines and scripted events to highlight the way.
Visual Level Scripting
In order to make the level work I know I had to do some heavy scripting, but since the scope of the project was limited I tried to use approaches that allowed me to re-implement script to get multiple uses of the same functions. In order not to get overwhelmed I divided the scripting needs in three smaller parts that could be divided into manageable tasks:
Gameplay scripts - AI behavior and functionality, sneaking mechanics and HUD/UI
Event scripting - Pre scripted events intended to enhance gameplay and/or tell the story
Environmental scripts - Smaller things to increase the eligibility of the level
I worked with the scripts in a small test scene until they had basic functionality and then implemented them for test and tweak in the real level.
The size of the blueprint in this level makes some less suitable to show on mobile devices. For readers not viewing this page on a mobile device that have a interest in how i solved the scripting the majority of my blueprints can be found on Relay Station Blueprint Viewer page in a more comprehensive format.
Gameplay Scripting
Level design should always be framed in the context of the gameplay. So in order to set up this frame I scripted a stealth mechanic and detection behaviors for the enemies. In order to keep it interesting I set up different behaviors for the enemies.
Both the Guardbots and the Security Cameras detects the player with a cone-shaped collider with a mesh providing visual representation. If the player is detected they would change behavior and the color channge on the view-cone with a scalar parameter.
I decided to use the standard UE player controls but tweaked them a bit and added the ability to crouch.
Visual representation problems
During the process I encountered a problem with my lightning-based stealth system. During playtest I noticed that the light-gather function did not correspond well with the visual representation of the shadows.
After looking into the problem I found that the directed light caused the shadows to be less visually represented that what they needed to be. A player looking for a place to hide did not grasp when they would be able to hide and when they would be not. After trying to solve the problem with lightning settings and tweaking the script I reached the conclusion that I needed to re-think the stealth mechanic to get a match between my visual and gameplay ambitions. In the time scope available I went for a more basic stealth system based on Pawn sensing.
Event Scripting
I used events in specific locations to enhance the gameplay. In the scenario the Relay Station is under artillery fire and as the player progresses rounds are falling down blocking or opening paths. In order to achieve this I used particle emitters to spawn the incoming fire, explosions and smoke. I added sound to make the player draw attention and scripted destructible meshes to block, open and give additional feeling to the event.
I also added a matinee cutscene since I wanted to lead the player towards the second structure. In this script I added fading and disabled the HUD to better fit the cinematic to the scene.
Conclusion and Lessons Learned
The level was a large undertaking and while working on the project I learned a lot. While I picked up things I did not know about the Unreal engine I'm also glad I decided to spend time researching composition and architecture picking up valuable lessons in those fields that I know will be beneficial further down the road.
In retrospect I think the largest mistake in this level on my part was to use test scene that did not correspond in a good way with the real level. But all in all I'm satisfied with the result and think the goal I set out to accomplish was reached. I made a lot of design choices and iterations when building the level but the most important one was to changes to the overhead approach.