Folks new to the industry might think there are tons of support docs, concept art, inspiration boards, and multi-layered processes supporting development. In many cases there are. But often, small teams work organically and want to work more direct with the medium. So outside of technical specs for source authoring, some abbreviated style guides, and a TON of visual reference designed to be wide-spanning so as to leave room for interpretation, info exists “in the pit”. This is the magic circle of development. This is art and design collocating and working side-by-side. This is blazing content development designed to stand work up FAST and get it in front of the team so we have something to react to that is hands-on.
Here’s a doc I put together to get some folks up to speed on process and vision for a specific project I was on. It covers vision and first-viewable goals and method.
I’ve deleted the project name and other info so ask to mask the project itself. <…> is used in this case. This is all UE3-related info, but most of the principles are universal in all it’s awesome chaotic glory.
Incorporate examples of the Style Guide into the levels. Most notably:
- Value over color
- Expression over realism
- The color and beauty of the assets themselves
- Expressive character lighting
- Propping flow
- Sense of place
- Particle hypnosis
- Hero focal points for all beats whether object or area dominant.
- Client satisfaction
- Internal satisfaction
- Personal satisfaction – It’s your game, too!
- Establish scale from a vignette. Use the vignette as a pin and marker and grow it.
- Show the gameplay connection. (Environment+Cover.)
- Propagate vignettes and extrapolate.
- Jump from vignette-to-vignette, quickly, to keep it cohesive and in-the-round from a shape language perspective. Don’t be afraid to wander with your art, as wandering covers ground. Be weary of spriraling, which covers no ground.
- Move mass and lay bricks: Copy and then reconfigure. Copy and reconfigure.
- Establish some vignette ideas for later use. Jam it in there. Mash some stuff in. Not everything is placed as single actors. Most of the time it’s moving groups of stuff in. Consider these riffs that work.
- Fill-in-the-blanks in as many ways as possible be it from a propping, atmospheric, spatial, conceptual viewpoint.
- Engage the synergy of your designer. Map-wise, you two are one. If the designer hates it, that’s not good. If the designer loves it, that’s really good. Meaning, share your work.
- Check it in. Take screenshots everyday and put to the Z drive by mapping your screenshot program to Z.
- Once you have enough mass, bring in some atmospheric elements to block the view for memory and art-style reasons. Think of the particles and atmosphere as props in themselves and use them in your workflow after you’ve got enough statics in.
- Atmosphere via fog actors is a bass note. Particles are the mid and higher notes. Fog first. Undertones. Draw with the particles. Color and define the ambient space with the fog actors.
Particles are characters in themselves in this project
- They provide rhythm, movement and strength of drawing.
- They boost the tall-tale memory aspect
- They can stealthily obscure a fast-approaching enemy
- They conceal spaces otherwise occupied by memory-filling content
- They are stylistic and expressive
- They interact with light shafts in this engine like no other
- They are a hit internally and externally as well as externally
- Scale, scale, scale – Put some enemies in your map as Skeletal Meshes. We have a posed-out char map to use for streaming into art maps. Check their texel sizes against your environment texel sizes.
- Level art is first additive, and then subtractive – You never know how much content is enough, but after getting a sense of mass, go one notch higher. And then, start removing and parsing, and organizing, and paring it down by adding the main drawing elements of the particles and take advantage of their occlusion feature. Use them as theatrical backdrops. The individual beat is the main stage. The particles are the back curtain behind the backdrop. In between is a lot of content stood up, ready for pruning… but like a Bonsai not like a cherry picker. Pruning a Bonsai is a process of growth and massing followed by reductive technical and aesthetic pruning techniques. What’s left is what’s necessary. The “one”.
- Use Groups as selection sets to save hours and hours of selecting and hiding.
- Don’t worry about how many submaps are in an art map. The art map is like a whole production studio in itself with various areas for building things, copying from vignettes, etc. We’ll consolidate later, don’t worry.
First Viewable Environment Buildout
All the props are laid out and ready for feedback with these exceptions:
- No grime pass
- No “weeds” pass
- No minutiae
- No decal pass
- No final particles that help to boost the scene – usually this is the mid-space battle haze but also includes polishing the placement and quantity as well as general “read” of the big hero particles that help to define the project.
Stats and Memory Checks
Once you have work checked in, you can immediately start cooking and grabbing stats. Here’s what you need to know for this project’s maps.
<PROJECT> Map Art Budgets
- StaticMeshMemory = 9Mb (Unique+Instance+Decal)
- TexturePoolSize = 130 but I want to increase it for first-viewable to 140.
- Individual Art Sub Map Size: >30Mb
- This size, as seen on disk, contains the meshes, terrain, particles, and all other non-referenced actors, all baked in, including the light and shadow map memory. (a referenced actor would be a material or a texture, for example.)
- LIGHTMAP memory – If you are above 9Mb, you probably need to adjust.
- SHADOWMAP memory – If you are above 2 or 3, you probably need to adjust.
Use the stats viewer to look at stats on the kit. Stats like…
- listtextures (Enter this in the Unreal Console, not the kit’s command prompt itself.)
- stat engine
- stat rendering
- stat levels
- stat fps
- For more stats via commands, search UDN for “Stats” there’s a million commands, all categorized.
Use the Unreal Console to export stats to .CSV format so you can bring it into a spreadsheet program (DevSupport can easily help with this…)
Use the spreadsheet program to parse the stats and gain insight and form strategy as well as make decisions.
First Viewable Lighting
- Environment Lighting
- Time and “tone” (Time of day, plus value read as well as emotional read) are ready for feedback.
- The basic workflow is very easy to establish. After that it’s tweaking variables.
Environment Lighting is the combination of these 8 variables :
- The dominant lighting in the scene
- The height fog or fig actors
- The WorldInfo’s Lightmass Settings in the P map
- The Post Process Volume(s) and their Color Lookup
- The PostProcessChain
- The Tonemapper
- Film Grain
- Spot lighting
Working the first 7 variables at the same time is maddening but necessary because of their influence on one another but here’s my priority:
- Dominant lighting- If it’s an outdoor map, there’s a single entity contributing to the main lighting idea; The DominantDirectionalLight. (The DDL also contains the Light Shaft settings. The scale factor is new for this version of the engine. It defaults to 1.0 but I immediately dropped it down to 0.2. Play with this value as well as the others. For reference, I have a bunch of maps checked into Perforce with different light ideas and different DDL settings.)
- Height Fog – Whether indoor or outdoor, the various fog actor settings color, density, and light brightness settings need to be tuned to create the illuminated atmosphere.
- Post Proc Volume’s LUT – Every map needs one. The workflow is up on UDN and examples are being used in this project already.
- The Post Proc Volume itself – This hosts the values for the map’s bloom, bloom scale, and DOF. See VS 2 for baseline values. Note that you can nest PostProcVolumes and give them priorities and interpolation time values. This is good for iris effects like going from outdoor to indoor and vice versa. Or from going to a gaseous to a non-gaseous area.
- WorldInfo Lightmass Settings – All settings have value, but these are the most often modified ones as they give emphatic results in order of influence.
- Environment Color
- Diffuse Boost
- Emmisive Boost
- Num Bounces (try 4. Maybe the caves only need 4?)
Virtually all other settings can contribute but in a real minor (but not unimportant) way.
- The PostProcessChain – The PostProcChain hosts the tonemapper variables as well as film grain.
- The Tonemapper – The tone mapper has a few toe and heel options that needs to be enabled. We want all the maps to use it. Documentation is up on UDN.
- Film Grain – Controversial or not, we need to look at a really tiny film grain element via the PostProcessChain to help distinguish this project as the tall-tall. It’s an elemental component.
Basic Environment Lighting Workflow:
- The dominant lighting and height fog are stood up simultaneously. An existing (See VS2) LUT is added to a level-enveloping PostProc Volume. At this point, your lighting is fully dynamic. If you are not using a DominantDirectionalLight, use other light types. The goal is to create a baseline lighting design you can observe and react to.
- Lightmass type world and character volumes occupy world and character extents. Geometry must be built upon creating or adjusting.
- World Info Lightmass settings are adjusted
- Bake with Medium quality and observe results. If you are way off, adjust the various settings for the lights, fog, etc.
- Add PostProcChain to the WorldInfo and enable and adjust the tonemapper.
- Bake and adjust all the variables until you are satisfied with a first-pass.
- Once you have a first-pass, you should go right into lightmap memory and quality work.
- You’ve got a decent first-pass lighting in. Before checking in, you want to see how much memory you are using and you want to start conceptualizing a lighting memory design that maintains quality and minimizes memory.
- First and foremost, if anything looks borked and you haven’t modified any settings. Synch the Content Browser and see if the mesh has a second UV channel. Not all the meshes do, If you need to, you can dupe the mesh and create the 2nd UV set in the Content Browser itself using their own internal tools. Just be sure to copy the mesh to <…>_Meshes.upk and use the <…>_ prefix for the new mesh.
- See how much LIGHTMAP memory you used using cooked content and the kit. If you are above 9Mb, you probably need to adjust.
- See how much SHADOWMAP memory you used using cooked content and the kit. If you are above 2 or 3, you probably need to adjust.
- Use the lightmap texel density visualizer in the editor to see what your settings are from a gross perspective. Or, jump right in and start modifying values wholesale. Use the Groups feature as selection sets if that helps things go faster.
- Lightmaps are the biggest contributor to texture memory known to man…ever.
- Add fill lights where needed for drama or to just jam more light in there. Don’t use lightsuckers.
- Run a memory test on kit to examine your lightmap memory.
Address feedback and also…what you really, really, REALLY, want to polish. Share your values and defend your art (!) with the AD and Producer. Your Producer is your ally in helping to really prioritize your work. It’s called the Hot List items.