Nothing’s Sacred

Download and documentation available.

Tools: Radiant, idTech 4, Visual Studio, Google Docs, Google Draw

Role: Level Designer, Scripter

Team Size: Myself

Development Period: June – November 2016

Nothing's Sacred is a custom level made for The Dark Mod, an open-source game made to emulate the gameplay of Thief: The Dark Project and Thief II: The Metal Age. I made this level because of a desire to branch into stealth levels, and after discovering Randy Smith's GDC talk and slideshow explaining his approach to creating levels for the Thief games.

Design, Layout, and Documentation

One of the biggest aspects to Smith's approach is to think of elements in the level as either something that will attract the player (like dark areas and quiet surfaces) or repel them (like bright areas, loud surfaces, and enemies). Using this, the level designer can imagine a rough golden path through the area that the player is likely to follow.

This should be done to create "islands", areas in the level where the player is at no risk of being spotted if they stay there. These have several functions: first, they give players a resting point that they can leave when they want, which is important in the very tense Thief games. Second, islands often serve as scouting locations for the player, giving a clear view of the next encounter before they try to go through it. Lastly, islands allow the designer to think of encounters as beginning at one island and ending at the next, defining the "minute-to-minute" loop of the game.

For the inspiration of the level's intent, I looked back at the first level of Thief II: The Metal Age, which constrained the player to a linear path to teach them the basics of the stealth system. Later on in the level, more routes become available to the player, introducing them to the open-ended approach that Thief and other system-driven games offer. I designed my level after this, slowly layering on the rules of the light and sound systems, and eventually giving the player more options once they enter the basement area.

Blockout and Gameplay Implementation

With my previous level design projects, I was able to use a linear process of design, documentation, blockout, gameplay, and polish, with intermittent testing throughout The Dark Mod's gameplay, however, relies on the player's visibility and audibility, which are affected by lighting and floor textures, respectively. Because of this, I had to adapt my usual workflow, doing a rough lighting and texturing pass before I was able to have others playtest the level.

I had friends test this level at several points during development, getting feedback on where they were getting lost or stuck. Through this, I iterated on player direction, adding things such as the porch conversation telling the player that there are keys in the watchtower, and scratches on a wall next to a painting hiding a switch.

void FuncPorchConv() 
{ 
    //checks porch_guard_1's suspicion before playing line 
    if($porch_guard_2.getAlertLevelOfOtherAI($porch_guard_1) < alertLevel) 
    { 
        $porch_guard_2.playAnim(1, "idle_talk1"); //plays talk animation 
        $porch_speaker_1.activate($player1); //plays first line in conversation 
        sys.wait(6); //wait six seconds to let first line finish 
    } 

    //same thing again with conversation's second line 
    if($porch_guard_2.getAlertLevelOfOtherAI($porch_guard_1) < alertLevel) 
    { 
        $porch_guard_1.playAnim(1, "idle_talk2"); 
        $porch_speaker_2.activate($player1); 
        sys.wait(6); 
    }

    ... //two more lines play 

    //prompt guards to start their patrol route
    sys.trigger($porch_guard_2); 
    sys.trigger($porch_guard_1); 
}

Scripting was done using idTech 4's proprietary scripting language, which has a syntax very similar to C++. A large amount of logic is handled by in-level entities, keeping the amount of necessary scripting to a minimum.

On the left is an example of function from the script, which handles a conversation between two guards near the front porch.

Environmental Decoration

With this project I took the opportunity to really work on my art skills, as I felt visuals were the weakest aspect of my previous levels. As I started designing the layout of the level, I gave more thought into defining the history of the location (a seaside church that was abandoned then retrofitted into a manor) and to the person who owned it (a shipping merchant wanting to prove his faith by buying the church).

Using this narrative framework, I could ask myself questions about the setting and the character to get insight as to how I could decorate the area. For instance, since the owner of the manor deals with nautical shipping, I filled his room with books, a map, and a large globe, among other things. Thinking about the manor's history as a place of worship also inspired me to create the arched roof and the stained glass in the back wall.