Home || About/Contact || Resume || Articles || LinkedIn

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

Overview: 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.

Skills Involved:

  • 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.

    An example of the approach I took for documenting the layout of this level. On the left is a picture of the first floor’s design, while on the right is the layout with the estimated player path and safe “island” areas ideal for hiding and scouting ahead.

    Another major aspect of this approach is 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, allowing them to take more of 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.

    A walkthrough of the first mission of Thief II: The Metal Age. Note how the section in the basement serves as a tutorial to the game’s light and sound systems.

  • Blockout and Gameplay Implementation: With my previous level design projects, I was able to use a linear process of design, documentation, blockout, gameplay, lighting, texturing, sound, 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.

    Some shots of the level at the blockout stage.

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

    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);
    }
    

    An (abridged) example function from the script, which handles the conversation near the front porch.

    I also wanted to use this opportunity to improve on some aspects of Thief‘s levels that hadn’t aged well, most notably player direction. Though leading the player by lights, pushes, and pulls isn’t as viable in open-ended levels, it should still be clear to the player what their next objective is and where they need to go to achieve that. While Thief used maps and objectives to communicate this to the player, quite often levels added complications to achieving tasks that weren’t adequately explained.

    To help, I had a number of my friends test this level at several points during development, getting feedback on where they were getting lost or stuck. Through this, I could iterate on adding ways to give information to the player, such as the porch conversation telling the player that there are keys in the watchtower, and adding scratches on a wall next to a painting that hides a switch.

  • 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. While working on my last team project, the artists in the group really pushed me to consider the setting and narrative of each room. 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).

    Some shots of the level after the decoration stage.

    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.

Postmortem:

Overall I’m cautiously optimistic about how this project came out. The jump to stealth and immersive sim design was a pretty big shift from shooter and horror levels, but following the materials by Randy Smith I mentioned above gave me a good framework to use.

Looking at the environment, I’m quite proud of how far I managed to push my decoration skills. Coming up with a basic narrative to guide the setting helped to do a lot of heavy lifting, making prop placement and decoration surprisingly emergent and intuitive. Still, though, there are some areas that look very empty and sterile to me, so I know I’m going to continue to work on improving this aspect of my projects.

Back to Level Design Portfolio >>

Advertisements