How I Make a Horror Level

In general, here’s how it’s done.

 
 

Infinite Level game discussed: What Hides in Dreams

Happy new year! Just a couple months ago, I finally revealed what my next game will be, a psychological horror titled What Hides in Dreams. Lat month's dev blog covered how death leaves scars in this game, which is What Hides in Dream's signature mechanic. But outside that, I haven't actually gone too in depth with anything in the game, be they general game mechanics or level breakdowns. So, to kick off the new year, it felt appropriate to start with a general overview of how I have been making the levels in this game so far. Future dev blogs can then elaborate on the information here as needed. This month's dev blog will be talking you through the basic process of making a level in What Hides in Dreams from start to finish. The structure of this dev blog does mean that the fine details will need to be saved for another time, but hey, that just gives me reason to revisit level design topics in future.

Of course, the first thing that needs to happen is to come up with a basic design of the level. For me, this has meant starting by coming up with a location and a monster to house. Because all the monsters in this game have unique characteristics, each level will need to be designed with a monster's abilities in mind. For instance, the silent monster is, well, silent. Therefore, you can't really rely on sound to help players figure out where the monster is. To counter that, this monster's level has several long hallways that can help you spot the monster from further away. In particular there's a central area that you can reasonably count on spotting the monster in as you go from room to room, assuming it's actually in there. For a more extreme example, at the time of writing I am making a really large monster that tries to use the level's light sources against you, so the space needed to be designed to accommodate its large size as well giving a rough idea of where the monster will be in order to control different light sources. From there, the rest is all gameplay decisions. Where are the possible spawn points for items? What path is the player expected to take to get there? And of course, when and where will other spooky events occur to keep the player on edge? Of course, it should be noted that as I am a solo dev, the design drawings and documents are only ever gonna be seen by me, so while I'm willing to share one example of a level design drawing, know that it's probably missing a lot of helpful info that team members would likely need to know, if I had such a team to work with.

 

Here’s a fun game! Try to decipher what all the symbols and dots mean.

 

Designing all the levels in the game was actually one of the first things I did when I began developing What Hides in Dreams. Thus, barring any major changes that need to happen later, all the levels I have planned for the game are mapped out and ready to be realized. To actually build a level, the first thing to do is “blocking”, which for me and my development pipeline means laying out the walls of the level and only the most essential of props. I'm not even getting into lighting yet, it's all about the basic geometry of the level and how it feels to walk around in the space. At the same time (or at least shortly after) I am also typically working on the monster character that will be occupying the level, which means making a model, animating it, and programming its behaviors. I have a testing level specifically for testing out my monsters, so I can fine tune its properties and unique traits early before it actually goes in the level. Additional testing of the monster as it relates to the level it will be in tends to happen towards the end and is usually one of the faster things to test. Turns out, in a game with mostly humanoid monsters, whatever feels right for the player character will most likely feel right for the monster too.

On to actually making the level playable then. This means bringing in any items that the player will use and programming any unique elements to the level. Usually these are things like puzzles and items exclusive to the level. How long I'm at this particular task will vary a lot from one level to the next. One level may have one over arching puzzle to solve throughout the level, while another may involve multiple smaller puzzles. This step will also typically involve placing general “level setup” objects that will be used for things like spawning the monster and placing key items. If you look at the screenshot below, you'll notice there's all kinds of lines and markers sprinkled throughout the area that you'll never actually see in-game. These are the kinds of objects I'm talking about. They're very simple, often literally being a marker for other objects in the game to reference and nothing else. But even those small, seemingly insignificant objects do a lot to make the game function.

 

An in progress screenshot of a level I’m currently working on, shown in unlit mode. Notice the key icon designating a spawn point for a key item. You’ll also see some special triggers around the doors and a couple books on the table that the player can interact with.

 

By this point, nearly all of the coding for the level should be done, so it's time to focus our next efforts on atmosphere and immersion. In many ways, this is the fun part of the level creation process. Placing lights, writing music, and creating sound effects are the kinds of tasks that encompass this stage of level making. They're also the parts that take an ordinary level and can make them creepy and suspenseful, hence why it's so fun adding these things in. Usually I start with lighting, getting the general color, brightness, and overall tone of the lights where I want it. If needed, I may also make some light fixture models at this point Once my lights are placed, I usually move on to making music next. Most levels are comprised of four music pieces, which I label as safe, search, alert, and chase. Some levels may have less if a monster's unique mechanics cause them to bypass certain behavior states, but four tracks per level is the average. Then there's sound effects, which are almost certainly going to be the sort of thing I tweak and adjust as I go but I try to at least have the proper sounds for the general mood I want to hit. In a game like this, sound effects come from a lot of places like physics objects, levers, disembodied voices, and of course the monster, so the amount of sound effects needed can quickly add up.

Next up is the decoration phase. Well, I say “last” but the truth is that I probably dabble in this here and there throughout the level's development. However, this is the definite point where it gets a lot of attention. There's not much to say about it. I simply place objects that fit the area, making the place more believable. Now, since this game takes place in literal dreams, I do allow myself a little leeway in this regard. The game is still going for a realistic style, but some things being wrong can still fit in thanks to the dream setting. Sometimes it's obvious – beds on the ceiling, messy prison cells where they are normally tidy, or holes in the floor. Other times it's a bit more subtle like overly long hallways or furniture with something off about them. The end goal is always the same, and that's to make the place feel alive, unnerving, and real. On a related note, this is also where I implement the level's “horror events”, those fun little scares that we developers throw in to make you think you're always in danger. Banging doors, creepy whispers, and strange sights are just a few of the things that can pop up, never mind the monster itself. Technically, these horror events get their own phase of development, but they're usually pretty quick and are done at the same time as decoration, so I'm lumping them together here.

 

When you think about it, a single space can have a lot of individual items in it.

 

Wrapping up a level's creation is the testing and optimization phase. Once again, a pretty straightforward task. Play the level a lot, make sure it's not easy to break, and fix bugs as you find them. For optimization, I make sure the game is still running smoothly at any point in the level. My current methods for optimization is pretty simple, but it's proven effective so far. I make use of a lot of culling volumes (basically invisible boxes that will hide anything inside it when the player is so far away) and place them all over the level. Change a few numbers to determine how far away the player must be for the culling to take effect, and I'm doing the optimization! Playtesting is a bit more involved as it focuses on making sure the player can't break the game or witness seriously immersion breaking bugs. A lot of time is spent playing the level over and over again, with the idea being that the level should be playable and fairly polished if I were to release the game now. Of course, playtesting won't stop when I consider the level “done”. It's one of those things that will always be coming up throughout development, but for this first complete version of a level I try to knock out what I can and take care of major problems early on.

After that's done, that's a level made from beginning to end and it becomes time to do it all over again for another level. Now, as alluded to in the playtesting phase, the level can't exactly be called done yet. Future playtesting will inevitably show more work to be completed. The hope is that it's mainly just bug fixes, but that new work could be adding entire rooms or new horror events to make the level scarier, introduce new story details that weren't there before, or other things. But for the most part, that's the process of making a level in a nutshell. Deeper dives into the details of any one of these phases will have to wait for a future dev blog, but at least this can be a handy reference for what generally happens. If you're curious, so far the average time it has taken for a level to be presentable is about one month, with larger levels taking closer to one and a half months due primarily to the extra blocking and decorating that needs to be done. Also remember that this is not factoring in any dev time later down the road when I'm trying to polish the content. And yes, this does mean the screenshots, GIFs, and video footage you've seen so far is of levels that are technically incomplete. Of course, I do try to make what you see here and on the Steam page as representative of the final product as possible. So while there's no doubt going to be more work done to these levels, the images and video footage shown should ultimately be pretty close to what you'll eventually get. Worst case scenario is I update screenshots and put out new footage showing improved versions. And speaking of improved, I better get back to improving the overall package by making more levels.

Until next time!

-Lance T.

Next
Next

Death Leaves Scars