Overview:
"Slacky's Command" is a Real-Time Strategy level, using Source SDK and Half Life 2: Episode 2. The story takes place immediately before Chapter 10, from Half Life 2, after Gordon and Alyx's escape from Nova Prospekt. The citizens of City 17 have risen up against the Combine, and this level re-imagines Gordon's assistance to the Resistance as a Real Time Strategy game. Players take on units in small squads to capture Combine territory, while defending and attacking Combine forces from a top-down perspective. The level focuses on the unique mechanics of an RTS, while also providing cinematic moments, and boss-fights, to involve the player into the action throughout each encounter.
Design Goals:
Mission Type:
Single Player Mission / Level Play Time: ~ 15 minutes
"Slacky's Command" is a Real-Time Strategy level, using Source SDK and Half Life 2: Episode 2. The story takes place immediately before Chapter 10, from Half Life 2, after Gordon and Alyx's escape from Nova Prospekt. The citizens of City 17 have risen up against the Combine, and this level re-imagines Gordon's assistance to the Resistance as a Real Time Strategy game. Players take on units in small squads to capture Combine territory, while defending and attacking Combine forces from a top-down perspective. The level focuses on the unique mechanics of an RTS, while also providing cinematic moments, and boss-fights, to involve the player into the action throughout each encounter.
Design Goals:
- Create squad-based real time strategy game using the Source Engine, set within the Half Life 2 universe.
- Take place within the timeline of Half Life 2 campaign, after the escape from Nova Prospekt, and act as a "re-imagined" scenario of the Rebel attack on City 17.
- Implement RTS mechanics and gameplay unique to the Half Life 2 world.
- Build a fully playable, paced and flowing campaign to adapt players to this new experience.
Mission Type:
Single Player Mission / Level Play Time: ~ 15 minutes
Scripting
Control Point System
The control point system stemmed from my desire to re-create RTS mechanics from games like Company of Heroes, and provide a secondary game-play element aside from just being able to "control units" in an RTS fashion. Using the control points allowed me the opportunity to provide pacing in an environment where none existed outside of combat.
Technical Details:
Using the Hammer Input / Output system allowed me to accomplish the creation of the control point system by using Touch Triggers to register NPC interaction within the space of influence. Using an filter node, I was able to filter what the Touch Trigger box registered, whether Combine or Rebel NPCs, and only allowed a count-down timer depending on whom was inside the trigger box at a given time.
The counter was a simple math logic system, where it would display game_text nodes based on the position it was on the logic_case function. Using math_counter to count both up and down, and using the logic_cases allowed me to display the count-down, while actually having a "count-down" occur in the background.
It was a simple matter of adding some sort of event occurrence (whether NPC spawns, or UI update) at the end of the math_counter, using the logic_cases, in order to signify the end of the Control Point (it being capture).
The control point system stemmed from my desire to re-create RTS mechanics from games like Company of Heroes, and provide a secondary game-play element aside from just being able to "control units" in an RTS fashion. Using the control points allowed me the opportunity to provide pacing in an environment where none existed outside of combat.
Technical Details:
Using the Hammer Input / Output system allowed me to accomplish the creation of the control point system by using Touch Triggers to register NPC interaction within the space of influence. Using an filter node, I was able to filter what the Touch Trigger box registered, whether Combine or Rebel NPCs, and only allowed a count-down timer depending on whom was inside the trigger box at a given time.
The counter was a simple math logic system, where it would display game_text nodes based on the position it was on the logic_case function. Using math_counter to count both up and down, and using the logic_cases allowed me to display the count-down, while actually having a "count-down" occur in the background.
It was a simple matter of adding some sort of event occurrence (whether NPC spawns, or UI update) at the end of the math_counter, using the logic_cases, in order to signify the end of the Control Point (it being capture).
Real Time Strategy Controls
RTS (Real Time Strategy) Controls provide the meat of the gameplay elements for this map. They were inspired by my love for RTS games, such as Starcraft, Company of Heroes, etc... and due to the restriction of working in Half Life 2, I wanted to find a way to still be able to make an RTS. The design goal around these controls were to provide an easy-to-use scheme, mixed with the ability for individual unit control, essentially allow the players to go "Wow, this is an awesome mechanic, and these controls are polished!".
Technical Details:
Creating the RTS controls and system involved a deep understanding of how Half Life 2 laid out their control config files, console commands, and specifically, debug mode.
Debug Mode Details:
bind mouse1 "ent_fire !picker FireUser3"
bind mouse2 "npc_go;ent_fire !picker FireUser2"
bind 1 "npc_select npc_citizen"
RTS (Real Time Strategy) Controls provide the meat of the gameplay elements for this map. They were inspired by my love for RTS games, such as Starcraft, Company of Heroes, etc... and due to the restriction of working in Half Life 2, I wanted to find a way to still be able to make an RTS. The design goal around these controls were to provide an easy-to-use scheme, mixed with the ability for individual unit control, essentially allow the players to go "Wow, this is an awesome mechanic, and these controls are polished!".
Technical Details:
Creating the RTS controls and system involved a deep understanding of how Half Life 2 laid out their control config files, console commands, and specifically, debug mode.
Debug Mode Details:
- Creates a purple wireframe outline when NPC's are selected using the NPC_Select console command.
- Allows players to use NPC_Go, which commands NPCs to move to a specific location. A motion arrow / line appears to show the pathing and direction
bind mouse1 "ent_fire !picker FireUser3"
bind mouse2 "npc_go;ent_fire !picker FireUser2"
bind 1 "npc_select npc_citizen"
Maps & layout
Prologue - Back from Nova Prospekt
This level is designed to be placed straight into the Half Life 2 campaign. It occurs right after the escape from Nova Prospekt, and sets up the battle of City 17 in Dr. Kleiner's lab. The goal was to provide a familiar setting, while introdcing players to this new "adaption" to the original campaign.
Design Goals:
This level is designed to be placed straight into the Half Life 2 campaign. It occurs right after the escape from Nova Prospekt, and sets up the battle of City 17 in Dr. Kleiner's lab. The goal was to provide a familiar setting, while introdcing players to this new "adaption" to the original campaign.
Design Goals:
- Introduce players to a familiar setting which could be inserted directly after Chapter 9 of Half Life 2 main campaign, from the escape of Nova Prospekt.
- Provide a summary of events, and set the story of the following series of levels, while providing context for the player's situation in the following events.
Level 1 - Capture the Helipad
This level is the first to show the unique mechanic and controls of the newly built Half Life 2 Real Time Strategy, using nothing but in-editor, scripts, and some unique re-usage of Source SDK features. Using debug-mode to activate a pseudo-code and some commands via config files to manipulate NPC control, I was able to create a new mechanic and game-mode without having to modify the game in an extreme way.
Design Goals:
Objectives:
This level is the first to show the unique mechanic and controls of the newly built Half Life 2 Real Time Strategy, using nothing but in-editor, scripts, and some unique re-usage of Source SDK features. Using debug-mode to activate a pseudo-code and some commands via config files to manipulate NPC control, I was able to create a new mechanic and game-mode without having to modify the game in an extreme way.
Design Goals:
- Create introductory gameplay that paces the player into the new RTS mechanics, gameplay and controls.
- Create a sense of purpose within the level through gameplay.
- Provide easy encounters for players to master the new concepts.
Objectives:
- Meet up with the rest of your Rebel squad.
- Defeat combine forces attacking your squad members.
- Proceed to and capture the Combine Helipad.
- Make your way to the sewers into the inner city.
Level 2 - Capture the Supply Base
The last level of this three part "campaign" finally takes all the mechanics and gameplay elements introduced, and uses it fully to create an interesting and fun experience. The player controls several squads as they push to re-take a Combine Supply base at the heart of City 17, and climaxing in a cinematic battle with a tough Combine Gunship.
Design Goals:
Objectives:
The last level of this three part "campaign" finally takes all the mechanics and gameplay elements introduced, and uses it fully to create an interesting and fun experience. The player controls several squads as they push to re-take a Combine Supply base at the heart of City 17, and climaxing in a cinematic battle with a tough Combine Gunship.
Design Goals:
- Create a full-fledged RTS experience within the HL2 campaign and universe.
- Implement radically different gameplay that is easy to play and learn, while creating more diversity within a campaign.
- Organize script features in a manner where it is easy to be re-created by other Designers.
Objectives:
- Defeat a group of forward defenders.
- Capture the Lookout Post.
- Capture the Supply Base.
- Defend Supply Base from several waves of Combine.
- Survive against Gunship until Helicopter reinforcement arrives.

Design Goal: I wanted to push the player straight into the combat, because I wasn't afraid of the learning curve due to the previous levels. A bit way the cover is implemented forces the players to choose to slowly advance along the left or right, with a lot of open space for players to rush, but risk losing more soldiers.

Design Goal: Acting as the climax of the level, the last objective involves the player activating turrets to fight off a Combine Gunship. I wanted it to be challenging, but also "cinematic" as they get to command but also watch the crazy fight. It ultimately ends with a helicopter coming in and finishing off the enemy, to provide an explosive end to the level.