Product Documentation

Ghranny – Horror Escape Template

A complete Blueprint-only starting template for creating a horror escape game inspired by classic hide-and-escape gameplay.

UNREAL ENGINE 5BLUEPRINT ONLYDEVELOPER GUIDE
Start here

Quick Start

  1. Open the project.
  2. Open the main level.
  3. Press Play.
  4. Use WASD + Mouse.
  5. Press E to interact.
  6. Press TAB for inventory.
01 / Setup

Requirements

Ghranny is a horror escape template inspired by classic hide-and-escape horror games. It provides a focused starting framework for building your own escape experience in Unreal Engine 5, entirely with Blueprints.

Engine version

Open the template with Unreal Engine 5. Allow Unreal to finish loading and compiling project assets before editing the level.

Project type

This is a Blueprint-only template. Gameplay customization is performed through existing Blueprint assets and Unreal Editor tools.

  1. Make a backup or duplicate copy of the original template folder before making changes.
  2. Open the project file with Unreal Engine 5.
  3. In the Content Browser, locate and open the main map inside the Maps folder.
  4. Press Play to confirm that the base project runs correctly.
WARNING

Keep an untouched copy of the original template. This makes it easy to compare working assets or recover from a major experiment.

02 / Player

Basic Controls

Key Action
W Move Forward
A Move Left
S Move Backward
D Move Right
Mouse Look Around
TAB Open/Close Inventory
E Interact

The controls can be changed from the project input configuration. If the project uses Enhanced Input, inspect the existing Input Actions and Input Mapping Context used by the player before changing bindings.

03 / Content Browser

Project Structure

Keep the supplied folders organized. When adding content, create your own clear subfolders instead of mixing custom assets directly into the original template folders.

Content/ ├── Blueprints/ Gameplay actors and shared Blueprint logic ├── Characters/ Player, enemies, animations, character assets ├── Maps/ Playable levels and test maps ├── Materials/ Master materials and Material Instances ├── Meshes/ Static meshes and environment geometry ├── Textures/ Texture assets and imported images ├── UI/ Widgets, icons, and interface assets ├── Sounds/ Sound effects and audio assets └── Movies/ MP4 files used by media playback

Actual supplied layout

Content/Ghranny/ ├── Maps/ Map, MainMenu ├── Blueprints/Actore/ │ ├── Hide/ BP_HideLocker, BP_Hide, BPI_Locker │ ├── Interactable/ includes BP_FramePuzzleDoor │ ├── Puzzle/ BP_Puzzle_Base, BPI_Puzzle │ └── TV/ BP_TV, TVMediaSource, TVMediaPlayer, TVMediaTexture ├── Widget/ contains WBP_Frame_Puzzle ├── Meshes/ locker, door, frame, and puzzle meshes └── Sounds/ effects and voice-over assets Movies/ └── TV_Video.mp4 — create this folder beside Content, not inside it.
PATH

Unreal paths beginning /Game/Ghranny/ map to Content/Ghranny/. The supplied TV source uses ./Movies/TV_Video.mp4, so its video belongs at <Project Folder>/Movies/TV_Video.mp4.

04 / Level Building

How to Place an Interactable Object

Use an existing interactable Blueprint as your starting point. It already shows how the template connects the object, player interaction, and UI prompt.

  1. Find the appropriate interactable Blueprint in the Content Browser.
  2. Drag the Blueprint into the level viewport.
  3. Position and rotate the actor with the transform tools.
  4. Select it and configure its exposed variables in the Details panel.
  5. Confirm the required collision and interaction settings are enabled.
  6. Save the level, then test the object in Play mode.
  7. Walk toward the object and press E.
Visual mesh

The object the player sees in the world.

Collision

The shape used for blocking, overlap, or targeting checks.

Interaction logic

The Blueprint behavior that runs when the object is used.

Interaction prompt

The UI feedback that tells the player an object is available.

Add a screenshot of an interactable actor selected in the Details panel here.

Creating a New Interactable

  1. Create a new Blueprint Actor.
  2. Add a Static Mesh component for the visual object.
  3. Add the collision required for the object.
  4. Use an existing interactable Blueprint as the reference for the interaction logic or interface used by this template.
  5. Place the new actor in the level and test it with E.
TIP

Duplicate a similar working interactable first. This is safer and faster than rebuilding the interaction system from scratch, and avoids guessing project-specific Blueprint interface or function names.

05 / Items

Inventory

Press TAB to open the inventory and press TAB again to close it. Items are configured through the existing inventory system.

Creating items

Duplicate an existing item Blueprint when making a new item. It preserves the expected integration with the inventory and interaction flow.

What to customize

Inspect the existing item Blueprint to configure its icon, display name, description, mesh, and behavior. Variable names may be project-specific.

IMPORTANT

Do not invent new item conventions blindly. Use a supplied item Blueprint as your source of truth for the data and events required by this project.

06 / Hide system

Set Up a Hide Locker and Its Collision

Use /Game/Ghranny/Blueprints/Actore/Hide/BP_HideLocker. It is the ready-to-place locker actor: it inherits from BP_Hide, implements BPI_Locker, contains the locker body and two doors, and already has the player detection and hide-position components.

  1. Drag BP_HideLocker into the level. Do not place the raw locker meshes if you need the hide mechanic.
  2. Position the actor so the player can approach the front. Keep the built-in Hide Position / HidePlace inside the locker and move it with the actor.
  3. Select the actor and enable collision visualization. The Blueprint has a Collision trigger for approach detection and a Player Slot trigger for the valid hide location.
  4. Size the approach trigger around the locker entrance. It must overlap the player pawn; use the project’s working collision preset rather than changing it to Block All.
  5. Keep the locker body and doors blocking the player when closed. Keep the trigger components set to Query/overlap so their Begin/End Overlap events can fire.
  6. Save and play-test: approach, interact, enter the locker, exit, then test it while the enemy is near.
BP_HideLocker

Place this actor in the level.

Collision

Approach/interaction overlap trigger.

Player Slot

Valid player hide-volume trigger.

Hide Position

The transform used to place the player inside.

COLLISION

If interaction never appears, first check that the trigger overlaps the player pawn and is not set to No Collision. If the player walks through the locker, restore blocking collision on the visible body/doors—not on the overlap triggers.

07 / Puzzle door

Open a Door with the Frame Puzzle

The supplied door is BP_FramePuzzleDoor in Blueprints/Actore/Interactable. It uses the puzzle interface from BP_Puzzle_Base / BPI_Puzzle and has editable Open Rotation and Is Open values. The UI asset is WBP_Frame_Puzzle.

  1. Place a BP_FramePuzzleDoor in the level and align its frame and door mesh to the doorway.
  2. Place the frame-puzzle actor(s) that the player must solve. Use the existing puzzle Blueprints as references so their success output follows BPI_Puzzle.
  3. In the puzzle Blueprint’s successful-completion path, call the door’s OpenDoor interface/function. Reference the placed BP_FramePuzzleDoor actor—do not open a newly spawned copy.
  4. Set Open Rotation on the placed door to the desired swing angle. The door should use the same closed transform as its placed position.
  5. Leave Is Open false at the start. The door prevents repeat opening and handles the open-door sound after the puzzle completes.
  6. Test the full sequence: the puzzle opens WBP_Frame_Puzzle, success triggers OpenDoor, then the door rotates and the passage becomes usable.
WIRING

A reliable pattern is: Frame Puzzle Success → stored reference to the placed BP_FramePuzzleDoor → OpenDoor. This preserves the supplied door animation, collision change, and sound behavior.

06 / Media

Adding Movies / MP4 Files for the TV

The supplied TV opens a File Media Source when BP_TV begins play. Its assets are TVMediaSource, TVMediaPlayer, TVMediaTexture, and M_TVMedia. Keep the source file in the project-level movies directory so it is available when you test and package.

<Project Folder>/Movies/ └── TV_Video.mp4
  1. Create a Movies folder beside Content and Ghranny.uproject if it does not already exist.
  2. Add the .mp4 video file to <Project Folder>/Movies/ and name it TV_Video.mp4 to use the supplied source unchanged.
  3. Restart the editor if Unreal Engine does not immediately detect the movie.
  4. Open TVMediaSource in Blueprints/Actore/TV.
  5. Set its File Path to ./Movies/YourVideo.mp4 if you use a different filename, then save it.
  6. Confirm BP_TV still references TVMediaSource and TVMediaPlayer; it calls Open Source on Begin Play.
  7. Save the affected assets.
  8. Play the level and test the TV.
IMPORTANT

Do not assign the MP4 directly to the material. The chain is TVMediaSource → TVMediaPlayer → TVMediaTexture → M_TVMedia on the TV screen.

TV Video Troubleshooting

  • Verify that the file is actually .mp4 and lives inside <Project Folder>/Movies/.
  • Check that the Media Player can open the video and that the TV material references the correct Media Texture.
  • Restart Unreal Engine if the file or media asset is not detected.
  • Test with a small MP4 file first.
  • If codec compatibility is the issue, re-encode to a commonly supported H.264 MP4 format.
07 / Environment Art

Replacing Pictures in Wall Frames

The project includes BP_PortraitFrame, BP_LandScapeFrame, and BP_LandScapeFrame_Interactebale under Blueprints/Actore/Envirements. The supplied picture textures are in Frame_Pictures; the mesh/material assets include SM_Frame, M_Image, SM_wallPicture, and MI_picture.

  1. Find the wall frame Blueprint or mesh in the Content Browser.
  2. Identify the material used by the picture or frame.
  3. Find the texture currently used for the picture.
  4. Import the new image into the Content Browser.
  5. Replace the texture in the appropriate Material Instance or material setup.
  6. Save the asset.
  7. Return to the level and verify the result.

When a frame uses a Material Instance, create a new instance for your picture rather than changing the master material. For example: M_Image, MI_picture, and a duplicate such as MI_picture_Custom01. The imported image may need suitable texture settings based on how the material uses it.

Add a frame material or texture-assignment screenshot here.
08 / Surface Setup

Customizing Materials

Type Prefix Recommended use
Master Material M_ Defines shared material logic, such as M_Wall or M_Frame.
Material Instance MI_ Overrides exposed parameters, such as MI_Wall_Dark or MI_Frame_Portrait.

Use Material Instances for customization whenever possible. They let you change exposed parameters without modifying the master material shared by other assets.

TIP

Keep the master material stable. A dedicated Material Instance gives each room or prop its own look while protecting the original shared setup.

09 / Design Workflow

Creating Your Own Horror Escape Room

  1. Duplicate an existing room or level.
  2. Add walls and environment meshes.
  3. Add interactable objects.
  4. Add keys and other items.
  5. Configure inventory items.
  6. Add locked doors.
  7. Add puzzles.
  8. Add sounds.
  9. Add TVs and movies.
  10. Add pictures and decoration.
  11. Test the complete escape sequence.
  12. Package and test the game.
10 / Gameplay

Blueprint Customization

Ghranny is Blueprint-only. You can tailor gameplay through Blueprint assets without writing C++.

Systems to customize

Character, interactions, inventory, doors, items, puzzles, TV, UI, audio, and horror events.

Safe workflow

Duplicate a working Blueprint before making major changes, rename the copy clearly, then test in a dedicated map before moving it into the main level.

11 / Diagnostics

Troubleshooting

Problem Possible Solution
Interaction does not work Check collision and interaction setup.
E key does nothing Verify the input configuration and interactable setup.
Inventory does not open Verify TAB input and inventory widget.
TV does not play Check Movies folder, Media Player, and MP4 compatibility.
Picture does not change Check the Material Instance and texture assignment.
Object cannot be interacted with Check collision and the interaction component or interface.
Material looks incorrect Check Material Instance parameters.
Movie appears black Check Media Texture and video codec.
12 / Production

Best Practices

Preserve the base

Do not modify a master material unless necessary. Prefer Material Instances, duplicate existing Blueprints before major changes, and keep backups of the original template.

Ship cleanly

Keep custom assets organized, store movies in <Project Folder>/Movies/, use optimized textures and meshes, and test frequently in Standalone or Game mode.

13 / Delivery

Packaging

When the game is ready, use Unreal Engine's packaging workflow from the Platforms or Package Project area. Choose Windows or Android only when that target is supported and configured by your project. Package a test build early, then verify the complete game outside the editor—including movies, controls, inventory, and the escape sequence.

WARNING

Platform requirements can differ. Confirm the target platform settings and test on the intended device before release; do not assume a platform setup that has not been configured in this project.

14 / Help

Credits / Support

When requesting support, provide enough context to reproduce the issue quickly.

Please include

Unreal Engine version, a screenshot of the problem, and the steps required to reproduce it.

For Blueprint or errors

Include a relevant Blueprint screenshot and the Output Log if an error is present.

↑