Keeping polycount and texture size low has knock on effects beyond rendering. Loading time is a cut off for sign off on some platforms, so being able to load fast can save your company $$$ in submission bounces.

Patch sizes, install size, deformation, shadows, collision etc
Me personally, I would rather spend all those resources getting smooth rounded silhouettes and putting chunky shit on like belts and details than wasting them on stuff you can't see
Engines typically use UV channel 2 for baked lighting because it needs a non tiled, non overlapping map to bake to. But if your UV channel 1 is laid out like that, you can use that for shadows. Freeing up a uv channel for shader effects
When you intersect polygons masses, the overlapped hidden area still eats up texture space. That space is wasted. Cut in intersections- it bakes better, shadows better, sorts better and saves texture memory
Can you make several things with the same mesh but morphed? If so, you get all the variants in between those morphs. Making a thin sapling, mighty oak and twisted dead tree then recombine those morphs to make a forrest of variations
Likewise, mixing several height maps in a shader then feeding that into displacement can give you huge variations in environment objects from a single mesh, a few maps and master shader.
Substance designer lets you make procedural textures from input textures that generate multiple output maps. So a grayscale image can become normal, bump, spec, diffuse, and emissive (use a clipped version of the top end values). Saving disc/download data.
Need a technical artist make your assets more versatile and efficient? Grab me remote at...

delaneyking.com
A classic mistake I see is people trying to keep game meshes in quads. Quads are important for subdivision, but not in engine. Especially look at flat surfaces. Can you target weld verts and not change the shaded at all? If so, destroy them my robots.
Sky domes don't have to be domes with big textures on. You can break up clouds and distant objects into smaller meshes and combine them in different ways to fill the sky.
I see a lot of skydomes as big balls. Yet you have a horizon with a kill box.

Cut the ball in half.
Check your levels through with collision mesh visible only. You can spot meshes that can have their collision turned off or replaced with a simpler object
Model the big, impressive key features in levels first, these will draw the players eye and so you can skimp on other things to make budget
Can you weld in geo like straps, belts, necklaces etc? This lets you kill geo behind, making less skinned points, store less texture?
When two seperate materials are next to each other along a polygonal cut, (skin and tshirt) the seam can stand out. Up the poly count there, but also you can fake ambient occlusion by using a vertex channel as 0-1 u texture UVS- and use this to multiply a gradient over the edge.
This lets you reuse skin texture, but bend normals and shade around the trims of the clothes.
Uvs and vertex colors are interchangeable. Each channel is just a float value that can be fed into things like masks, uvs, lerps or color channels.
3dsmax has the best vertex color tools, having photoshop like layers, blends tools etc.

Maya is perfunctory at best, Unreal isn't great at all but at least you can paint in engine.

If someone can put the max vertex tools into unreal, I will buy them a drink.
3dsmax is my weapon of choice for procedural mesh generation and deformation because it is stack based, not node based like Maya.

Pipes, armor plates, armor trims, lettering- mechanical stuff... I always switch to max.
Maya's uvmapping tools got a huge upgrade recently and are by far my favorite. Handy things like get and set texel density and rotate shell to edge are *chefs kiss*
3dsmax splines can be turned into uvwrapped mesh tubes in viewport dynamically.

3dsmax pro booleans are brilliant.

The winner for hard surface booleans goes to Modo, however. If I was to make Eldar tech, modo is what I would reach for
Dubious? Watch Tor Frick using it here...

It is called Mesh Fusion, and it works by creating a spline at the intersection that you can select and adjust the bridging poly curvature with.

So good.
But back to 3dsmax stack, you can convert splines to surfaces and use volumes to select features to pass to smooths, deletes and bevels... creating sophisticated geo in no time at all. The splines can then be adjusted to create curvature

Amazingly fast dungeon creation.
If you are upping the whole texture size to get crisp logos, consider breaking off the logo onto its own polygons and either using it as a decal or clip masking this. You should manually lod this as it will usually clip through if autocrunched.
Take a jet fighter. It is basically grey with a bunch of join lines, weathering and little stickers like "no step". The stickers can be seperate decals, the subtle weathering tiled, the join lines are baked in and the general color just a vector 3, blended with the dirt mask
World space mapping is a skill that pays well for environmental stuff. Getting your head around blending UV space and projected space parts together in your shader is a head fuck, but really useful for a ton of effects
Rather than paint in all those little chips along the edge, you can bake an edge mask map(with amb occ), then multiply that by a vertex color channel, then by a variable, then a tiled chip map.

This means you can dial that up to produce a range of damage across surfaces and...
Dynamically change damage in areas based on vertex paint. All with a single channel of your baked texture and a scratch/ chip map set you can resuse across all objects
If anything here has helped you, maybe buy me a coffee at

Ko-fi.com/dellak

I only drink optimised coffee.
Optimisation can start at the concept design stage. Adding a brace or fold can hide a seam where meshes can be switched for variants. Can a skeleton have a few more hidden bones which means anims can be reused for different enemy configurations?
A spider and a scorpion, a scorpion-man, a four legged robot- all can use the same rigs and anims.
But the meshes are skinned to different combinations of bones.
You can design new enemies over old rigs. You can design level component sets to reuse textures and parts. You can create whole scenery sets by rebaking different high res meshes onto the same low res mesh
Attach, weld, average then lock vertex normals at edges where two meshes connect before duplicating and deleting the parts. This ensure the seam is hidden when recombining
Super Mario famously used the cloud sprite colored green as a bush.

This is the sort of mindset you need.

I call it Green Cloud thinking.
On mobile platforms, every little bit you can squeeze out of the data you have is vital.

So make a good round clipping mask, reuse that on coins, plaques on walls, the sun, shields etc. Fit those graphics to your clipping mask.
Do you need an arrow graphic icons for both left and right gui? Can you just seperate off the R and L onto a seperate poly and flip the arrow?
Reuse bullet mesh as tips of your rockets. Reuse those as building domes.
The rock your hero shoots can be the rock she standing on, the gibs when she kills something, the ice chunk from her ice spell.
The bubbles underwater can be a force field, a teleport spiral, a fireball
The bone stairs and the delapedated wood stairs can be the same mesh, just with, different highres bake and seperate rail caps. Heck, it can be same the same blueprint with a toggle.
Sometimes adding MORE polygons is more efficient if it lets you switch out materials or tile textures. It depends on your bottlenecks.
I tend to cut long things like staves and spears up into several divisions so I can pack them into a square texture more efficiently.
Got a big chunk of a texture empty? Paste a reminder into it to pack something into that space. I use bright magenta so I can spot wasted space
If you are in unreal, material functions are a great way to handle using smaller tiled textures in sections. You can make things like cloth, webbing, plastic and metal and apply those to your model in the shader with tuneable variables for tiling
Material instances are a must know for unreal materials if you want to optimise. I often crack open projects to find a material node graph for every object. Yikes.
Material instances use the same node graph but you can change variables and textures to get different looks.
I usually set up a master materials folder that holds my core materials.

I then create instances that point to these.

Using functions and material parameter collections in your master materials lets you tune things globally. Game looking too grungy? Punch in a single value.
Examples? Team colors can reference a parameter collection. Which skins characters use depends on if they are good or evil, these can be set in parameter collections or functions.
Lemme just make the red team and all their scenery a little more cool red... okay, let's make red team use silver and blue team use bronze details.

Boom.

Saves a buttload of work and lets your art director tune.
You should learn how to use construction scripts in Unreal to make variants. You can anchor trappings, switch materials or make instanced materials for individuals with random variables for a one off look.
I like my enemies to all have differences.
Example? Attach horns, tusks or spikes with anchor points. Have them pick a mesh, some damaged, some curly, some chipped, some steel tipped.

A bonus is you can snap them off when you hit a character so hard it punches the highlights out of their hair.
In a material instance you can deform that orcs jaw, throat and brow with vertex displacement- flip textures left to right in the UV, tint their skin, display scars or no scars. Randomise these each time you play.
Combine three mottling maps in various ways, clip the values and mask on two skin tones to give different patterns on your star cows.
Being able to code basic stuff like this empowers your art, lets you do more with less.
Wash your dishes. Seriously.

And clean up your desk.

:p
We talk about optimizing in game meshes, but you can also optimize your hires mesh too. Faster bakes, faster check ins and less disk storage space.
Decimation master in zbrush lets you crunch meshes down dynamically. 2 crunches- one for baking and a lighter one for retopo
You can also duplicate your highres, do a strong z-remesh to one, subdivide it back then project back the original for a tighter fit.
If you have basically mirrored geo, you can delete half the model except for the polys just past the middle. Leave a strip on original model to keep vert normals aligned, but uvmap these off to a corner of your bake.
Deleting a lot of the unused highres is dumping wasted data
Your bake low mesh and your in game mesh do not have to be the same mesh. Delete mirrored and duplicate bits when you bake. Explode bits for cleaner raycasting.

Wear sunscreen
User channels in Substance Painter are seriously useful. A solid example of this os the paragon material system video by unreal which shows it in action.

Remember you can get substance designer to spit out custom map channels too.
Any questions?
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Delaney King 🧟‍♀️✍
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!