Don't Scream: How a small team is leveraging Unreal to deliver dynamic scares

"We had to figure out when to introduce certain scares dynamically, without overwhelming the player with too many scares too soon."

Nick Pfisterer •
Don't Scream: How a small team is leveraging Unreal to deliver dynamic scares

I am a life-long fan of horror. Games, films, books; you name it. I think the best horror is the kind that is unpredictable. The kind that keeps you on your toes, never quite knowing what to expect. Never quite sure what you will find around the next corner.

I can appreciate a good jump scare, too, but unless tastefully done, they are usually at odds with the kind of slow burn psychological dread I enjoy. Sometimes, though, the two can work together.

DON'T SCREAM is a short horror game designed by Joe Henson and co-developed with Digital Cybercherries. The main, microphone-powered gimmick – if you scream, you lose – caught my attention, but the dynamic nature of the game is what drew me in. You must explore the mysterious Pineview Forest for 18 minutes without screaming. Along the way, the game is building atmosphere and coming up with ways to scare you – and it's different every time you play.

I have been following the game since it released in Early Access on Steam last October, where it sold over 100K copies in the first two weeks. Henson has already talked at length about the marketing behind DON'T SCREAM – so I wanted to dive into the development side of the story.

Henson and the team at Digital Cybercherries were kind enough to answer my questions about choosing Unreal, working with Lumen, crafting the dynamic scare system, and more. Enjoy.

Why did you choose Unreal Engine 5?

Dec Doyle, Programmer & Game Designer: We decided to use Unreal Engine 5 for a few reasons. Firstly, it offers an increase in lighting, graphics, and advanced technology that we can leverage to create a next-generation title. Additionally, the engine provides a fantastic new user interface that is much improved over Unreal Engine 4. Furthermore, the engine boasts the latest compiler tools and updated support, making it easier for us to stay on top of new changes and technology, and ensuring that we don't fall behind. This will also make it easier for us to port our game to other platforms!

Are you programming with Blueprints, C++, or a mix of both?

Doyle: For our purposes, we use a combination of both. We mostly use C++, but we also use our C++ framework to create areas such as Animation graphs, AI, and small event-driven actions and actors in Blueprint.

It looks like you are using Lumen for fully dynamic lighting. How has your experience been with that?

Doyle: Lumen is very impressive, but it can be difficult to optimize. It has taken us a considerable amount of time to ensure we can achieve the best of both worlds. As a backup plan, we are experimenting with a simplified image-based lighting setup that allows us to have a low-graphics fallback option. This option would completely disable Lumen but still keep the game looking good and running on much lower hardware.

Courtesy of Digital Cybercherries
The scare system seems to have some contextual awareness of both the scenario and the environment. How do you determine which scare to spawn, when, and where? Are some scares only possible in certain locations?

Doyle: We have developed a spawn system, known as the "Scare Director", which contains curated lists of 'Scares' that are appropriate for each area and time slice. As time passes, a new time slice is selected, and new potential scares are randomly chosen from the curated list. Some scares are also manually placed in the world but are still triggered based on time. Certain scares are restricted to specific zones and areas to prevent animals from spawning indoors and larger scares from appearing in small spaces. We use hand-placed zones for this, which also work well with the navigation mesh to ensure that scares can fit or work in a selected area.

I really enjoyed the sound design when I played. Are you using MetaSounds for that? Did you record any of the sound effects yourself?

Ulrich Gollick, Audio Engineer & Game Designer: Thank you for your generous feedback. In our current version, we primarily utilize Soundcues, which, despite being a bit older, still offer robust options for sound design. Due to time and budget constraints, we have leaned on sound libraries rather than creating in-house sound effects. However, in the upcoming updates, we are committed to recording and incorporating more of our own sounds, reflecting our dedication to continuous improvement.

Looking ahead, our next version updates will introduce Metasounds, providing us with enhanced playback control over individual sounds. We're enthusiastic about leveraging Unreal's soundscape subsystem and ambient zone system to heighten player immersion and ground the game world in reality. Our extensive redesign of the bus structure for creating mixes and the inclusion of modulation parameters will significantly streamline our workflow in game mixing.

The Unreal Engine audio team's remarkable dedication over the past decade has been a driving force, and we are excited to integrate every element that contributes to providing an exceptional audio experience for our players.

The environment seems pretty expansive, and I like that there are several interesting landmarks to explore, such as the cemetery or the mini mart. How much of the environment is procedural? How much is hand-placed and deliberately designed?

Andrew Hielscher, Environment & Level Designer: Most of the elements in the game were not procedurally generated, but some elements were procedurally generated during in-editor and then saved. It's likely that Joure used a heightmap tool to generate the terrain, which was then imported into Unreal. The trees were most likely generated in Unreal using terrain rules (such as not placing trees on steep slopes), and then manually removed in areas where landmarks were placed. Currently, we are placing many objects in the environment by hand, which can be time-consuming. However, we're also experimenting with ways to speed up this process. So, it's a mix of deliberate design and natural-looking areas left untouched!

Courtesy of Digital Cybercherries
How much are you relying on resources like Unreal Marketplace and Quixel Megascans?

Josh Lennen, Art Design & Animation: For DON'T SCREAM, we’re relying very heavily on Unreal Marketplace for both environmental assets and characters for generic scares. There are some Megascans assets in the game, but only a few curated meshes and textures. Normally we would take the time to develop our own assets as we’ve done in our previous titles, but that takes a lot of time we simply do not have. Given the scope and style of the project, our timeline for bringing the title out of Early Access, utilizing these repositories is the ultimate time saver.

We do have to be careful in which assets we bring into our project because there is no specific standard for every Unreal Marketplace asset available to the public. Some may be too heavy on texture resources, or an asset requires the use of certain features we don't want to ship with our game, or the quality of the asset doesn't really match what's on the tin. With the experience we’ve gained as developers working in Unreal Engine, and the advancements made to tools inside of Unreal, we can easily set up modified Marketplace assets. This allows us to focus on blending it all together so there is a consistent visual fidelity throughout and ultimately bring the player into the stories hidden behind each region of the large landscape in DON'T SCREAM.

What has been your greatest challenge so far in terms of development, and how did you overcome it?

Joe Henson, Game Designer & Marketing Director: I'd say the biggest challenge we faced was figuring out the right pacing for the game. We had to figure out when to introduce certain scares dynamically, without overwhelming the player with too many scares too soon. This meant a lot of testing, going back and forth, and really understanding what could make someone scream. Now, we're focusing more on creating scares that build tension instead of just relying on jump scares. Overcoming this challenge really came down to lots of testing and tweaking!

You have stated that you plan to expand on the game's story and lore. How do you plan to balance that with the tight gameplay loop of surviving for 18 minutes?

Henson: Our strategy to expand the game's story and lore while maintaining the engaging survival gameplay involves seamlessly blending narrative elements into the action. We're focusing on environmental storytelling, which means we're embedding the story within the game's setting itself. Players will uncover the lore by interacting with the environment, through discovering unique structures, objects, and both listening to and observing the world around them. This method enhances the game's universe organically, without halting the gameplay for cutscenes or forced narrative breaks.

Where do you get your inspiration for horror?

Henson: I get my horror inspiration from a bunch of things, really, but a lot of it comes from my own imagination. I live next to these big woods and walk my dog there every day. While walking, I often find myself imagining all sorts of "what if" scenarios. Like, what if it suddenly got super dark even though it was sunny just a moment ago? Or what if my dog started freaking out over something I couldn't see? I guess I pull a lot from my own fears. And of course, horror movies are a big inspiration too. Films like It Follows, Wolf Creek, and Jeepers Creepers have definitely sparked some ideas!

DON'T SCREAM is available now in Early Access on Steam. You can follow Joe Henson and Digital Cybercherries on X (formerly Twitter).