The Shape Of Silence

A WIP narrative puzzle game being made in Unreal Engine 5 using mostly C++ and FMOD for the audio.

Team size: 1 Time Frame: Ongoing (since January 2025) Tools: Unreal Engine 5, C++, FMOD
Gameplay overview

Introduction

The Shape Of Silence is a narrative puzzle game that I started developing to improve my UE5 C++ skills, and to improve my game design and writing skills. But what started as a simple project quickly evolved into a more ambitious story game. The game's story explores themes of guilt, complicity, and martyrdom.

It is a first person puzzle game where the player explores an old hotel, solving grid puzzles, uncovering pieces of the story by interacting with objects, dialoguing with an NPC. There is an inventory system, a book and note reading mechanic, branching dialogues, grid puzzle mechanics, and more.

Every system is programmed in C++, with blueprints used only for light level scripting and other visual effects. The audio is implemented using FMOD.

Video Showcase

A short video showcasing the current state of the game as of October 2025.

Grid Puzzles

The game features various grid-based puzzles that the player must solve to open doors and progress through the story. I am using OOP principles to create an extendable puzzle that makes it easy to add new puzzle types So far there are two types of puzzles, basic mazes and rotating mazes:

Basic maze puzzle, controlled with WASD, with the goal of moving the red piece to the red cell.
A variant of the basic maze puzzle, where instead of controlling the red piece, the player rotates the board 90 degrees, using gravity to move the piece around.

Dialogue System

The game features a branching dialogue system that allows the player to interact with NPC characters (although in my game, there is only really one NPC to talk to). The system supports multiple choice responses and callbacks. I use my own Easy Dialogue Editor tool to create and manage the dialogue trees. This system also supports protagonist-monologues for interacting with and inspecting in-level objects.

The Easy Dialogue Editor interface, showcasing a portion of a dialogue tree.
The resulting dialogue sequence in-game, using the dialogue tree shown in the left image.

Inventory System

The inventory system is implemented as a subsystem that can be accessed anywhere, making it easy to script item pickups and item usage. Items can also be inspected from within the inventory, with support for rotating the 3D model of the item and interacting with it (inspired by Resident Evil 7 and 8).

Inventory clip
Inventory interaction with item inspection.

What I'm learning

So far, this project has made me learn a lot about Unreal Engine 5 and C++ programming within the engine. Before this project, I had only worked with UE4 using only blueprints, back in 2016. I also got better at planning out the architecture of the game systems in advance, to make sure they are decoupled and extendable in the future.

This was also the first time I had the opportunity to properly use OOP principles in game programming. In Unity C#, as programmer I typically approach development using a more component-based approach, akin to ECS, but in Unreal C++ I have been able to properly use inheritance and polymorphism more often.

I found that unreal subsystems are a great way to implement blueprint friendly singleton managers, and using delegates, I can create event-driven communication between classes which is something I use extensively in Unity C#, albeit with a very different syntax.

This project also showed me why I find the FMOD logo so often while playing great games 😅. I wasn't very familiar with audio programming and audio middleware in general before this project, and using FMOD has been a great experience so far, especially as someone who loves sound design.

I am very excited to continue learning and developing this project further!