Quick Start
- Open the project.
- Open the main level.
- Press Play.
- Use WASD + Mouse.
- Press E to interact.
- Press TAB for inventory.
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.
- Make a backup or duplicate copy of the original template folder before making changes.
- Open the project file with Unreal Engine 5.
-
In the Content Browser, locate and open the main map inside the
Mapsfolder. - Press Play to confirm that the base project runs correctly.
Keep an untouched copy of the original template. This makes it easy to compare working assets or recover from a major experiment.
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.
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.
Actual supplied layout
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.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.
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.
- Find the appropriate interactable Blueprint in the Content Browser.
- Drag the Blueprint into the level viewport.
- Position and rotate the actor with the transform tools.
- Select it and configure its exposed variables in the Details panel.
- Confirm the required collision and interaction settings are enabled.
- Save the level, then test the object in Play mode.
- Walk toward the object and press
E.
The object the player sees in the world.
The shape used for blocking, overlap, or targeting checks.
The Blueprint behavior that runs when the object is used.
The UI feedback that tells the player an object is available.
Creating a New Interactable
- Create a new Blueprint Actor.
- Add a Static Mesh component for the visual object.
- Add the collision required for the object.
- Use an existing interactable Blueprint as the reference for the interaction logic or interface used by this template.
-
Place the new actor in the level and test it with
E.
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.
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.
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.
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.
- Drag
BP_HideLockerinto the level. Do not place the raw locker meshes if you need the hide mechanic. - Position the actor so the player can approach the front. Keep the built-in
Hide Position/HidePlaceinside the locker and move it with the actor. - Select the actor and enable collision visualization. The Blueprint has a
Collisiontrigger for approach detection and aPlayer Slottrigger for the valid hide location. - 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.
- 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.
- Save and play-test: approach, interact, enter the locker, exit, then test it while the enemy is near.
Place this actor in the level.
Approach/interaction overlap trigger.
Valid player hide-volume trigger.
The transform used to place the player inside.
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.
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.
- Place a
BP_FramePuzzleDoorin the level and align its frame and door mesh to the doorway. - 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. - In the puzzle Blueprint’s successful-completion path, call the door’s
OpenDoorinterface/function. Reference the placedBP_FramePuzzleDooractor—do not open a newly spawned copy. - Set
Open Rotationon the placed door to the desired swing angle. The door should use the same closed transform as its placed position. - Leave
Is Openfalse at the start. The door prevents repeat opening and handles the open-door sound after the puzzle completes. - Test the full sequence: the puzzle opens
WBP_Frame_Puzzle, success triggersOpenDoor, then the door rotates and the passage becomes usable.
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.
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.
-
Create a
Moviesfolder besideContentandGhranny.uprojectif it does not already exist. -
Add the
.mp4video file to<Project Folder>/Movies/and name itTV_Video.mp4to use the supplied source unchanged. - Restart the editor if Unreal Engine does not immediately detect the movie.
- Open
TVMediaSourceinBlueprints/Actore/TV. -
Set its File Path to
./Movies/YourVideo.mp4if you use a different filename, then save it. -
Confirm
BP_TVstill referencesTVMediaSourceandTVMediaPlayer; it callsOpen Sourceon Begin Play. - Save the affected assets.
- Play the level and test the TV.
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
.mp4and 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.
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.
- Find the wall frame Blueprint or mesh in the Content Browser.
- Identify the material used by the picture or frame.
- Find the texture currently used for the picture.
- Import the new image into the Content Browser.
- Replace the texture in the appropriate Material Instance or material setup.
- Save the asset.
- 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.
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.
Keep the master material stable. A dedicated Material Instance gives each room or prop its own look while protecting the original shared setup.
Creating Your Own Horror Escape Room
- Duplicate an existing room or level.
- Add walls and environment meshes.
- Add interactable objects.
- Add keys and other items.
- Configure inventory items.
- Add locked doors.
- Add puzzles.
- Add sounds.
- Add TVs and movies.
- Add pictures and decoration.
- Test the complete escape sequence.
- Package and test the game.
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.
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. |
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.
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.
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.
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.