top of page

Staring is Caring

Development

Engine: Source SDK, Hammer Editor

Game: Half-Life 2: Episode 2

Game Mode: Single Player Mini-Level
Development Time: 4-5 Weeks

 

Responsibilities

  • Designed and built a five room, sci-fi inspired environment.

  • Established a horror-themed, inspired narrative.

  • Developed and scripted a "look and freeze" mechanic.

  • Balanced and iterated on gameplay/enemy encounters.

Downloads

Level Overview

Set within the Half Life 2 universe as a part of the game’s expansion pack, the “Staring is Caring” level also takes place within this Combine infested environment. However, unlike the standard Half-Life series, the “Staring is Caring” level provides a unique variation on existing gameplay. Inspired by elements of Alien and the Dr. Who series, the “Staring is Caring” level permeates a horror-based theme and atmosphere. Mechanically, players have gained the ability to freeze enemies residing in their line of sight. Nevertheless, if players glance away from their unfriendly targets, these enemies suddenly regain all movement functionality.

Backstory

“Staring is Caring” reveals the tragic, alarming tale of an experiment gone wrong. Initially, various scientists worked to exploit and instill weaknesses or degradations in the Xen biology. With Gordon Freeman’s assistance, these testers acquired test subjects with which to experiment. Due to these individuals’ efforts, the Xen creatures exhibited a fascinating malady. When individuals directly observed the creatures, the creatures, subsequently, lost the ability to move. However, looking away from the Xen test subjects resulted in the creatures regaining full movement capability. Unfortunately, a sudden failure in laboratory procedure caused the escape of the Xen test subjects. Despite attempting to flee, the numerous “Headcrabs,” "Slow Zombies," and “Fast Zombies” killed a majority of their human captors. “Staring is Caring” opens on Gordon Freeman as he tries to escape the Xen infested laboratory. As power starts to fail, Dr. Freeman must manipulate environmental physics objects and solve puzzles to reach the only elevator guaranteeing safety.

Playthrough

Level Playthrough 

Design Goals

Design Goals

Throughout development of the “Staring is Caring” level, I focused on specific elements. With these items addressed, I found success and positive playtester feedback.

 

The following list details the overall design goals:

 

  • Accurately adapt the Dr. Who Weeping Angels’ “Look and Freeze Technique” into the Half Life 2 engine.

    • Properly convey the alteration between the “frozen” and “unfrozen” enemy states.

  • Create an aesthetically and thematically accurate environment that translates a sense of the “Staring is Caring” level’s horrific and chaotic storyline.

  • Iterate on and balance the difficulty progression with in-game textual prompts and proper enemy type placement.

Maps

Maps and Walkthrough

Level Objectives

Overall Objective:

  • Reach the final surface elevator to escape the Xen-infested facility.

    • Failure: Death by Headcrabs

    • Failure: Death by Fast Zombies

    • Failure: Death by Regular Zombies

    • Failure: Unable or unwilling to board the final surface elevator.

 

 

Area 1

Area 1: Overview

Gameplay/Story

  1. Initially, the player begins the “Staring is Caring” level inside of a moving elevator. Despite playing as Gordon Freeman, the player does not spawn with or pick up any weapons in this level. As the player rides the elevator, an unknown voice booms over the intercom. This mysterious figure reveals, in detail, the disastrous happenings within the testing facility (Line Set 1).

  2. Suddenly, the elevator screeches to a halt just past the building's second floor (Line Set 2). This brief pause allows the player to safely encounter enemies and experiment with their "look and freeze" ability. (Design Challenges). After a few moments, the elevator starts moving upward again.

  3. Once the elevator reaches the designated floor, the doors open. At this point, the objective text prints (Objective Text).

  4. The player enters into the hallway from the elevator. When the player takes a few steps, a Regular Zombie enemy rounds the corner, activating a pressure plate controlled door (Design Challenges). The mysterious figure also provides useful information about the pressure plate functionality (Line Set 3). As the creature stumbles through the doorway, the player must utilize their “look and freeze” ability.

  5. Avoiding the Regular Zombie is the optimal combat solution in this instance. Therefore, the player must shuffle around the enemy, activate the pressure plate (with their body or nearby objects), and continue into the next area.

 

Text and Dialog

Objective Text

*Objective text prints when the player exits the elevator.

  • Objective: “Reach the Storage Room.”

 

Dialog/Script

Line Set 1:

  • Unnamed Scientist: “Gordon, Gordon is that you? Listen there isn't much time. The aliens we were experimenting on broke loose! They're running around everywhere, killing everything. The only way out is through the surface elevator." 

Line Set 2:

  • Unnamed Scientist: "Dang it! The elevator just suddenly stopped! I'll get that back online. Now make sure to keep an eye on those aliens. When you look at them, they change their relationship to you. They suddenly like you. So any time you see an alien is blue, even if they are charging, you are totally safe. Alright! You should be good to go!"

Line Set 3:

  • Unnamed Scientist: "As you noticed earlier, anything entering the pressure plate beam activates the doors. Use enemies, yourself, or items to move on to the next area." 

 

Design Challenges

"Look and Freeze" Mechanic:

After various iterations on the “Staring is Caring” level, I received feedback regarding the “Look and Freeze” mechanic. Despite the proper functionality, players had difficulty processing the freezing’s subtleties, including when an enemy was “frozen” or “unfrozen.” Additionally, I introduced a Fast Zombie as the initial encounter with which to experiment and test the “Look and Freeze” ability.

 

To accommodate for these noted issues, I altered the introductory elevator sequence. Instead of merely riding the elevator while a secondary character details the level’s plotline and features, the elevator screeches to a halt midway. Stuck briefly within the elevator shaft, teetering just above a floor’s entrance, the player can safely encounter enemies. Those few moments allow the player to understand and process the shift from “frozen” to “unfrozen,” including the bright blue color change. Furthermore, I substituted the first Fast Zombie encounter with a Regular Zombie encounter, affording the player a secondary chance to investigate.​

Area 2

Area 2: Overview

Gameplay/Story

  1. The player enters Area 2 through the pressure plate controlled doorway, sealing the Regular Zombie in Area 1. There are no enemies wthin the first room of Area 2. However, if a Xen creature does somehow enter this room, several desks and miscellaneous furniture pieces serve as potential cover.

  2. The player moves to the right, heading for a side room. However, a barricade of broken items blocks the player’s progress. 

  3. In the side room to the player’s left, a Fast Zombie lurks behind the doorway, awaiting the player's entrance. The player must quickly freeze the Xen creature and proceed into the room, heading toward a pressure plate activated door. If needed, the player can grab two medical kits in this room to restore health.

  4. Once again, the player must balance staring at the Fast Zombie while also focusing on opening the doorway.

  5. With the door fully open, the player exits Area 2 and moves into Area 3.

 

Design Challenges

Guidng the Player:

In the “Staring is Caring” level, the player is trapped within an underground laboratory. Despite the scientists’ precautions, their alien test subjects escape from their confines. Free to wander the facility, these creatures kill many of the lab’s inhabitants. With this horrific tone and theme established, I needed to translate this horror into the overarching “Staring is Caring” aesthetic

 

To build this disheveled, chaotic environment, I set furniture in unusual positions, placed blood, dirt, scattered paper decals throughout the space, and utilized lighting to increase the sense of danger. Additionally, lights served as a vehicle to guide the player toward their objective. In Area 2 specifically, the brighter lights on the far end of the room encourage the player’s traversal, while the darker potions discourage traversal.

 

 

Area 3

Area 3: Overview

Gameplay/Story

  1. As the player enters Area 3, the objective text prints, instructing the player to stack or climb the nearby physics boxes in order to reach a vent (Objective Text).

  2. However, moving into this area also triggers a second Fast Zombie enemy. Consequently, the player must balance staring at the enemy and dodging appropriately.

  3. While avoiding the Fast Zombie, the player moves toward a large stack of boxes near the room's scaffolding. Once close to the stack, the player jumps onto the boxes and then, subsequently, stairsteps their way upward. While performing these actions, the player observes the Fast Zombie to freeze it in place.

  4. On the scaffolding, the player notices a ventilation shaft opening. Ignoring the Xen creature, the player hurriedly crawls inside of the ventilation system and consequently moves to Area 4.

 

Text and Dialog

Objective Text

*Objective text prints when the player enters the Storage Room.

  • Objective: “Enter the Ventilation System.”

 

Design Challenges

Incorporating Verticality:

While the “Staring is Caring” level is primarily housed indoors, I attempted to establish moments of verticality. Area 3 highlights a particular verticality implementation. In this rather large storage area, I tried to fill the space with a supported catwalk. From this platform, players crawl into the ventilation system, allowing for a unique transition point.

 

To alter this challenge, I encourage the player to stack boxes, hop atop them, and climb onto the catwalk.  This challenge slows players’ progress, creating tension and forcing interaction with the Fast Zombie enemy. Furthermore, once the players find themselves on the catwalk, the enemy leaps upward in pursuit. This WOW moment effectively reestablishes the “horrific” tone of the level.

 

Area 4

Area 4: Overview

Gameplay/Story

  1. The player enters the ventilation shaft and subsequently Area 4. This area contains one patrolling Headcrab enemy. The Xen creature moves in a circular movement through the various passages. Furthermore, this lightless area is dark and requires the player to utilize their flashlight.

  2. Moving along the ventilation shaft, the player turns right and continues forward. Before continuing, the player waits and guarantees that no enemy approaches. With no Headcrab in sight, the player turns left and hurries along the vent.

  3. Alternate Route: The player also has the option to continue forward, turn left and move along the ventilation chamber. This route also requires the player to avoid the wandering Headcrab.

  4. This route naturally dead-ends and forces the player to turn right. While freezing or avoiding the Headcrab, the player moves forward along the vent. Consequently, the player exits Area 4.

 

Design Challenges

Location and Enemy Variation:

The “Staring is Caring” level contains, in total, seven rooms in which players can explore. However, despite, varying layouts, textures, and sizes, I felt the need to incorporate a unique, transition location. When players enter the storage room, they must climb atop a catwalk and, subsequently, enter the ventilation system. With no light and little sense of direction, the vent environment serves to bolster the horror theme and tone. Additionally, the cramped space allows for the introduction of a new enemy type. Headcrabs in Half-Life 2 are notably agile and small. While they are weaker in terms of attack strength, in the “Staring is Caring” level they pose a significant threat. Due to their stature, players find it difficult to “stare” and “freeze” them.

 

 

Area 5

Area 5: Overview

Gameplay/Story

  1. At the outset of Area 5, the player drops into the room below.

  2. As the player moves forward a few steps, they encounter a double pressure plate powered doorway blocking their path.

  3. Suddenly, a Fast Zombie enemy drops from a vent in the ceiling. The creature immediately lurches toward the player. While the player dodges and avoids the Xen creature, the player searches for and grabs physics items.

  4. Grabbing ahold of an item, the player must carefully place the object onto one of the two pressure plates. Meanwhile, the Fast Zombie proceeds to attack if the player is not currently freezing it.

  5. The player must repeat steps 4-5 and activate the second of two pressure plates.

  6. With the two pressure plates activated, the doorway opens, allowing the player to move through the gateway to Area 6.

 

Text and Dialog

Objective Text

*Objective text prints when the player enters the room from the ventilation shaft.

  • Objective: “Activate the Plates Simulatenously.”

 

Design Challenges

Pressure Plate Communication:

Throughout the development of “Staring is Caring,” I continually adapted to player feedback. In particular, players expressed an intense need for better communication and conveyance regarding the world. These requests creatively pushed me to address these issues. Area 5 demonstrates one such problematic sequence. During the course of the level, the player activates pressure pads to open doorways. Despite various updates regarding color toggling, players were lost and confused. To account for this frustration, I incorporated a toggling light above the doorway as well as narration and text for instructional purposes. These additions not only helped participants navigate more easily, but also encouraged me to reflexively adapt and find a solution.

Area 6

Area 6: Overview

Gameplay/Story

  1. Entering the final area, the player immediately encounters two Fast Zombie, one Regular Zombie, and one Headcrab. 

  2. With encouragement from the mysterious scientist, the player rushes forward and presses the elevator call button (Line Set 1). However, the elevator is located on the surface and requires time to arrive (Line Set 2).

  3. While the player waits for the elevator’s arrival, the Xen creatures move in to attack the player. The player must freeze and dodge the enemies for 15 seconds.

  4. After the specified time interval passes, the elevator arrives and the doors open. With light pouring out of the elevator, the player rushes forward and enters. The player must press the interior elevator button to activate the elevator’s upward movement.

  5. With the button pressed, the doors slowly close. After the doors close, the elevator carries the player upward. The mysterious scientist congratulates the player and the level consequently ends once the player reaches the surface (Line Set 3).

 

Text and Dialog

Objective Text

*Objective text prints when the player enters the final Area 6 room.

  • Objective: “Survive until the Elevator Arrives.”

  • Conclusion Text: "You escaped! Thanks for playing!"  

 

Dialog

Line Set 1:

  • Unnamed Scientist: “Quickly Gordon! Activate the elevator call button. Its across the room!" 

Line Set 2:

  • Unnamed Scientist: "The elevator is on its way! Just hold on!!"

Line Set 3:

  • Unnamed Scientist: "Yes! You made it Gordon. Congrats!! and hey...don't wory about me, I'll uhhh...make it out somehow..."

 

Design Challenges

Enemy Balancing:

Throughout development, I constantly adjusted and readjusted the pacing of the level. Oftentimes, any difficulty complaints arose due to the number and type of enemies in an area. Initially, I had a Headcrab enemy at the beginning of the level. These creatures served as the tutorial or teaching encounters. Nevertheless, testers struggled to combat the smaller, nimble Headcrabs and, instead, fared much better against the Regular or Fast Zombies. Due to this feedback, I removed all instances of Headcrabs in wider, open areas until the final, most difficult room.

 

Consequently, Fast Zombies and Regular Zombies replaced the Headcrabs in the prior sections. Additionally, when the level’s challenge increases, the number of Xen creatures correspondingly increases. By the end of the “Staring is Caring” level, players must freeze and avoid two Fast Zombies, one Headcrab, and one Regular Zombie. The enemy variation encourages the player to adjust their line of sight in response to the smaller, larger, or faster encounter.

Scripting

Scripting

Look and Freeze Technique

Trigger Creation

At the outset of the project, I attempted various methods for replicating the player's line of sight. The following steps convey the best method I found during development.

  

  1. Select the "Block Tool" from the left hand sidebar.

  2. Create a long, narrow box (140 Tall x 1260 Long  x  212 Wide). Note: Move the newly created trigger to line up with the front of the player. This trigger parallels the player's line of sight. 

  3. Re-select the box and convert it to an entity. To do this conversion, click the "ToEntity" button on the right hand side of the screen.

  4. Subsequently, the object's properties window appears. Click on the drop down box with the words "func_detail" written inside. 

  5. Type inside of the space and name your trigger for reference later. I named my trigger "trigger_freeze_multi."              

  6. Click "Apply" and exit the properties window.

  7. Next, click the "Flags" tab.

  8. Inside of this tab, select "NPCs" and de-select "Clients."

Parenting the Trigger

After the trigger's creation, I parented the trigger to the player, causing the trigger to follow the player. This step is not done within the trigger itself. Instead, I used a separate entity called a "logic_auto" to parent properly.

  1. Click the "Entity Tool" in the left hand sidebar.

  2. Type "logic_auto" into the objects drop down box.

  3. Click on any surface to place the "logic_auto" component.

  4. With the entity in place, re-select the "logic_auto" to open its properties window.

  5. In the properties window, click on the "Output" tab.

  6. Select the "Add button" and enter the following values in the specified drop downs:

    1. My output named: OnMapSpawn

    2. Targets entities named: trigger_freeze_multi

    3. Via this input: SetParent

    4. With a parameter override of: !player

    5. After a delay in seconds of: 0.00


 

Freeze Functionality

The "freeze" mechanic does not explicitly stop the enemies. The trigger merely toggles the enemies' relationship to the player from aggressive to friendly. This relationship transition makes it appear as if the enemy has stopped.

  1. Select the trigger entity and double click to open the object properties window.

  2. Once the window opens, click on the "Outputs" tab.

                           

Toggle the "Like" Relationship

Select the "Add button" and enter the following values in the specified drop downs:

  1. My output named: OnStartTouch

  2. Targets entities named: !activator

    1. Note: The !activator entry forces the trigger to affect only the enemy that "activated" it. This target allows the player to affect the enemies currently in the player's line of sight. Additionally, if the "!activator" is red within the properties window, do not worry.
      the coloration is a normal and non-threatening feature.

  3. Via this input: SetRelationship

  4. With a parameter override of: player D_LI 99

    1. Note: The D_LI 99 entry means that the enemy will Like (LI) the player the maximum amount (99).

  5. After a delay in seconds of: 0.00

                     

Toggle "Hate" Relationship

  1. Select the "Add button" again to enter the output that reverts the "freeze" state:

    1. My output named: OnEndTouch

    2. Targets entities named: !activator

      1. Note: The !activator entry forces the trigger to affect only the enemy that "activated" it. This target allows the player to affect the enemies currently in the player's line of sight.

    3. Via this input: SetRelationship

    4. With a parameter override of: player D_HT 99

      1. Note: The D_LI 99 entry means that the enemy will Hate (HT) the player the maximum amount (99).

    5. After a delay in seconds of: 0.00


 

Optional Step: Coloring Enemies Based on Frozen State

When creating the "Staring is Caring" level, I noticed that players had difficulty knowing when the aliens were frozen or unfrozen. To assist with this discrepancy, I colored the enemies a shade of blue when an enemy entered the trigger and subsequently reverted it upon their exit.

 

Toggle Enemy Color On

Select the "Add button" to enter the output that colors enemies when they are in the "freeze" state:

  1. My output named: OnStartTouch

  2. Targets entities named: !activator

    1. Note: The !activator entry forces the trigger to affect only the enemy that "activated" it. This target allows the player to affect the enemies currently in the player's line of sight. Additionally, if the "!activator" is red within the properties window, do not worry. The coloration is a normal and non-threatening feature.

  3. Via this input: Color

  4. With a parameter override of: 102 178 255

    1. Note: These three numbers refer to the RGB values. This entry in particular turns the enemies blue.

  5. After a delay in seconds of: 0.00

                    

Toggle Enemy Color Off

  1. Select the "Add button" again to enter the output that reverts the coloration:

    1. My output named: OnEndTouch

    2. Targets entities named: !activator

      1. Note: The !activator entry forces the trigger to affect only the enemy that "activated" it. This target allows the reader to affect the enemies currently in the player's line of sight.

    3. Via this input: Color

    4. With a parameter override of: 255 255 255

      1. Note: These three numbers refer to the RGB values. This entry in particular returns the enemies to their original color.

    5. After a delay in seconds of: 0.00

Postmortem

Postmortem

What Went Well:

  • During the course of development, I found it relatively easy to create and implement my main "look and freeze" mechanic.

  • Due to my extensive pre-planning, I experienced little to no level breaking development errors or bugs

  • I designed, built, and decorated a five room laboratory environment to a high level of polish. 

  • Aesthetically, the level achieved the horrific theme and tone I desired from the outset.

 

What Went Wrong:

  • Throughout development, I struggled with player communication with both the "look and freeze" mechanic as well as the pressure plate activated doorways.

  • My initial enemy type selection and placement were not condusive to fun gameplay. Upon playtest, feedback I received contradictory suggestions regarding which enemies were the most supportive of my main mechanic. 

  • The elevators in my level proved problematic to create and place within the world. The move linear entity is quite limited and required constant updates.

 

What I Learned:

  • In a short amount of time, I learned the intricacies, particularly involving world-building and scripting, in an unfamilair engine.

  • I learned to process playtest feedback and refine gameplay to increase the user's experience.

bottom of page