@Tristan: I studied computergrafics for 5 years. I'm making 3D art now since about half a year fulltime, but I had some experience before that. Its hard to focus on one thing, it took me half a year to understand most of the vegetation creation pipelines. For speeding up your workflow maybe spend a bit time with the megascans library. Making 3D vegetation starts from going outside for photoscanns to profiling your assets. Start with one thing and master this. @Maxime: The difference between my technique and Z-passing on distant objects is quiet the same. (- the higher vertex count) I would start using this at about 10-15m+. In this inner radius you are using (mostly high) cascaded shadows, the less the shader complexety in this areas, the less the shader instructions. When I started this project, the polycount was a bit to high. Now I found the best balance between a "lowpoly" mesh and the less possible overdraw. The conclusion of this technique is easily using a slightly higher vertex count on the mesh for reducing the quad overdraw and shader complexity. In matters visual quality a "high poly" plant will allways look better than a blade of grass on a plane.
Is this not like gear VR or anything else
Level Designer Emilia Schatz outlined the core principles, which help to make your environments playable and understandable to the player. Emilia will be covering most of these topics in her Level Design course at CG Master Academy. You can get more details on the official website.
Hi, my name is Emilia Schatz and I’m a lead game designer at Naughty Dog. Some of the games I’ve worked on are Uncharted 3 and 4, The Last of Us, and currently The Last of Us Part 2. My main responsibility is in level design and layout, creating rough blockout geometry to define the shape of our spaces. After handing that off to environment artists, I work with them to make sure the design intention of the level is maintained throughout production. A big part of that is getting our final art to be as readable to the player as the original blockmesh. Achieving that requires both the artist and I to cooperate closely in what we want so the player will understand what they can do with the environment we create. We need to be deliberate and consistent in how our shape language implies the possibility of gameplay. In this article, I will detail a bit of how we do that.
The Problem In Achieving Realism
We’ve come a long way from board games and the early days of video games. When creating pixel art in 8-16 colors, there was little room to create anything but what is absolutely necessary to play the game. Form and function could hardly stray from one another. In fact, function often dictated form, a limitation leading to many examples of bizarrely endearing characters and game worlds. Today however, given the amount of technical rendering power and capability at our disposal, it’s very easy to stray from the purpose of a game level environment and just get lost in the artistry of creating breathtaking virtual spaces.
Look at any environment in the real world and try to tabulate all the things that you are able to do and affect in it. You’ll very quickly be overwhelmed by the possibilities. In the following photo of a library scene, the options are near endless. I could read every book, burn them in a pile, organize them, tear each page out and attempt to eat them. Or maybe I’d spin the globe, push over the statue, finger-paint a mural across the floor. These possibilities of action are called affordances, a term coined by perceptual psychologist James J. Gibson in his 1977 article, “The Theory of Affordances”. The characteristics of an object afford certain means of action upon it, based upon the rules of our physical reality.
In modern games, we create detailed environments that emulate and expand on the appearance of real-world examples. The more life-like a space appears to be, the more we begin to expect it to allow for the affordances we have in real life. But games only enable players the actions developers explicitly allow for and implement. Unfortunately, that aspect of game development doesn’t scale with computing power in the way art has. And when a player’s desire to act is unsupported, we have a break in immersion – all our effort to create a realistic space that looks real is undone by the fact that it does not feel real to interact with.
Much of this is mitigated by the standard conventions of games – a player doesn’t expect to be able to read every page of every book or eat everything that looks like food – most games don’t allow these actions, so players are not surprised by those limitations.
But imagine you are making a game where the player lacks the ability to climb ladders. A ladder is a strong indicator of utility. If you put a ladder in your level, a player very likely will at some point try to use it. Not only have most of your players used ladders in other games, but they have most likely used one themselves in real life. A ladder communicates the value and utility of the space at the bottom and the top of the ladder – why would it exist if there wasn’t value to being in both spaces and traversing between? When the player attempts to use your ladder and nothing happens, they’ll begin to view the rest of your game with a degree of skepticism.
Imagine another game where the player is allowed to climb ladders, but in one particular environment, you include an unusable ladder because it just seems contextually appropriate. Now the player finds they can’t trust the game’s world because rules are arbitrary. They’re reminded their experience is artificial and that “it’s just a game” after all. These moments of immersion breakage happen many times in even the best games we play. They don’t generally “ruin” player experiences, but we can certainly aspire to better. A polished, well-designed environment can be beautiful and evocative, as well as readable and continually immersive.
Creating an Environmental Language
The shape and structure in a well-designed level is a subtle means of communicating with the player, inspiring them to use the actions we’ve provided for them to overcome obstacles intuitively. In order to do this well, we need to develop a clear and consistent shape language, describing the gameplay mechanic affordance of the world.
There are a number of different ways the player can interpret affordance from game objects. Explicit affordances are those pointed out to the player in a break from realism, such as an ammo pickup that glows, a UI button prompt on a switch, or the “Throw-rope” icon for grapple points in Uncharted 4. Defined affordances are when the game goes to length to associate arbitrary visuals with in-game mechanics, like making all climbable handholds painted yellow. Cultural affordances are those we recognize from our real world or other game experience: a ladder, an unlit torch, a padlock, a valve on a pipe. And finally, Inferred affordances are those players can deduct based on their knowledge of the game’s rules and systems. Explicit and Defined messaging break immersion and so should be considered a fallback plan. It’s the latter two, cultural and inferred, that are of most concern to environmental designers.
Catalog Your Mechanics
So that we understand the types of affordances we’re trying to match, we catalog the mechanics at the player’s disposal that can interact with the environment. In Uncharted 4, the beginning of a list might include:
For each of these, we need defined environmental messaging. Let’s tackle the first mechanic. For moving, we ask, “What surface affords walk/run?”, and the answer is a relatively even, cleared, and hardened surface, length and width both greater than 1.0m, incline less than 30 degrees. That’s simple enough to start, but now we need to ask, “What surfaces clearly do not afford walk/run?” The counter-question is just as important, because all objects in the game need to belong to either the walk/run or no-walk/no-run categories. For each gameplay mechanic, we need to define how objects provide that affordance and how they can actively deny it. There cannot be any middle ground. The player must understand the difference at a glance, even in a high pressure scenario.
Buffer Your Metrics
To avoid characteristics that fall into a grey area between providing and denying affordance, we define buffer zones. In Uncharted, Nathan Drake can jump up to a ledge that is at 3.5m or less above him. Because of that, we defined a “dead zone” between 3.25m and 4m, a rule we enforced making sure no climbable edge falls into the unreadable middle area. We created a buffer for inclined surfaces too – all “walkable” surfaces are less than a 35 degree grade. So we enforced a rule of no surfaces between 30 and 45. Low cover height is another rule. Nathan Drake takes low cover on 0.9m – 1.25m tall rectilinear objects. So nothing like that was allowed 0.5m above or below that range, as you can see in the following diagram. The player should never have to guess where the game will allow them to snap into cover. Consistent shape language communicates that clearly.
Buffer Your Placement
When an object needs to stand out, to contrast with the affordance-denying background, it needs a border zone around it. Clear out anything intersecting or close by that the player might confuse with your messaging. In Uncharted, climbing handhold affordance is a tricky thing to read, so we really tried to avoid using any non-climbable strong horizontal line elements anywhere near the play space. But when in close proximity to actual climbable ledges, even minor horizontal lines in rock textures tend to cause confusion in players. I can recall many instances during U4’s development where we drove texture artists crazy by insisting they remove tiny cracks and ripples in natural rock walls because it made nearby climbing handholds more difficult to read.
In the following image from Uncharted 4, the object that affords climbing up is highlighted by making it the only rectangular shape in close vicinity. It’s surrounded by pointed, diagonal shapes. Another part of this is preserving the silhouette – the more you obscure the outer boundaries of an object’s shape, the harder it is to recognize for what it is.
Leverage Primitive Shapes
People have on a really basic level, certain underlying emotional associations with circles, squares, and triangles, and it seems to be pretty consistent across cultures. Round shapes evoke safety and well-being. They’re viewed as non-threatening due to their lack of points and edges. They blend in and disappear, lacking affordance. Rectangular shapes on the other hand are solid, stationary, and powerful. They evoke a feeling of strength, either as an obstacle to overcome, or something to be reliably used. Rectangular shapes are strong indicators of affordance. Finally, diagonal and pointy shapes evoke a sense of danger and imbalance. They have the effect of negating affordance.
This is not to say that round and pointy shapes should always be avoided when trying to indicate affordance. But if you feel your visual language is not reading as clearly as you had hoped, adjusting your primitive shapes may be one way to help your scene.
Use Cultural Affordances When Possible
Sometimes cultural affordance messaging can do some of the work when simple shape language fails. Stairways and ladders communicate the existence of vertically leading paths. Doorways invite players to move through them. Gasoline cans and unlit torches invite fire. In Uncharted 4, rope grapple points were wrapped with dangling ropes (the movement helps draw the eye), inviting players to attach their own ropes. In the interest of full disclosure, eventually we found they still didn’t read well enough in combat, so we ended up explicitly calling out the affordance with a HUD icon.
In “broken ruins” environment types (of which Uncharted has a lot) you can get away with stretching the believability of why a staircase or doorway exists in an otherwise natural environment. In fact, any environment with a long and varied history of human residence tends to have unexplainable architecture, which is a real bonus for games, both in terms of environmental storytelling and in affordances. Stone mortar blocks of cover stand out nicely when contrasted with the natural layout of a jungle.
Don’t Tease the Player
Sometimes when you’re overly familiar with the mechanics in your game (like when working on the 4th game in a series, for example), you might create a situation that painfully highlights the limited nature of your gameplay compared with real life. Imagine the player’s goal is on the other side of a door. You want them to see what’s on the other side, so you make some holes in the door and the wall. Now you have a very flimsy-looking barrier that, if this were real life, the rocket launcher the player is packing would make short work of it. Will any frustrated players waste precious ammo trying?
Unfortunately, developers simply can’t account and develop for all possible actions of the player. So as environment designers, we need to make sure whenever we deny affordances, we do so in a way that is believable not only for game mechanics, but also the real world. Remember the old cartoon gag where a character is in jail, behind widely-spaced bars they could easily squeeze through? We don’t want the game equivalent.
Deny Unwanted Affordances
Sometimes a bigger part of the job of making your environment readable is figuring out how to deny affordances to those shapes that are not meant to be “actionable”. That way the shapes you actually want the player to pay attention to stand out even more. The first steps for this are doing the opposite of making affordances read: use rounder or more diagonal shapes and stay clear of metric buffers. Reduce the contrast of the object versus the surrounding scene. Run interference by covering the object’s edges with other shapes to erase the object’s silhouette. Change intuitive characteristics – if players keep wanting to climb a wall, make the edge jagged or cover any obvious hand placements with small shrubbery. Player wants to jump through a window? Divide the opening with slats and put in shards of broken glass around the edges.
Be Your Own Playtester
Eventually you’re going to want to have others play your level – it’s amazing what others will see (or not see) when they’re not in-the-know like you are. But each time you play it yourself, try as best you can to put yourself in that mindset. Meander around, try to poke in every corner, ignore the gameplay goal, play it “wrong”, try to go where you’re not supposed to. Keep an eye out for shapes that interact strangely with your player mechanics, or don’t properly communicate their affordances. Examples I often see are:
ropes/cables: are they taut enough to be solid collision, can the player hop over them, what happens when a player lands on one from above? Is there varied affordance along the length?
“hard” foliage: bushes with solid collision – do the the visuals properly deny the affordance of moving through them? Make sure they’re not anywhere the player can land on, jump into, or stand on
Arbitrarily non-walkable flat surfaces and platforms: why can’t the player stand/walk there? Would you be able to do it in real life?
It’s hard to be comprehensive in studying this topic. Different environments in different games vary so much, there are simply no hard and fast rules that work every time. To get it right, it will take playtesting, experimentation, iteration, and good judgement. But I hope that at least with some of my suggestions, you’ll feel better equipped to face the problems of readability in your environments.
All of these topics and more will be covered in the Level Design course at CG Master Academy. Visit the course website for more details, and send all registration inquiries to email@example.com.