Anti-Gravity is a physics-based puzzle-platformer level for Half-Life 2: Episode Two.

Dr. Kleiner has asked Gordon Freeman to help him with an experiment involving his latest invention, the Anti-Gravity Cube. This cube has the power to ignore motion and gravitational force. Kleiner wants Gordon to put it through a stress test by using it to overcome a series of platforming obstacles. The player has the Super Gravity Gun, the only device strong enough to move the cube. The testing facility the player is in has low gravity, which helps facilitate the platforming obstacles the player must face.


  • Physics-based platformer with low gravity and a platform the player carries with them
  • A cube that is immune to motion. Only the Super Gravity Gun can move it
  • Portal-esque aesthetics with teleporters to help the player if they get stuck
Development Info

  • Half-Life 2: Episode Two
  • Source SDK
  • Individual (140 Hours)
Download Anti-Gravity

Download Anti-Gravity
Work Overview

I created Anti-Gravity in the Hammer Editor, which is powered by the Source engine. For the level, I created a series of platforming puzzles in low gravity that revolve around the Anti-Gravity Cube and Super Gravity Gun. Since, the cube ignores motion, the result is an object that retains its position, even remaining suspended in mid-air, until the player chooses to move it. Thus, the player can use it as a portable platform to overcome my platforming challenges. I also created custom teleporters and teleportation fields that reinforce the puzzles and provide convenience for the player. I drew inspiration from Portal for the level’s premise and its visual theme.

I purposefully didn’t include a map of Anti-Gravity on this page because it would have been difficult to clearly communicate the layout in 2 dimensions. Of course, I could have made a 3D map in something like SketchUp, but I came up with a better solution. The video in the Design Goals section is a full playthrough of my level where I explain all the puzzles and my design intentions behind them. I feel this was a better way of explaining my level instead of a map.

Valve Map File

Design Goals
A unique and simple mechanic

The original idea for my level was totally different from how my level turned out. While I was prototyping out my original idea in the Hammer Editor, I discovered the option to disable motion on func_physbox objects. I found this to be fascinating and realized I could create a much more fun and unique mechanic around this premise. With some custom scripting, I got it so I could move a func_physbox block with the gravity gun, but have it retain its position when left alone. Thus, I had created the Anti-Gravity Cube and decided to build my level around it.

A Portal-inspired Half-Life 2 level

Once I had created the Anti-Gravity Cube, I needed reasons for the player to use it. My original level idea already had Gordon helping out Dr. Kleiner with an experiment, so I decided to have the Anti-Gravity Cube be an invention of Kleiner’s. The idea of cubes, physics-based guns, and scientific experiments got me thinking of Portal and thus I had the backstory for my level. Besides backstory, Portal also inspired Anti-Gravity’s visual theme, a clean and minimalist test facility. Throughout the level, I have Kleiner come in on monitors to address the player, similar to GLaDOS and the cameras in Portal. I even color-coded the teleporters orange and cyan as a reference to Portal’s orange and blue portals.

Teleporters & Teleportation Fields

To provide convenience for the player and prevent them from getting stuck, I created custom teleporters. There are two kinds of teleporters: orange and cyan. The orange teleporters are for the player and cyan is for the Anti-Gravity Cube.

My level has a lot of jumps over large open gaps, so I use the player teleporters to get the player unstuck if they fall. The cube teleporters are mainly for convenience. I placed these throughout the level and the player can simply walk up to one, activate it, and the cube will teleport to it no matter where in the level it is. This is so the player doesn’t have to carry the cube with them all the time. Also, if the player gets the cube stuck somewhere, they can use a teleporter to get it back.

In the early stages of my level, I discovered that players could easily bypass my puzzles because of the Anti-Gravity Cube’s versatility. Thus, I created Teleportation Fields or T-Fields for short. The player can use the cube to climb straight up walls so I placed T-Fields that teleport the cube away if it touches them. The T-Fields transport the cube to a nearby cyan teleporter.

The mechanic and puzzles

I was glad that I changed my level idea. I think what I ended up with was so much more entertaining and interesting. I was able to get my cube mechanic to work exactly the way I wanted and I think the puzzles I designed around it were fun and challenging. Those who playtested my level enjoyed it and said I had a cool and unique mechanic. Like most people, I don’t often come up with ideas that are so simple, yet innovative. I’m very proud of my level and grateful for the accidental discovery I made in the Hammer editor.

Dr. Kleiner’s animations

If I were to go back and polish anything about my level, it would be Dr. Kleiner’s animations. This was my first level in Source so I have no previous experience with animation blending, and it shows. Keen observers can see Kleiner’s animations are a bit robotic and he’s very still and lifeless. He doesn’t feel like the Dr. Kleiner from the game.

Entity-based scripting

Before this level I had only done scripting either in code or in UDK’s visual scripting interface, Kismet. Source engine uses entity-based scripting, which involves objects sending signals to each other based on game events. I found Source’s scripting system to be surprisingly powerful and open-ended. I feel like I can still come up with so many cool level ideas in Source.

Players actually want constraints

Before I put teleportation fields into my level, players could bypass my puzzles if they discovered they could climb up walls with the Anti-Gravity Cube. I thought that if players were clever enough to figure this out, bypassing the puzzle would be a cool reward for them. I was totally wrong. Once player discovered they could bypass most of the puzzles, the level wasn’t fun anymore. I discovered that I had to introduce constraints in order to make the puzzles mandatory and challenging. The teleportation fields were the constraint and they made my level fun by forcing the player to actually think of the solution instead of skipping past things.