PRODUCTION
From 2017 to 2019, transitioning toward full-time Technical Artist at Naughty Dog, we had
the opportunity to make some impactful changes, particularly with tools. Leading the charge, we built
a suite that boosted workflow by more than four times the amount it took to get a
final result. One key highlight was creating a myriad of post-processing with just a dropdown menu,
generating dynamic time of day, snow, rain, and fog within seconds. Hundreds of post controls adjusted
to just a few clicks, automatically making it quick and easy to create a baseline for shippable
levels.
Most of The Last of Us: Part 2 took place in Seattle—a city infamous for rain and overcast.
This meant fewer chances to vary lighting and VFX conditions compared to past projects. But it also
gave us an opportunity to explore many ways cloudy weather could be expressed—half-sunny, fully fogged,
semi-rainy, and so on. It reminded us of that scene from Forrest Gump, during his time in
Vietnam, where Forrest described all the different ways it rained:
"...big ol' fat rain, little bitty stingin' rain, sideways rain, and sometimes even rain that seems
to come up from underneath," he mused.
Our career came full circle when we faced the same challenge back during
Tomb Raider: Underworld's Mexico level.
Various art directors would recommend opening a hole in the sky to create an atmospheric "shoebox,"
in order to deal with the flatness and lack of direction with overcast, which became a
default response to any lighting that didn't work, often excused, and felt
like a cheat that missed potential for something greater. Lighting-wise, this was a puzzle we
wanted to solve for nearly a decade.
Surprisingly, our solution turned out simple: treat overcast the same way you would night
levels. Learning from
Nightfire on World at War, we
compensated for the lack of sunlight with strong reflections, wet materials, mud-puddles, thick fog,
heavy steam, and accents from fires as well as electric sources. As we mentioned with Nightfire,
hollywood directors would often request drenching wet entire sets in order to get greater bounce,
brightness, and depth, water hoses spraying whenever they filmed at night. They also added background fog
and heavy smoke, which combined, worked wonders, and became a staple of iconic cinematography. It's the same
with cloudy levels! In our case, even if none of these were available, we still used cool or warm
directional light paired with an overcast skybox, shaded darker on one side, bright on the other,
to suggest the presence of sun hidden behind clouds, as a foundation for tonal depth.
It’s ironic—what we thought was boring, as well as flat, ended up being most interesting and
offered the widest depth as well as greatest variety. Materials played a major role in this, which is why a
lot of credit went to Naughty Dog's shading team for pushing the envelope; proper
blackbody
and physical based values along with bright accent colors, made everything pop. Overcast gave
us an excuse to play with contrast, push saturation, and build atmosphere, producing layers of mood
that could shift from ominous to peaceful with just a handful of gestures in ways other lighting
conditions couldn’t.
TOOL STORY
Overall
While we can’t showcase all the tools developed for The Last of Us: Part 2, we can give an idea of
how they worked. Below are examples of some in action and how they were
utilized. Post-processing in games can be incredibly complex, hundreds of variables are
needed to get the perfect look. For lighting artists, this process can take days or even weeks.
Which is why we were inspired to shift our focus toward building ones that could streamline the process
and reduce time needed to set up each level. Our lighting preset tool nicknamed "LUI" became a real
game-changer. As we continued striving, making every step as concise as possible, we counted each and
found ways to eliminate until they boiled down to a single button. By integrating post-processing,
weather systems, and dynamic time-of-day features, we managed to cut development hours by more than 80%.
The system was so efficient that it automated lighting to just a few clicks.
It also supported various display modes for debugging and helped with connecting the PlayStation to
the game editor. It was a dream come true.
But quickly, we realized one critical issue. It would require growing support as engine tech kept evolving
and doing so during production. This ended up becoming our greatest challenge.
Preset System
To make it work, we had a basic premise: send one command to the console which updates a single
variable, then retrieve it and print results on screen. If this could be done once, it would
lead to thousands of commands in fractions of seconds. Using Python, we built a system that would
automate “get” and “set” requests for every post-process attribute. This allowed us to generate a
user interface displaying available stats and their data types (like bool, float, int, etc.), and
then save these combinations into a JSON dictionary. In other words, we scripted a way to auto-generate a
UI by reading all the available commands for the game and give each a control to visually change it.
From another perspective, this opened up a new idea. One, you would get simple, text-based tech working
on its own first. Just having that accomplished was more than enough. Once completed, then you could
create an interface and connect buttons, dials, sliders, and knobs for each command. The front end
would be one thing, the back end another, and if anything was broken or users complained, we
could always enable or disable whatever was needed without affecting anything else, thus maintaining
performance as a whole.
Once a desired look was achieved, we could save it as a preset, cycle through hundreds of values in
seconds, and iterate. Thanks to Graphics Engineer Artem Kovlovs, we integrated a system that communicated directly
with the PlayStation, letting us retrieve and send post-process data seamlessly.
As a bonus, we wrote a script in the game’s editor to update objects like the sun, so it matched
direction set in the console and do the same with blockers, bounce, as well as runtime lights. In other words,
whatever a lighting artist did in the game's editor, the Playstation would update, making our process
instant! Since the game would sync with its level editor we could forward results in a bake, ensuring
everything aligned perfectly with just a click, thus hours of work, accomplished in minutes.
Oddly, we learned the hard way how often we ended up spending time on UI, more than half, because of feedback.
While the good news was that it gave us power to add neat things like mouse-hover instructions to
explain how things worked, it also opened another can of worms: feature requests. Luckily
most updates worked well across the board and we were able to keep up with user demand...for a while.
Film Presets
One fun anecdote of our tool system was the ability to study films like The Road, Black Hawk Down,
and Saving Private Ryan, being able to proxy their looks in the game, and have them as
presets. It wasn't just a time-saver but really fun to explore different ideas and looks in a
short time. The possibilities were endless.
We also created samples of different presents for glows, vignettes, exposure, and apertures.
It was neat to get camera settings and things like shutter speed, ISO, and f-stop into account,
though there wasn't time to make it accurate. It was more about getting the feel of how cameras
reacted in a given situation. Nonetheless, all of these, including rain and
fog presets, proved helpful and fun. We were also proud of the time of day and
hourly presets that could quickly change a scene to day, night,
or evening, sunny or overcast, in one stroke.
Glow Presets
Vignette Presets
Exposure & Aperture Presets
But Then...
As we made significant progress, new features kept coming online from the engineering team. This meant
work took longer than usual to update, adding intricacy to the pipeline. As tools were being
refined, technology bloated, resulting in a stalemate, as massive updates continued to pile. What
used to be simple grew increasingly complex. As a result, programmers began approaching us for
assistance in ways to simplify bloating lists of parameters, to make them more accessible and
artist-friendly. It became a difficult but necessary responsibility, and with every success, our
workload grew; for each update that made things easier, new features emerged that made it harder—a
constant balancing act that felt like a never-ending technological whack-a-mole, and time was
running out. In the end, we got as far as we could, getting the job done wherever possible, but it
was clear as deadlines approached, our days were numbered, and we needed to make an important
decision.
Sadly, before we left, we didn't get to finish LUI. It worked well up to Beta but needed
more time to become a final product. Still, it was production-worthy, which is why there's little
regret other than wishing for more time. An emergency came up that required us to refactor entire
parts of our pipeline that otherwise would've made life for the lighting team impossible and put
our department in jeopardy. We had to choose between a massive, boring, but important update or let
it go and make the fun tool we loved. With limited time remaining, we chose the former over latter. While
no regrets, we do lament it took up all our remaining time at the Kennel
and couldn't finish what we started. Nonetheless, it worked well enough to get the job done and we
were proud of our achievement.
It was a shame to take a sabbatical in 2019, but we felt it was time. Naughty Dog was our home for six
years. We loved it, yet at the same time, Lost Legacy burnt us out and we needed a break.
Also, we felt a calling to work on our own projects and see what we could do with the knowledge we
gained. While we miss the team and wished we could've been there to help finish the game,
taking a furlough was the right decision, yet parting ways was bittersweet sorrow.
It wasn’t until months after, we developed a better approach for prioritizing and
managing tasks. To be fair, wearing artist
and tech hats were a blessing and curse. But looking back, we wouldn’t have it any other way.
For more, check out the original Last of Us, Uncharted 4, Lost Legacy, and our
tools galleries.