AUTONOMOUS Half-Life 2: Episode Two
LEVEL OVERVIEW
Development InfoRole: Sole Developer
Genre: First-Person Shooter Game Mode: Single-Player Mission Engine: Source Development Time: 180 manhours |
Level Features
|
Download Level |
High Concept
Defend a Combine teleporter against six increasingly difficult waves of zombies by utilizing three unique defensive summons.
Design Summary
“Autonomous” is a single player level for Half-Life 2: Episode Two that takes place roughly between events of Episodes 1 and 2. In “Autonomous”, players assume the role of Combine Technician 343, the singular soldier sent in to reactivate an abandoned teleporter in Ravenholm. Unfortunately for 343, the unique energy signature emitted by the teleporter seems to attract every zombie in Ravenholm. Thus, as the teleporter charges up, players must defend it from six waves of zombies. If the teleporter takes too much damage, the player loses the game. However, as 343, players obtain the ability to summon three different types of Combine war machines: manhacks, turrets, and hunters. Players may place these summons wherever they deem fit in order to help them defend the teleporter from the zombies. Each summon costs a different amount of resources to build, and there is a finite amount of resources. So in order to achieve success, players must place their units wisely.
Design Goals
- Create a first-person tower defense level within the Half-Life 2 universe
- Give players the ability to summon three different defensive units (manhacks, turrets, and hunters)
- Create a fully functional resource system for gathering supplies and building units
- Support multiple playstyles and strategies
Level Highlight: Summoning Defensive Units
To help defend the charging teleporter, players possess the ability to summon three different units: manhacks, turrets, and hunters. Each summon offers different advantages and disadvantages (such as cost, build time, and behavior) that players can weigh when building their strategies.
To accomplish this, I created a custom script that utilizes a pre-existing console command originally designed for debugging AI. This command allows designers to create any AI of their choosing wherever their cursor is pointed. In"Autonomous", I took this console command and tied it to three keys in a custom script. Depending on which key is pressed (8, 9, or 0), the script then runs a check on how many resources the player has (discussed more below), and then builds the appropriate unit if all checks are passed.
Because this debug tool allows players to summon units on the fly when utilized in actual gameplay, I was able to design for faster, more intense combat situations.
Because this debug tool allows players to summon units on the fly when utilized in actual gameplay, I was able to design for faster, more intense combat situations.
Level Highlight: Fully Functional Resource System
“Autonomous” features a fully functional resource system that keeps track of how many resources players gather in order to determine if they have enough resources to build the particular unit they so desire. During the "Build Phase" before each wave, a new drop pod lands at a location on the map. Players can gather the new resources and ammo each pod drops in order to refortify their defenses.
Level Challenge
It was a sad day at Hogwarts when I realized that Half-Life 2's editor features no efficient way of capturing and storing variables. This presents a problem when your entire mechanic hinges on your ability to record a constantly changing number like a resource count.
In order to solve this, I created a system of math counters that I set the values of each time the player tries to build a unit. When I need to access a stored "variable" I ask the game to compare the value I'm inputting with the counter I previously set the value of. Depending on if the resource counter is currently greater than or less than the value of the unit players are attempting to build, the game builds the unit or tells the player they don't have enough resources. Effectively the relay of counters I'm setting each time is acting as a saved variable. A really awkward, clunky saved variable.
In order to solve this, I created a system of math counters that I set the values of each time the player tries to build a unit. When I need to access a stored "variable" I ask the game to compare the value I'm inputting with the counter I previously set the value of. Depending on if the resource counter is currently greater than or less than the value of the unit players are attempting to build, the game builds the unit or tells the player they don't have enough resources. Effectively the relay of counters I'm setting each time is acting as a saved variable. A really awkward, clunky saved variable.