I’m on a boat
Overview: I’m on a boat!, a single player level for Half Life 2: Episode 2, requires the player to manage their oxygen resource while fighting their way off a sinking ship, infested with Zombies and Headcrabs. The player must make a decision on holding their oxygen tank for more oxygen or wielding a weapon to defend themselves, both cannot be done at the same time. The sinking ship provides a dynamic water environment as water levels change causing physics objects to respond appropriately. The oxygen bottle can also act as an explosive allowing the player to destroy a wall or blow enemies away, similar to the final scene in Jaws.
Design Goals
- Underwater Combat
- New Mechanic Oxygen Bottle
- Thematic sinking ship
Development Time: 4 weeks (12 hours a week)
New Mechanic: Oxygen Bottle
By picking up the oxygen bottle, Gordon is provided with an unlimited oxygen supply. The bottle does not allow Gordon to interact with anything underwater or use any weapons while holding the bottle. This provides a great opportunity for player choice: hold on to the bottle and have air OR drop the bottle and deal with a zombie.
Zombies litter the flooded ship providing intense underwater sequences where the player must juggle their health, enemies, and oxygen supply.
The final sequence in the game provides a platforming sequence akin to a Mario game. The player navigates on top of containers in a flipped cargo room. A moving platform with a poison zombie makes the player move quickly to either take him out or dodge his attacks while jumping across containers.
The oxygen bottle has one extra mechanic, when it takes damage, it explodes. After the boat flips upside down, the player must detonate the bottle underwater to create access to a sealed control booth. The life saving bottle that the player brought with them across the level now must be sacrificed for the player to continue on. More bottles are scattered about this room, if the player fails to successfully punch a hole the first time.
WOW moment: Boat flipping sequence
By creating a hallway and making it func_door which rotates, the player is under the illusion that the boat is flipping. Physics objects slosh about the hallway adding to this illusion. My inspirations for this moment was the movie, The Poseidon Adventure and the boat level from the recently released game, Uncharted 3: Drake’s Deception, by Naughty Dog.
After the boat flips, the player enters a container room that has gone to hell with containers thrown about during the boat turning sequence. Air leaks out of the damage containers and act as a guide to the submerged control booth. A zombie lurks where the player must detonate the oxygen bottle.


Scripting the Oxygen Bottle contains 2 trigger volumes and physics explosion and an environment explosion. All are parented to a clipboard as a prop_physics to float correctly. The actual oxygen bottle that is seen in game is parented to the clipboard also. The inner trigger box is the exact range of the player’s reach, so that when the player holds the bottle, the suit is supplied with infinite oxygen, thus allowing the player to swim freely while holding the bottle. The outer trigger box serves as a filter to detect when the bottle is close enough to a destructible item. When the bottle takes damage, both explosions are set off and the triggers are destroyed.






