Cabin Fever

Project Type

Game – Escape/Puzzle

Timeline

August – December, 2022

February – April, 2022

Primary Role(s)

Gameplay Designer, Blueprint Developer, Level Designer

Tools

Unreal Engine 4, Maya, Photoshop

Cabin Fever is a single-player, thriller-themed escape and visual game. Cabin Fever focuses on immersing you in a stormy, winter environment full of puzzles and time pressure. 

For this project, I worked primarily on the outdoor environment design, indoor level design, Blueprint scripting, and UI/UX. I also contributed to lighting and some 3D models. The gameplay was created using the Unreal Engine while models and UI elements were created in Maya and Photoshop, respectively. Cabin Fever was a lot of fun to design and develop and I truly enjoyed bringing this project to life with my team.

You and your friend are on your last ski run when suddenly, your friend gets hurt. As a stormy, winter night approaches, finding shelter becomes an emergency. Lost, you and your buddy have no choice but to investigate a warm, cozy cabin to stay the night. That was your first mistake. Your mission – find clues and solve puzzles to save you both before it’s too late.

A silent gust, a shadow’s glow…someone was here not long ago. But a storm’s in sight through the evening’s light – you’ve no choice but to stay the night…

Details

Cabin Fever started out as an idea to combine an escape game with horror elements. The initial concept was to make an escape game where the story brought the horror aspect, but we wanted to add a twist to it that not many similar games have: limited resources. Cabin Fever features a dimly lit environment in which the primary source of light is a hand-held flashlight with limited power. Besides solving puzzles and unlocking clues, the player will also have to pay attention to their pretty limited flashlight battery – strategic usage is required! The darkness of the environment itself as well as the time pressure helps reinforce the thriller/horror vibe we were going for.

The first step was to create a design document that would act as a guide to how we wanted the game to be played out. Since we wanted the environment to be a big part of the game, I suggested splitting the game into two parts – outside and inside the cabin. While the outdoor portion will teach the player the controls, the indoor portion contains the main puzzles of the game. This way, not only can the player experience the environment we want to convey but also get used to the controls of the game before getting to the puzzles. In addition, the document also contains some ideas for the puzzles and objects to add to the game. The walkthrough was written as a general layout to follow, not a list of requirements.

Outside Level

Initial Ideas

Once the theme and goal of the game were set, it was time to create an environment that helped convey the mood we were aiming for. After some brainstorming, I created a rough white box with basic primitives in Unreal Engine and used the foliage tools to add some placeholders for how the environment trees would look like.

Player Path

Once I had a good idea of what the outside environment should look like, I started to create the outside path that the player takes to get to the cabin. In order to make the player feel immersed, I made sure to provide a path that had twists and turns. I also planned to make the outside be the tutorial for controls, so the path had to be long enough to place tutorial markers without them feeling rushed.

To make the actual paths, I used the Top viewport view and added Blocking Volumes as the barriers. Lamps were added later on in order to help the player visualize the boundaries of the path.

Outside path with trees and foliage
Adding Trees
Black spots are foliage with no collision; tree shapes are foliage with collision

Adding Trees/Foliage

Once the path was defined, it was time to add some snow-covered trees to reinforce the winter forest theme. After importing the model and connecting its textures, I created two foliage types in Unreal’s Foliage editor: foliage with collision and foliage without collision.

The reasoning behind this was that not every tree needed to have collision properties. Only the trees inside the player path needed collision, so it would be a massive waste to make every tree in the scene have collision geometry. Thus, I was able to add many more foliage trees around the path without significantly lagging up the game.

Before painting the two types of foliage, I randomized their sizes and made sure to orient them to the ground plane. I also adjusted the densities accordingly to have more trees around the path than in the path. This helps keep the path more “open” and less cramped.

Lighting/VFX

Although I had roughly adjusted the lighting before, it was now time to really give the level’s lighting some attention. I didn’t like how the default lighting looked, so I deleted all the default lights to create new ones. 

The outdoor level has two primary sources of lighting: the moon and streetlamps.

The Moon:

I created a detailed moon by applying a detailed moon texture onto a normal sphere mesh. The moon includes a plane behind it that captures the moon’s glow to increase “realness”. Additionally, the Directional Light Source was edited to create a light-beam effect off the moon. The result is a beautiful, moon-lit environment.

A custom snow effect was also added to the outdoor level to increase immersion.

Moon rays

Street Lamps:

Two concerns needed to be resolved: 

  1. How would the player know the path to get to the cabin?
  2. The environment looks a bit dull; it needs more color.
 

My solution was the use of carefully placed streetlamps that add a warm glow to the map while guiding the player.

Inside Level

Initial Ideas

The interior level of the cabin needed to convey a sense of dread and anxiety. Thus, my design for the cabin introduces horror elements including limited visibility and time pressure.

Horror Design

With horror themes in mind, I design the interior cabin to be dark and small. The combination of these two elements limits the information the player receives in a claustrophobic environment and helps to set the mood. 

Additionally, a flashlight with a finite battery is given to the player – they must use the power efficiently. As the battery decreases, so does the flashlight’s brightness. 

cabin-inside

Puzzles

Level progression is accomplished with the use of various lock types for variety and to avoid repetition.

Three three lock types are as follows:

  1. Classic key lock
  2. Number lock
  3. Pattern lock

The classic locks require the correct key while the number lock uses a number combination. The pattern lock requires a specific pattern to be unlocked. Clues for the puzzles are found throughout the gameplay.

Difficulties

Interactable Object Detection

The first major obstacle I faced was how to detect interactable objects. I wanted to use a method that felt smooth and was relatively efficient. After testing, I settled on using a looping Line Trace by Object type. If the trace detects an object with the custom Interactable type, it changes the crosshair as a visual cue. If the player clicks the mouse while hovering over an interactable object, a message to an Interface is sent to perform the appropriate actions.

Crosshair change
Line trace Blueprint
Tutorial message

Messages

I also needed a way to display important messages to the user. To solve this issue, I created a dynamic system to display any text string to the user. If more than one message is displayed at a time, they stack instead of overlaying over one another.

I also utilized this tool to display tutorial messages to the player.