Mobile Content Creation - The Occupant for iOS

My goal with The Occupant was to create a believable unsettling atmosphere. Through a combination of great art, ambient effects, and great audio. Since release it has maintained a high review score and was highlighted by Apple around Halloween.

https://itunes.apple.com/us/app/the-occupant/id721911537?mt=8


Level Design


The layout of the environment began with a few modular pieces. These were used to come up with a few room templates which were later rearranged until the environment felt balanced.
  • Modular pieces are grid friendly and it's easy to create simple patterns that can be used to create more complex set pieces.
  • Ideally the modular pieces were created with certain sizes in mind. (Player height, wall width, ceiling height, wall width)
I wanted the player to feel like they were exploring a large abandoned apartment or hotel. I started with 3 basic meshes a Wall, Wall_Door, and Floor mesh. With these pieces, I was able to iterate until I found a room and hallways size that felt good.  I needed to to build on these first steps and create an entire greybox level.

There were some goals I wanted to achieve.
  • The layout needed to complement a chase game. I needed to avoid dead ends, so the player always has a place to escape. Pac-man is a great example of this.
  • I wanted the space to feel believable. Rooms are located along the perimeter of the level with a storage space and elevator in the middle. 
  • I needed the rooms to be connected to each other. Many hotels have doors like these connecting rooms.
  • The level is symmetrical vertically, this is done to make an area look familiar but not letting the player be confident of where they are to keep the tension up when they are being chased.
Final Greybox:

With the footprint and rough greybox figured out. It was time to fill in the space, add some landmarks, and give the level some character.

The original inspiration for the environment was Chernobyl. The accident caused and entire city to be abandoned. A very creepy setting to be alone in. The right mix of props is needed to make the environment believable.

The artist I worked with created a variety of props to populate the environment with. This made it more believable and gave the player objects to move and throw around.

Meshes used in level:


Atmosphere


The original idea was to use a dynamic light attached to the player to light the level. This is not practical to do in Unreal on iOS so I had to figure out how to fake a flashlight aesthetic. 
Using a flashlight UI overlay, fog, and some ambient occlusion I was able to create a moody believable atmosphere.

Example of Baked Ambient Occlusion:

Example of No Baked AO and Baked AO Only:



Video of the Ambient Effects toggled on and off:


Performance Optimization


With the flashlight mechanic I was able to increase performance by not drawing objects that were hidden by the fog. This helped performance but when the environment was completed we ran into another performance problem. The amount of draw calls was hurting the performance of the game on lower spec devices. 

Final Layout Lighting Only:


To help fix this I exported individual rooms as OBJ files. The meshes in the files were combined and optimized. This increased performance and reduced draw calls by 30% - 40% on some devices. Exporting the modular pieces had the advantage of retaining the UV layout used by the mesh. Getting the new combined meshes to look good in UDK was almost as simple as filling in some new materials slots.

Example of merged room and modular pieces originally used:

Finally to add some variety to the walls and floors, I created a material that used vertex color to blend between a damaged and regular texture.

Walls and floor with vertex blended material:

Vertex colors only:

All this combined to create a great atmosphere to explore while a slow lurching monster pursues the player.

Popular posts from this blog

Privacy Policy