Game-ready character advice

Hi. I’ve made this a few months ago to study some things and picked it up again to try rigging. Found a few problems along the way so, before starting a new full character, I’d like to have some fresh perspective on this one.

I realize that “game-readiness” depends on particular technical limitations of the target game which I didn’t have. So I set the polycount limit to roughly 20k (a little below UT3 and other action games of its time) and 1k/2k maps. Something for a hero/companion character that player can see and interact with up close. At least that was my thinking.

~19k tris, 17 maps, 75 deform bones, a few random shapekeys (corrective + expressions).
Diffuse:


Wire:

EEVEE:

Am I doing something horribly wrong and where to go from here if I ever want to maybe start a portfolio(?) Haha, but that’s not very “focused” (but I still would like to know), so here’s a few less abstract questions that come to mind:

  • Naturally, topology. Already made some notes but what can I improve?
  • Hair alone takes almost 4.3k out of 19k tris. Are other dense parts (face and hands) oversimplified by comparison? Is density too inconsistent? Is it even a sensible question?
  • Materials drive me crazy the most. Substance Painter, EEVEE and Sketchfab give roughly the same “washed-out” look to my fabrics, so I’m guessing it’s something about PBR materials I’m not understanding. Diffuse colors look way deeper. Or is it fine and I can’t see it anymore?
  • Maps. I don’t really see a way around it though. I have total 17: 11 big ones (head + body + hair), 3 small (eyeball, iris and fake AO), and 3 more for miscellaneous tiled textures (shoelace and bracelet) I didn’t know how to approach. I think it’s fine but is it?
  • Also, hair again: it’s alpha-hashed/dithered. Looks fine in static shots with EEVEE. Not entirely sure how it’s done in game engines though. Should I aim for clipped instead?

Any critique is welcome.
Or at least point me somewhere where it would be more appropriate to ask questions like these.

Thanks.

6 Likes

Why does it have so many bones? Can you show the rig? For a game model the rig should be kept simple. Topology looks good.

I was following some tuts on rigs, so it may have a few extra bones it doesn’t really need.
Normally I’d simplify thigh and shin bones, probably get rid of those 4 palm bones. That should bring it down to 63.

The rig looks good. The 70 count sounded a bit high too me. But I can see this is the rigify default rig. I am used to a different rig. so never mind, The rig is nice. You might have a look at unity mecanim rig tough. Unity rig would be a good target. I think rigify has a to mecanim option?

I’ve looked into it. Not entirely sure what the use cases for it beyond retargeting pre-existing animations. I haven’t used rigify [successfully] yet, but rigify-to-mecanim instructions I’ve found mention getting rid of twist bones and pretty much anything fancy. No eyes, no hair… what if a character has bouncy objects on them? Don’t quite understand how these things are handled. Are they defined separately somehow? “Generic” seems a way to go :thinking:

Generic is what I would use myself. Specifically so I can have twist bones for the arms. And I like having the option of animating the cloths and hair. I was under the impression that unity would not accept a human model unless it was mecanim. But I could be wrong about that. Mecanim is recommended by unity. It makes the human models ‘reusable’. They then can have their animation packs.

I tried looking to see if unreal does something similar. I could not find information on it. The unreal store would be better. They said unity is better for mobile games. Maybe that has something to do with the mecanim.

1 Like

Just a few thoughts:

  • Blender is a static renderer, but game engines must render the model more than 60 times per second, take that into account
  • too many textures, you should have like 1 per mesh and type (diffuse, normal map etc)
  • hair should be simplified a bit, usually just a few low-res meshes with alpha blending textures (like grass) should be enough, but that’s your call
  • too many bones, for example I see 2 bones for the thigh instead of 1 etc, this may not mean much in Blender, but it will require extra computing in a game engine
  • there should be some level-of-detail versions for each mesh (simplified low-res meshes for far view, the engine will load them if the model is too far to save computing and rendering time)
1 Like

Well, it definitely has a “generic” option for rigs. I quickly imported an fbx with baked walk cycle. There’s some research to be done about proper model export from Blender, but animations seem to work just fine.

Ah yes, this one is confusing me still. When I started getting into 3d, I’ve looked at some “real” game models.
Unreal Tournament 3 guys have separate sets of textures for head and body (Diffuse, Spec, Normal and occasional Emission), so that seems pretty reasonable minimum. Half-Life 2 and Left 4 Dead have sets for head and body, but also separate maps for eyes and teeth. And I think something for AO in the eyes as well. Plus wrinkle maps for heads in L4D and TF2 at least. What about games that have clothes and hair customization?

I don’t think I can pack UVs much more tightly and that’s not even particularly complex character design.
What can I do without drastically loosing quality? Well aside from removing those 3 tiled maps for miscellaneous objects… that still leaves 14.

Yes, those extras in legs and palms won’t be in the next model. Leftovers after rig tutorials. I’m keeping wrist and shoulder twist bones though.

Considering hair mesh simplification I don’t know where to begin… Examples that I saw (on Polycount wiki for example) seemed pretty complex. And those were mostly straight hair. I could’ve probably optimized polycount by a few hundreds without changing much, but that seems like a drop in an ocean.
Also isn’t alpha blending practically guaranteed to cause sorting problems?

If you can add as many textures as you want, like various cloth materials etc, but the number of active textures that will be used at one time to render should not be too large.
You could look at existing assets (description and package content) to see what kind of files are included, here’s a few examples:

As for hair, it’s mostly done with an animated low-res mesh or from shader, not with real strands like in Blender, check this:

https://docs.unity3d.com/Packages/[email protected]/manual/hair-shader.html

But probably the best way is to join an indie game-dev team and experience requirements first hand. Unless you join a bunch of pricks that don’t know what they are doing, I’m sure your nice skills will be greatly appreciated!

1 Like

True. I wish there were conclusive answers to how large is “too large” =) Too much conflicting information. Unless guidelines are too fuzzy and it is strictly “case-by-case” thing.
But you’re right, I should research more “real-life” examples.

Well… yes. That’s pretty much what I did. Only with handy curve modifier. The cards are just longer and more curly (hence 4k polycount and transparency issue).

Here’s what I ended up with in Sketchfab. Textures can be viewed if that helps:

3 Likes

Dithering is pretty much standard way of doing hair, even if it has artifacts in motion. I’d just recommend testing the hair early in the engine as at least from my experience Unreals dithering isn’t exactly matching Blenders dithering opacity.

I wouldn’t worry about the current number of textures. Modern AAA games tend to use a huge number textures. Looking at Drakes texture from Uncharted 4 for example there’s over 200 separate textures that include base texture sets per clothing object and tiling detail textures over it with extra textures for masks and dynamic wrinkle maps.

There’s potential to optimize the hair a bit having a longer cap or more helmet style layer underneath it, so it doesn’t need that much individual cards just for covering, but it looks fine to me either way. I don’t think there’s a way to do longer card based hair without getting into relatively high polycounts. In addition you can decimate the parts of hair that you know will be mostly static.

Some general feedback: I was actually suprised to see that it’s using PBR textures as there isn’t that much material separation with the exception of metallics. Same with normals. The lighting isn’t really picking up wrinkles in clothing that are visible in diffuse maps. The whole model has a diffuse only handpainted look. What’s the workflow you use for texturing?

1 Like

Yes, that what worries me about the textures. TBH, I still don’t have a stable workflow as I try to make sense of it. That time I used Substance Painter for the first time, though I don’t think it really matters here.

Baked Normal, AO and Curvature maps from hi-poly. Used AO as a start point for the diffuse. Feels like it dominates over the normal map and gives the whole thing that hand-painted look. Especially with highlighted folds. Blended in some tiled textures for fabrics.
The Normal is there, but as soon as I add color and detail it… turns into this. Flat. Not really contributing anything of value (except maybe for metallic parts).
I’m kinda lost here: am I using the map wrong or my hi-poly was not defined enough…?


Now boot wrinkles really are hand-painted, so no normal info there (last minute improvising).

2 Likes

I coudn’t find exact style match, but it does look like the wrinkles are too soft in the high poly or just not matching with the impression diffuse gives.

https://www.artstation.com/artwork/D5KJeA

I find some intensities hard to judge in painter viewport, but it shouldn’t differ that much. Some stylized things use pretty heavily beveled soft edges that give highlights more room to show up, I’m not sure how that would help in this case.

1 Like

Looking at it now I think I must have fell into perception trap at the time. That moment in 2d when you have to flip canvas to see how out of proportion everything got… kind of the same thing. Turns out this hi-poly is practically flat! Compared to what I had in mind that is.
So without realizing it I over-exaggerated diffuse to try and get back to the desired look.
Ugh, I feel stupid now :sweat_smile:

Going to make sure hi-poly works before plunging headfirst into baking this time -__-
Not placing wrinkles where fabric usually stretches should be a good idea too.

1 Like