"Run Me Up" is a custom level made for Half-Life 2 in Hammer focusing on vertical ascension.
Made in Hammer editor.
"Run Me Up" started development in Fall 2025 and finished by the end of the 2025. As the sole dev on the level, I was the main level designer and level artist.
Some of my contributions include:
quickly familiarizing myself with the Hammer editor
writing a detailed level design document to guide me through development
creating level layout maps to fit my vision for the level
creating a blockout of the level using the level layout as a guide in editor
playtested to further iterate on the level
doing a final art pass to complete the level
My favorite part of Half-Life 2 were the outdoor parkour areas in Ravenholm so I wanted to create my own version of that. The theme of my level is "vertical ascending" and "sawblades." The player fights their way through two zombie-infested apartment buildings to reach the rooftop. This is so they can call Alyx for help after crashing their car while driving through Ravenholm. To do that, the player uses their gravity gun, pistol, and shotgun to defeat zombies and shoot sawblades to create special platforms to jump on top of when there is no other way up. Because Half-Life 2 is a linear game, this level is very linear--the player has only one path forward, and it takes them up.
I used Adobe Illustrator to make the level layout map for my level.
When translating anything from map to actually in engine, there are always challenges. This is because when making a map, there are no limits because it's translating from imagination to pen and paper. This means it's easy to design too big or too small for the actual level. The only way to really see what a level will look like is to get it in engine as fast as possible, which is what I always strive to do. The 2D map is helpful in knowing where I want puzzles or combat to be placed throughout and the overall flow, but building it in engine is the best way to get a sense of scale, difficulty, and whether the level actually is good or not. From there, it's all playtesting and iterating to get my level to be as good as it possible can.
What Went Well
I was able to design a linear level that flowed well as the player progressed vertically through. I achieved this by giving the player only one path forward so they wouldn’t get lost. I used both indoor and outdoor sections so that the player wouldn’t be in one area for too long and give it a nice sense of progression. This included indoor and outdoor stairs, and indoor and outdoor sawblade platforming. This met my design goal of always climbing up while including outdoor parkouring.
What Went Wrong
I realized that I tend to design very large spaces. When replacing blocks with real assets like furniture, the rooms that once felt like a good size felt way too big. I had to shrink rooms by blocking off sections and making new walls to make them feel appropriately sized, which ate up time during the Aesthetics milestone so I had less time to make my level look pretty.
Another issue I ran into was that the combat felt one note. The level focuses on sawblade platforming so I wanted to include sawblades everywhere to nail in the theme of the level. The combat sections were designed to provide half and full cover that allow for circular flow or gameplay. The half cover would prevent the zombies from getting to the player but not stop the headcrabs from jumping at them. However, even with the introduction of the poison zombie in the second and third combat encounters, nothing felt particularly special about the combat. Food for thought.
Lessons for Next Time
I realized aesthetics take a long time to make everything look good. Even if I made a smaller level, there's a lot that goes into making a level look pretty other than just swapping out textures. Small things like the set-dressing of a space, making it look lived in or at the very least full of enough stuff to not be empty, and filling in the outdoor areas to make the level look like it's a part of the world and not an isolated space. Next time, I would allow myself enough time to set-dress my level because aesthetics do matter!
Another lesson is I need to be aware of how big everything is before starting to build in-engine (aka metrics). It saves me headaches later because I know how big the player and props are when building the level so things will be appropriately sized from the get-go.
One final thing is I would lean into different types of cover (half, full) for the player and explore different types of combat, not just what I’m familiar with (circular flow). This allows for the player to explore different types of combat gameplay while playing through my level.
Now that that's all said and done, time to take these lessons and apply them to my next project!