
Stardust Studios
Reel Run
Reel Run is an Unreal Engine game about traveling through three different films. The first film is the western film, with the other being themed around the horror and romance genres. The player must battle through these films in order to escape them, and only once the boss of each level is defeated can they move on to the next film.
Lead Designer & Lighting Artist, August 2024 - Present
Team size of 12 people
Western Level
The western level is one of the many films contained within Reel Run. The player fights through a saloon, a train, and then a cave in an attempt to subdue a group of bandits caught stealing. All three of these levels utilize baked global illumination through GPU lightmass in Unreal Engine, with extensive use of stationary and static lights to further illuminate and provide context to scenes. The lightmaps have been heavily optimized, with very little room for error due to the post processing effects, like cross-hatching, cel shading, and an outline shader taking up a significant amount of the performance budget. The aim was to make the level feel like an old western film, with desaturated colors and paper-like effects on screen.
Saloon Lighting
This scene is the start of the western level, in which the player fights through hordes of bandits. It’s a small space, lit with the idea to add visual interest to an otherwise uninteresting area. The player’s eyes are drawn toward the bottles on the bar, which are throwable and can stun enemies. They are also drawn to the bright areas of the floor, where most of the combat takes place.
The lightmap for this scene consists of only a few, very optimized lights that have little to no overlap with each other.
Train Lighting
After the saloon, the player chases the bandits to the train, where the lighting streams in from windows and illuminates a tight corridor of combat space.
The lightmap for this scene is nearly entirely illuminated with the directional light. Rect lights are placed outside windows to add more depth to the scene, and small lanterns are placed with point lights to help guide the player to the next car.
Cave Lighting
The player chases the final bandit to the cave, where they fight their first boss. This level was a particular challenge to light, as there was little illumination from the directional light to begin with. There are small lanterns placed around the floor to add small pieces of illumination, but the main idea was to add two spotlights shining on the primary combat space to further illuminate the space.
This lightmap was one of the more challenging to optimize. It still contains unoptimized portions, however a significant portion of the level is highly optimized.
Horror Level
The horror film was the second level developed in Reel Run. I was the primary level designer behind this level, as well as the primary lighting artist. The player’s goal is to fight through a campground and eliminate all of the campers. This level was particularly challenging to develop, as it’s an open world full of foliage, fog, and VFX. Optimization was very difficult; this was the first level to receive a baked lightmap, and it was also the first level to receive intense foliage and lighting optimization. The level also needed a lot of help in terms of pathing; players were consistently getting lost, so several changes to the layout and lighting were all made to better facilitate player pathfinding through the level.
Mess Hall Lighting
This scene is the start of the horror level, in which the player fights through a series of campers who were in the middle of their lunch. It’s a large room, with red light to guide the player to enemy spawns. The theme of the level is blue, so the general lighting is blue with red as the accent to lead the player to enemies.
The lights in this portion of the level all move dynamically; they sway slightly, and the attenuation radii, while large, are all small enough to prevent severe performance drops. The scene runs extremely well.
Theatre Lighting
After the mess hall, the player then navigates to the theatre. A red spotlight lights up once the player reaches the path, indicating for them to head in that direction. The theatre is highlighted with red lights to indicate that enemies are nearby, and the hanging lights on the path circle it to encapsulate the critical path.
The lightmap for this scene is very well optimized, and is in fact the highest performing part of Reel Run outside of the second level of the romance film. Even with high-fidelity volumetric fog and ray tracing, the horror level runs at 60 FPS on an RTX 2080, which was our benchmark computer.
Outdoor Lighting
In the rest of the horror level, small camps can be spotted with enemies grouped around them. The hanging lights guide the player through these sections, with wind blowing through them and illuminating the path forward.
The lightmap was incredibly difficult to optimize here, as the hanging lights were all procedurally generated with a sine function and two point lights. The lights are set static and fully baked, with the emissive meshes providing most of the movable wind. The FPS has a slight drop here, but is otherwise still incredibly optimized.
Romance Level
The last level developed for Reel Run was a level based on a telenovela romance film. This was a particular challenge to light, as I was not the primary level designer for this series of levels. This gave me new insight on working with levels that I had not designed. I did not fully understand the creative vision for this level, so I had to find concrete references and present my ideas for these levels to the level designer, and only after that could I start lighting the level. The lightmaps are incredibly optimized here, as this was the final series of levels after nearly a year of development.
Boat Lighting
This level is the start of the romance film. It has a total of 29 static lights, with only one stationary light: the directional light. The lighting bake was incredibly difficult; this is the exact type of scene that benefits immensely from realtime global illumination bouncing to illuminate areas, so a high quality bake with very specific settings was key to get the right lighting in this scene.
The lightmap for this scene consists of only a few, very optimized lights that have little to no overlap with each other. This scene runs slightly better than the horror level’s 60 FPS benchmark.
Dining Room Lighting
After the boat, the player goes below deck into the dining room. The lighting here consists of a few movable candle lights on the destructible tables, with the wall lights being stationary. The hanging lights from the ceiling went through a few iterations, but eventually ended up with one singular rect light covering the ceiling of the level.
The lightmap for this scene has few overlapping lights, and with baked lighting, FPS concerns all but disappear.
Club Lighting
The player finishes the romance film with an adventure into the club, in which they fight the boss of the film. All of the emissive lights on the walls and ceilings use a similar strategy to the dining room, with one rect light covering the level. The difference is that these are baked, where the previous level had them as realtime stationary lights.
The lightmap is quite optimized, which was a point of concern for a club filled with lights in every corner. After several attempts of optimization, this is the final result.
Project Takeaways
Reel Run taught me a lot about lighting in ways that really expanded my knowledge of the practice. Just putting lights in a scene will tank performance before long, and using new features like lumen in Unreal Engine 5 look good, but oftentimes lead to bad performance and graphical artifacts behind the scenes. I utilized cutting edge features of Unreal Engine for this project, and I learned a lot about how the technology works and how it impacts performance. I can make a scene look amazing, but if it doesn’t perform well, then there really isn’t any point in it. I learned that performance is key, and can exist in tandem with visuals, but the road to get there can be very long and bumpy.