A collection of 3D first person levels made in Unreal Engine 5 to explore designing levels under different constraints.
Made in Unreal Engine 5.
I started this project in January 2024 as a level designer. The constraints I designed these levels under were: 3D first person. One level was to get familiar with the Unreal 5 engine, one was an interior level that had to smoothly connect to two other levels, another was to learn open world design.
Some of my contributions include:
gathering reference material to create a moodboard of the level
drawing level layouts to fit within the constraints for each level
creating a blockout of the level using the level layout as a guide in engine
playtested to further iterate on the level
doing a final art pass to complete the level
I start off each level with a level flow where I plan out the different areas, traversal paths, and lines of sight that the player will encounter in the level.
I keep constraints such as the available character abilities in mind when designing the level flow, as well as the general idea of the time and place of the level.
From the level flow, I move on to draft up a rough sketch of the level layout on paper, being sure to mark out each point of interest, change in elevation, and region.
Afterwards, I gather reference material (with credit) to get a better visual idea of what the final level might end up looking like.
Finally, I take all my design materials and start to implement them in engine by making a blockout.
This is the level design pipeline that I have practiced and honed throughout working on this collection of levels.
"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!
Shade Shift is a 2D platformer where each level consists of two shades of maps--both are necessary to complete each level, but only one can be visible at a time. Shift between the two in a test of dexterity and wit!
Made in Unity engine.
Shade Shift started development in Summer 2022, and while currently released, has plans for more levels. Originally a 2 person project, it expanded to 4. I joined the project later in its development mainly as a designer while also contributing to programming.
Some of my contributions include:
quickly familiarizing myself with the game's mechanics and experience goals as a later addition to the team
discovering a bug, and then turning it into a feature
designing a level, from paper prototype to greybox to final iteration
playtested extensively, both internally and getting external playtesters to help identify issues and bugs
When creating a level for Shade Shift, I had to keep in mind both Intellectual difficulty and Dexterity difficulty. In other words, I can make the level difficult to figure out how to complete (intellectual difficulty) and/or difficult to execute (dexterity difficulty). A good level gives the player multiple spots throughout the level where they can stop, shift safely, and plan how to get through the next section while also making it not a walk in the park to maneuver through. Once I sketched out my level on paper, I took it to implementing in the Unity engine so I could run internal and external playtests to polish and refine the level.
Super Soul Angel is a 3D third person action shooter for PC where you play as an Angel sent on a mission to retrieve a certain Soul from Hell. Shoot demons, grapple to avoid them, proceed to the next level.
Made in Unity Engine.
Super Soul Angel started development in January 2022 and ended in May 2022 with a team of only two members. I worked closely with a partner as mainly the sole artist and narrative designer, while also contributing to design and programming.
Some of my contributions include:
prototyped grappling hook mechanic
came up with narrative lore that helped serve one of the core experience pillars--absurdism and the mundane
created all enemies, from concept art to final 3D models
designed and programmed enemy behaviours
Across the Gate is a competitive, strategic tile-based board game where you're on a race to be the first to find 3 items and bring them to the gate tile. Features a unique "vision" mechanic where players can only "see" in a 1-tile radius around their player avatar, leaving items, curses, and blessings hidden across the board.
Made in Tabletop Simulator. Available on The Game Crafter.
Across the Gate was initially one mini-game from a separate game I designed earlier in Fall 2020 that I decided to expand on. I brought on 3 other members to help with design and art in October 2020 and we shipped the game in December 2020 on The Game Crafter. My role on the team was as the project lead and lead designer.
Some of my contributions include:
designing the base "vision"-tile-flipping mechanic that defines the game and gameplay
re-contexualizing the original game's experience goals and player experience to allow the game to be a stand-alone, one-off game
constantly playtesting and iterating to balance the game based on player feedback
take the game from a Steam workshop for Tabletop Simulator and publishing it to The Game Crafter as a physical game available for purchase, keeping within the allotted budget