Design challenges

One of the biggest challenges I encountered during this project was optimizing the level to even function in the editor.  The entire track is massive, taking up nearly all of the space allowed by SDK, and the track itself is constructed of hollow cylinders and half-cylinders to make rounded edges that allow the player to ride along them like half-pipes, rather than running straight into a vertical wall.  While this made the track more fun, it quickly reached the maximum face limit that the engine could support, breaking the level completely.

The solution to this was to find a good balance of faces that kept the half-pipe curves smooth enough to still feel rounded without overloading the engine.  Another necessary fix was to chop off all BSP faces under the water that the player couldn't see, meaning the water had to be reflective so that the player couldn't see the underwater part of the track.

Lighting caused further issues with the level.  A single ambient light caused the building time to time out due to the massive number of calculations required for lighting each BSP face, causing it to not build and remain flat-lit. Reducing the lightmap resolution on all BSP faces fixed this, but I still had to be very frugal with lighting throughout the project development.

Gameplay highlights

  • Race against two AI boat drivers that shoot at the player and change speed according to the player's position
  • Collect torpedo pickups to fire at opponents, sending them flying and slowing them down
  • Hit boost pads placed around the track to temporarily gain speed
  • Dodge explosive barrels that pop up on the track throughout the race
  • Discover shortcuts hidden along the racetrack to gain the lead

development info

  • Game:  Half Life 2: Episode 2
  • Genre:  Single-Player Racing
  • Development Time:  1.5 months
  • Engine:  SDK

Design goals

  • Re-purpose the Source engine to support gameplay for a racing level

  • Design balanced AI that dynamically interacts with the player

  • Implement features such as torpedoes, boost pads, and shortcuts to add gameplay variety and ways to catch up when behind​

  • Implement features such as an AI targeting/firing system and explosive barrels to create extra challenges for the player and make each lap feel unique

  • Design a track with unique sections to keep things interesting all the way through

  • Create a HUD and mini-map that actively and effectively communicates where the player is relative to opponents, what lap the player is on, and torpedo load status

  • Construct entire map out of modular half-pipe sections to make turns smoother and more fun

overview map

full playthrough

Level summary

"Battleboat Racing" is a boat-racing level designed in Half Life 2 SDK.  The player must complete 3 laps before the two opponent racers to win the race.  To do this, the player can fire torpedoes at opponents by collecting torpedo pickups located throughout the racetrack, hit boost pads to gain temporary speed increases, and discover shortcuts that allow the player to bypass certain sections of the track in less time. However, the AI opponents will also fire at the player, and explosive barrels pop out of the water on to the track to slow the player down, providing additional challenges that the player must overcome to win.