Gameplay Scripter & Game Designer


Unlit is a horror shooter game in VR developed for the Ocolus Touch. You play as a security guard working the night shift at a shopping mall. However, when the mall closes down the mannequins come to life and they are out to kill you. Good for you they cannot move, as long as you are looking at them at least…






Team Size

VR Horror


Unreal Engine 4


Four weeks

Eight people


  • Weapon and Flashlight Mechanics
  • Enemy AI
  • Fuse Box

My main responsibility was to script the player world interaction, weapon and flashlight mechanics. I also scripted the Enemy AI and made a flexible system for the level designers to place out the enemies’ paths.



The core design of Unlit revolves around the mannequins, only being able to move as long as you are not looking at them. If you look at them, they cannot move or hurt you. We wanted the player’s gaze to play a big role in the risk-reward dynamics of the moment to moment gameplay. With this as a core pillar, we designed the features of the game to make the player have to look away from her surroundings.



The reload mechanic when through a number of different iterations, but we felt that a lot of the more realistic reload variants was too finicky and distracted too much from the gameplay. Player sent a lot of their focus trying to reload the gun, rather than being scared of the mannequins. We ended up with a fast, arcadey reload. The revolver is reloaded by whipping the gun to the side, ejecting the cylinder and empty chasings. Next, the gun is brought down towards the player’s body to load in the new bullets, and finally, the player whips the cylinder back into the revolver. This reload is done with one hand and can be done with one continues motion. We felt this reload struck a good balance between a number of bullets in the chamber, reload time and player focus.


The flashlight has a battery which slowly drains as it is turned on. The light’s casting range and its angle decrease as the battery is drained. When the battery is at 0% the light starts to flicker heavily.


One thing that people intuitively tend to do when a flashlight starts to flicker, is to hit or shake the flashlight. Utilizing the immersion that comes from VR, we played on this intuition and made the flashlight a kinematic one, which is recharged by shaking it. I track the position of the flashlight and if the distance between a given time is big enough, the battery is slowly recharged. Haptic feedback in the motion controller indicates when the flashlight is being recharged and stops when the battery is full.



Mannequins spawn in waves at the outskirts of the mall and move towards the player in a web-like connection of waypoints. The AI teleports between waypoints, which each holds a set of poses a mannequin can randomly assume. The AI-actor itself is its own entity but it uses the data from its current waypoint to decide its state, what mesh/pose it should use, how long it should stay at the waypoint and where it should move to next. A challenge we had to work around was that we did not have any animator in our team. We solved this by using static poses for the mannequins and simply swapping these depending on the AI’s state. This neatly creates an illusion of motion without having to rely on animations.


Waypoints have a list of static meshes, both for female and male mannequins and the AI-actor simply randomly selects one of the static meshes to use. The AI’s gender is consistent throughout its life. The system is designed to give the level designers a great deal of control over the mannequins’ poses, making it easy to implement mannequins climbing walls, hanging from the ceiling or hiding behind interiors without having to make an AI which automatically detects this.


Instead of having to manually add all poses to each waypoint, the level designer can choose between a number of presets to add to a waypoint. Presets contain the default poses associated the different states; running, climbing, hiding, vaulting or attacking. I use a DataTable containing Structs which save the data for each preset. The waypoint makes a copy of the preset and exposes it to the user, making it possible to customize waypoints.



To put the player in even more distress, they have to continuously reactivate a malfunctioning fuse box in order to win the game. It is placed behind the player, requiring them to turn around and away from their surroundings leaving them exposed to the mannequins, in order to restart the power. This part was important for the design of the game in order to break up the shooting gameplay a bit. This went through a lot of iterations and we experimented a lot with the amount of attention this objective should require. We ended up with a shorter interaction which only happens every now and then, but it allows the mannequins to get closer to the player.


A VR Horror Shooter made in 4 weeks in Unreal Engine for the Oculus Touch, at Future Games. What I did

  • Weapon and Flashlight Mechanics
  • Enemy AI
  • Fuse Box