Development Info

Genre: Side-Scroller

Engine: Hammer Editor/Source (Half-Life 2: Episode 2)

Development Time: 80 man-hours

Level Highlights

Rollermine: The player controls a rollermine with unique mechanics

2.5D Environment: A side-scroller built in a 3D engine

Design Goals

Unique Gameplay Variant: "Sideroller" is a unique take on Half-Life 2: Episode 2, using a new player character and original gameplay scripting.

Challenging Scripting: The level was designed from the start as a scripting challenge.

Experimental Environment: The environment (especially lighting) for "Sideroller" is purposely minimalistic and tailored to evoke a calming mood.

Level Summary

"Sideroller" is a 2.5D side-scroller built for Half-Life 2:Episode 2 in the Hammer editor. The player controls a renegade rollermine in an attempt to escape captivity in the Citadel. It features uniquely scripted gameplay: the sparking, malfunctioning rollermine can hover around obstacles such as bumpers and use a slam attack to send enemy turrets and personnel flying into the deadly lasers that ring the rooms.

At A Glance

  • The player can hover with left-click and slam down with right-click, creating knockback
  • The player has 15 HP, losing 1 every time the rollermine hits a laser
  • 6 linear challenge rooms
  • Bumpers will bounce the player into danger
  • Turrets activate on a 3-second timer and will shoot the rollermine, pushing it around
  • The SMGer patrols and will shoot the player
  • The Shotgunner is stationary and will blast the player into bumpers and lasers

Overview Maps:

  • Sideroller | Room 01 | Tutorial Room (Basic Movement)
  • Sideroller | Room 02 | Tutorial Room (Hovering)
  • Sideroller | Room 03 | Tutorial Room (Slam Attack)
  • Sideroller | Room 04
  • Sideroller | Room 05
  • Sideroller | Room 06

Sideroller: Image Walkthrough

  • The level begins with a one-sentence story introduction and then displays the basic movement controls. The first room is very simple and forces the player to use the flight mechanic to overcome its obstacle.
  • The second room begins with brief text to explain that hitting lasers will damage the player. It also introduces the bumpers, the second stationary obstacle. Hitting a bumper will send the player bouncing, so they are best avoided.
  • The third room introduces the Slam Attack mechanic. By holding the Right Mouse Button, the rollermine will rocket downward and push enemies horizontally. Room 03 begins with a very favorable turret encounter to demonstrate the usefulness of the Slam Attack. The player can Slam down the first drop to shoot the turret into the nearby lasers, destroying it.
  • Room 03 introduces one of three enemy types: the turrets. Turrets are on a three-second looping timer. They remain active for three seconds, during which time they will fire at the player, pushing the rollermine into obstacles, then deactivate for three seconds. This is to stop turrets from pushing the player around infinitely, and provides a weakness to exploit.
  • The fourth room is a test of the player's flight mechanic mastery. With skillful clicks, the rollermine can hover directly in between the lasers and the bumpers, or hop from gap to gap.
  • The fifth room introduces the second of three enemy types: the SMGer. This guard patrols a short path back and forth and will push the player with a stream of SMG bullets once it spots the rollermine. On the lower floor, the player can hide behind cover to properly time an attack on the two turrets guarding the exit.
  • The final room introduces a variant of the guard in the previous room. This one uses a shotgun, one blast of which sends the player careening into the field of bumpers. This room requires quick and careful navigation to pass.

Level Highlight: Rollermine Scripting

In "Sideroller," the player controls a rollermine through six rooms of a side-scrolling adventure, completely overwriting the standard Half-Life 2 first-person control scheme.

  • The character is controlled by phys_thrusters attached to a disabled npc_rollermine. Pressing 'A' or 'D' activates thrusters pushing the rollermine left or right respectively, and holding left-click activates a thruster with upward force that causes the rollermine to fly for as long as the button is held.

  • To create an attack for the rollermine, I tied right-click to a much stronger downward thruster that sends the character slamming toward the ground.

  • Right-click also activates trigger_push boxes on two sides of the rollermine that push enemies away from the mine. Together, these right-click functions create an attack with a downward slam and 'shockwave'. Pressing any movement or attack key also sets off spark effects tied to the corresponding thruster or trigger_push.

  • All input is handled through a game_ui object activated at the start of the level. The game_ui freezes the player and hides Gordon's weapon, then catches certain player inputs and sends the proper actions to the respective objects.
  • The rollermine and its attached objects: npc_rollermine, phys_thrusters, trigger_push boxes, and env_sparks.
  • The object properties for the npc_rollermine, phys_thrusters, and trigger_push boxes.
  • The game_ui object properties. These reroute player input to activate the thrusters, push boxes, and spark effects.

Level Highlight: 2.5D Environment

"Sideroller" is a side-scroller built in a 3D engine, essentially making it 2.5D.

  • The level is built in slices framed by invisible blocking volumes to stop the rollermine and enemies from falling out.

  • The player begins outside the level, but the standard first-person view is immediately set to an external camera pointing at the face of the first room.

  • A series of trigger volumes at the exit of each room switch between cameras in addition to teleporting the rollermine from room to room.

Scripting: Turrets, Lasers, and Bumpers

Some scripting was involved to create the behavior for turrets, and the effects of the lasers and bumpers.

  • Turrets use an ai_relationship entity to enable them to attack the player.

  • Since turrets operate on 3-second on/off intervals, each has a logic_timer that turns them on or off every three seconds.

  • Lasers use several components: trigger_multiple boxes, explosion entities, an ambient_generic sound, and env_beams to create the particle effect between two objects.

  • The trigger_multiples fire the explosions (push force but no direct damage), decrement the player's HP counter, and create damage effects (red flash and spark) on the rollermine.

  • Bumpers consist of static entities surrounded by trigger boxes which cause force-only explosions within them to fire.
  • The turret functionality consists of several components: an ai_relationship to force them to attack the rollermine, a filter_class, and a logic_timer to determine its on/off cycle.
  • Object properties for the turrets' logic_timer and filter_class.
  • Each laser consists of a blocking volume, a trigger box, a sound effect, a beam particle effect, and one or more explosion entities.
  • The object properties for a laser's ambient sound effect, beam particle, explosion, and trigger_multiple box. The beam particle dialog specifies two entities between which to stretch, in addition to the width and type of beam. The trigger_multiple fires several effects: it decrements the player's HP, creates a spark and red flash effect on the rollermine, and activates the explosion entities to bounce the rollermine away.
  • A cross-section of a bumper. Each bumper consists of a static entity, an explosion, and the trigger box that fires the explosion. Explosions deal no damage but provide force.

Sideroller: Full Playthrough