Create a SCP-087-inspired horror game
This tutorial is intended for Horror Game Kit users.
In this step-by-step tutorial where you'll create a chilling horror game inspired by SCP-087, the infamous endless staircase mystery. Players will explore a dark spiral staircase with only a flashlight and battery, step on blood-stained floors, hear distant cries, and encounter an eerie humanoid face known as SCP-087-1.
Toggle to learn more about SCP and SCP-087
If you're new to SCP, it's a fictional secret organization that contains paranormal and supernatural anomalies. One of the mysterious phenomena is SCP-087: an unlit, infinite staircase filled with strange sounds and a hostile entity. You can learn more on the official SCP Foundation website.
YAHAHA has released a themed game based on SCP-087 built with Horror Game Kit, available on Itch and Steam.
Time to complete
30-40 minutes
What you'll learn
Before getting started
- Basic knowledge of the Studio interface and how to add assets in scenes.
- For beginners, check out Create your first horror game for a quick intro.
Build a spiral staircase
There are two ways to build your staircase:
Method 1: Manual build with cubes
To build up spiral staircases in a base template:
-
Create a stairway of exactly 13 steps as described in the story:
- Add a cube to the scene by choosing + Create >3D object > Cube.
- Scale it to
1.2, 0.2, 0.3
. - Right-click the cube and select Array Duplicate to make 13 cubes horizontally.
- Use the Move tool from the Toolbar to move each cube upward to form steps.
- Make the last step longer for a landing platform, for example, scale it to
1.2, 0.2, 1.2
.
-
(Optional) Decorate stairs with handrails, posts, or other assets from Asset Library.
-
Right-click to group all 13 steps, duplicate the group, rotate and stack vertically to form the spiral.
-
Repeat to extend the staircase upward.
Method 2: AI-generated scene
- On Desktop, choose Build Game with AI > Horror game > Indoor Scene.
- Enter the prompt
spiral stairs, 10 floors
, and click Generate. For more instructions, see Generate a horror scene with AI.
AI generation may have limitations when controlling the exact number of flights or steps in the scene. To ensure optimal spiral stairs generation, it is highly recommended to use the provided prompt as it is specifically designed to enhance the scene creation process.
-
Edit the generated scene by clicking the Edit rooms icon in the Apply a Scene window to enter the Preview Mode.
The floor plan for all floors will be displayed.
-
On each floor, delete extra rooms, windows, or doors so that only the stairwells remain. For more instructions, see Remix for AI-generated indoor scenes.
-
Click Apply All to Scene to apply the changes or exit the Preview Mode and click Apply.
Modify your scene
-
Set the spawn point at the highest floor.
-
To quickly change the atmosphere, go to Scene Explorer > Environment, and adjust the environment preset. For example, change it to Horror Silent.
-
Customize stair materials by selecting objects and changing textures in the Appearance component, for example, from wood to concrete.
Add a flashlight and a battery
You can add some ready-made lighting props as necessary equipment for players to collect and continue their exploration.
To add a flashlight and a battery to the scene, go to Packages > Horror Game Assets > Assets. Double-click Flashlight and Battery to add them.
AI-generated horror scenes may already include a flashlight and battery bundle.
Decorate floors and walls with blood stains
- Find blood decals in Asset Library and add them to the scene.
- Position and scele decals realistically on floors and walls.
Add crying audio
You can add a crying audio effect to the game, which can be configured to play either at the start of the game or exclusively when the player descends a specific flight of stairs.
Play audio on game start
To play audio from game start, go to Game Settings > Audio, and add background music (BGM) in the Environmental Audio section.
You can also add more audio assets from Asset Library or upload your own. To learn more about the audio settings, go to Audio.
Trigger crying sound when descending
In the SCP-087 story, players hear the distant cries after a few flights down the staircase. To trigger the audio when players go down a flight instead of game start:
Create a trigger area
-
Add an empty object by selecting Scene Explorer > + Create > Empty Object.
-
Place it mid-flight and rename.
-
Add a trigger box to the empty object. To visualize the trigger box's boundaries, click the Gizmo icon on the Toolbar.
Add audio with trigger logic
-
Add an audio by selecting Scene Explorer > + Create > Audio. It consists of both an audio player component and an event trigger in its Properties window.
-
Select a crying audio from Asset Library or uploaded files. For more about audio settings, see Audio player.
-
Set the trigger object to the trigger area created, event to OnTriggerEnter, action to Self and function to Play. This means when players enter the trigger box of the trigger area, the audio will play.
Create a cutscene
SCP-087-1 is described as a disembodied, eerie face lacking typical facial features such as a mouth or nostrils. It instills fear by staring and can suddenly lunge a short distance forward toward individuals.
In this tutorial, let's select a model for the character SCP-087-1, and create an animation clip for it using the cutscene's animation track. The animation will feature the model suddenly lunging toward the player and then disappearing. For more information on working with cutscenes, refer to the Cutscene guide.
-
Find a model that represents SCP-087-1 in Asset Library, or upload your own model. This tutorial uses a Ghost Mask model.
-
Place the model outside the playable area, like outside the whole building.
-
Add a cutscene from Scene Explorer > + Create > Cutscene.
-
In the Properties window, edit the cutscene:
-
Click Edit Cutscene to open the cutscene editor.
-
Click Add track and select Animation track.
-
Create an animation clip on the track by keyframe recording the movements of your model:
- Drag the mask model into the track.
- Click the
Record button to start recording an animation clip.
- At frame 0: Make the model appear small and in the air by decreasing its scale (for example, to
0.5, 0.5, 0.5
) and positioning it far but within the player's sight. - At frame 2: Simulate a lunge by restoring the model's scale to
1, 1, 1
and moving it closer. - At frame 3: Move the model out of the playable area, ensuring it disappears from the player's sight.
- Click Record again to stop recording. Name the animation clip, leave the ending state at FollowClip (which plays the animation once and then stops), and adjust its speed if needed.
-
-
Set the cutscene's trigger:
-
Add a trigger box to the cutscene object, ensuring the player can enter it.
-
In the Event Trigger component, enable Trigger Once.
-
Set Trigger Object to Self and Event to OnTriggerEnter.
-
Set Action Object to Self and Function to Play. This configuration ensures that the cutscene plays only once when the player enters the trigger box.
-
Add NPC dialogue
When SCP-087-1 disappears, players may want to sputter a few words. To do so:
-
Add a narrator by going to + Create > Narrator.
-
Position narration at screen bottom with custom text. Note that the title will not show if the narration position is set to Bottom.
-
Configure the event trigger to trigger narration after the cutscene ends.
- Enable Trigger Once.
- Set Trigger Object to Cutscene and Event to CutsceneStopped.
- Set Action Object to Self and Function to ShowNarrator.
Add a scene teleporter at the game end
You can continue building the game by adding more stairs and additional mechanics, such as props like unlocked doors, monsters, more NPC dialogue, and custom events. But how do we end the game?
One way to simulate endless stairs is to set up new scenes with staircases and use a scene teleporter to send players between them. However, for this short demo, you can use a teleporter that sends players back to an earlier flight of stairs, forcing them to repeat sections and continue playing.