Discover Uncharted 4's Environment Art Workflow

Posted June 8th, 2016 by Jim Thacker — Category: Tools & Techniques — 0 Comments

Uncharted 4: A Thief's End images courtesy of Naughty Dog.

Uncharted 4: A Thief's End images courtesy of Naughty Dog.

Environment artist Martin Teichmann reveals Naughty Dog's workflow on Uncharted 4 and provides his tips for creating better game environments

Environment artist Martin Teichmann began his career at Germany's Deck13 Interactive, creating assets for fantasy RPG Venetica, before moving first to Crytek to work on the Crysis games, and then to Rocksteady Studios for Batman: Arkham Knight. Last year, he moved to Naughty Dog to work on its hit PlayStation 4 action adventure, Uncharted 4: A Thief's End – an experience he recalled during Gnomon's artist panel on 3D Environment Art for Video Games last week.

In a fascinating 30-minute talk, Martin outlined Naughty Dog's environment art workflow, from early concept sketches through to the initial block mesh, asset building, level refinement, detailing and optimization. He also discussed the challenges Uncharted 4's game mechanics presented to Naughty Dog's artists, and provided his tips on how to add detail to a game environment, balancing visual quality and playability.

You can watch the complete recording of Martin's talk on Gnomon's Livestream channel, but below, we've provided a condensed transcript of the highlights.

Some of Naughty Dog concept artist Aaron Limonick's early designs for the level.

Workflow: concept design

In all the Uncharted games, you have to discover a lost city at some point. In Uncharted 4, it comes fairly late in the game. It's supposed to be a pirate utopia.

When we started work, we had a couple of concepts from Aaron Limonick, who was doing amazing paintings to discover the look of the level. The image above shows the iterations you have to go through to nail the look you're going for.

Naughty Dog game designer Junki Saita's early block mesh for the level.

Workflow: the block mesh

Once we'd designed the look we were going for, level design created a block mesh. As you can see, it's already really detailed; it shows you all the buildings and areas in the level. This is where I jump in as a modeler and start my work.

Before: A screenshot of part of the level before refinement work.

Workflow: overpainting and refinement

At this point, we needed to develop the look and style of the level further. I'd send screenshots of my work in progress to the concept team and they would do an overpaint, outlining materials and colors and adding more detail.

During: The same screenshot with Aaron Limonick's overpaint.

I think this overpaint by Aaron is awesome. For a long time, I had it as my desktop background so I could get it in my brain. There's a lot of nice foliage; and some nice materials to break up the buildings. Then we just had to make those assets.

After: The finished level, with new 3D assets replicating the overpaint.

Here's the final shot. Ana Cho was my texturing artist on this level and did a lot of awesome work on the materials.

That's a quick overview of the workflow: I'd get the block mesh, start modeling, get feedback, iterate on it, improve things and add more detail.

Blue lines show horizontal lines that had to be preserved for gameplay reasons; red lines show horizontals and verticals that have been tilted to break up the level visually.

Challenges: preserving the game mechanics

Now I want to go into more detail about the challenges I encountered. Making a level look pretty is one aspect of what an artist needs to do, but there are a lot of others.

Above, you can see a screenshot of the final level. This part of the city is a poor area, and half of it is falling down the cliffs. But the block mesh was perfectly straight, so I wanted to break that up. The problem was that all the gameplay mechanics – all of the jumping, and ledge grabs, and cover – still needed to work.

In the center part of the level, I kept the buildings pretty straight, and just tried to move elements like the two prominent buildings in the background. I tilted them and let them run against each other: just enough to look interesting, but not so far that the gameplay wouldn't work. The center building is the only one in the area that I moved, but because it's pretty prominent, you get the most out of it. The result looks pretty organic, although most of the buildings are unchanged.

The collision mesh: the simplified version of the geometry the game engine 'sees'.

Challenges: preserving the collision mesh

Another thing to deal with when you're an environment modeler is the collision mesh. The geometry shown above is what the game engine sees. It's hidden in-game, so the player won't see it, but all of the gameplay mechanics are based on it.

At Naughty Dog we have one build which is live all the time, so when I submit updated artwork into Perforce, our version-control system, it's live for everyone in the company. If I submit a new building and the collision mesh is missing, the player falls through the level, so I get a call from the design team!

A view of the environment inside Naughty Dog's in-house level editor.

Even though as an environment artist, I do almost everything in Maya, we do have a level editor in which we can fine-tune gameplay elements like edge grabs and cover elements. Design works mainly in the level editor. It's way faster than editing the collision mesh. But once they lock something down, no more changes can be made, so it's a tool for the very end of development; for the polishing phase.

Another overpaint, focused on improving the readability of the level. Accessible floors are tinted green.

Challenges: preserving readability

Another big challenge was the readability of the level. This overpaint improves both visual quality and readability. As you can see on the left, we were trying to desaturate this area – this is the poor part of town, so it wasn't meant to be fancy – but we'd gone a bit far at this point. We came up with the solution of tinting all the accessible floors green, while the blue frames show windows you can jump through.

The edges in the level with which the player can interact. Each one had to be highlighted visually.

Challenges: highlighting gameplay elements

Another big part of readability is to make sure all the gameplay elements read as gameplay elements. Here, I've highlighted all of the handholds in this level. All of them needed to be clearly visible: it's a combat area, so you need to be able to react quickly all the time. You should never die because you don't know where to go, or because you try to jump onto something you can't.

Pale highlights along the rim of each ledge show the player that they can interact with the object.

We had a gameplay rule that every handhold had to have a edge highlight so you can tell that it is climbable. We had a standard white highlight colour. But in this level, the wood was dark, so it came out almost cartoony-looking. We had to go through quite a few iterations to get it looking good, but still easy to read.

Vegetation placed along this roof beam indicates that the area is not climbable.

But that's only half of it. Every horizontal line might look like an edge grab, including the beams separating the different floors of the houses. Rather than remove them, I chose to cover them with vegetation. At first, I thought it might look weird, but it ended up looking pretty nice, with ivy growing on top of man-made structures.

Balancing pockets of detail like the objects under the stairs with emptier spaces helps balance the level.

Tips: selective detailing

Because gameplay areas had to be kept clear, I tried hard to find other parts of the level where I could add detail. In the image above, the area underneath the stairs has no gameplay purpose, but it created a space I could fill with objects. It's a nice synergy: rather than cluttering everything, you have little pockets of detail, then other patches where the eye can rest; where you can read the gameplay clearly.

Converting the back of this area from a solid wall to a wooden lattice helps add visual depth.

Tips: opening the background

In this area, in the original block mesh, the back was basically just a wall, so I took the chance to open it up and create an extra basement room. You can't access it – it's blocked with wooden beams – but it adds a lot of detail, and creates visual depth.

To improve performance, planes were added beneath roofs in this area, hiding objects below from the renderer.

Workflow: optimization

The last stage is optimization. The problem with this level is that you can see the entire thing right from the start, so there's a lot of stuff to render. But because it's a combat area, you want it to be really smooth. You don't want to frustrate the player by not having a solid 30fps.

We have a visibility system that hides elements that aren't visible from the renderer, but it works per-object, not per-pixel, so if a single pixel of a crate is visible, the entire crate will be rendered. Because the level is so open, with all the windows and broken walls, I added solid planes at some points so you can't see through them. I had to sacrifice a bit of visual quality, but it was quite a big improvement in performance.

I also had to disable real-time shadow casting on most of the foliage. Because we use lightmaps, the plants still have a grounding in the level, so it still works pretty well.


Being a games modeler involves working with a lot of departments: concept art, design, texturing, lighting, visual effects and programming. When you're an artist, you really just want to make things pretty, but there are some aspects you have to sacrifice for the sake of gameplay and performance.

But when you have limitations, use them as strengths. The vegetation I placed along the roof beams of the houses to indicate that they aren't climbable is a good example of a change that improves the visual quality of the environment – even though at first it was just a limitation I had to deal with.

Read More

Watch the complete recording of Martin Teichmann's Gnomon talk
Discover how Gnomon alumni helped create Uncharted 4
Read Naughty Dog's tips for landing a job at a AAA game developer
Browse Gnomon's training courses in games tools and techniques

About Gnomon

Founded in 1997, Gnomon has trained thousands of students and professionals for careers in the entertainment industry.Find out more