Have you ever noticed how much better Guild Wars 2, The Last of Us, and Assassin’s Creed look compared to World of Warcraft? It’s because the artists at Blizzard are lazy! They could have updated all of the old character models by now if they just put in a little bit of effort. I also think we should have advanced character customization similar to Saints Row or Mass Effect. Also, all of the current armor looks terrible, so they should spend a few minutes fixing that, too.
Are you cringing yet? If I were reading that paragraph in a comment, I would be.
Updating the old character models is a monumental task. Last time, I covered the basics of what a model is. Today, I’m going to be telling you about the things Blizzard does that makes a model update more complicated than most players think.
Whenever a discussion about character models comes up on the official forums or even in the comments on a fan site, someone will mention the new troll models that Blizzard added in patch 5.2. They’ll say something to the effect of, “The Zandalari models are a preview of what we’ll be getting when Blizzard finishes the model update.” They’re so sure that what they see is what they’ll get.
And they couldn’t be more wrong.
A favorite they like to cite is High Priestess Mar’li, because she looks so much better than the current Troll female model. Here’s what the current Troll female texture looks like:
Now, here’s what High Priestess Mar’li’s texture sheet looks like:
They look nothing like one another! Mar’li—all of the Zandalari, actually—have texture maps that are laid out in islands like this. Every player race uses an unwrapped texture like the one you saw above. Yes, even the Pandaren.
Let’s talk about how your player goes from nude to fully armored. Here’s a breakdown of the texture sheet using a naked Forsaken male:
There are many slots available. These are 256 pixels wide and usually 128 pixels tall. You’ll notice that there is a ‘torso (upper)’ and ‘torso (lower)’. Combined, they form the chest. Cloaks use the upper section and don’t touch the lower section, so splitting the two saves on disk space; it’s not a lot of disk space now, but it was in 2002.
There are a few informal slots, as well. The top 32 pixels of the ‘waist’ slot are used by belts, while pants ignore that space entirely. There is also space next to the face that is used for extra textures like tusks, bones, tails, teeth, and eyelids.
When people think about textures and player skins, they think of a single texture. That’s generally how these things work: a model uses one texture file. Armor pieces use one texture file, even if the game uses modular armor systems; you know, the kind of system where you can mix and match fur shoulders, iron gauntlets, and leather boots without putting on a full set of fur, iron, or leather.
That’s not how WoW works. I mean, you can mix and match items, but we’re talking about textures. Each item in WoW has its own texture. Your Tier 16 gloves has its own texture separate from your Tier 16 leggings. This is because WoW uses component textures. The full texture sheet for my priest’s tier 6 looks like this:
All of the armor in WoW looks like this. This isn’t going to change in the future unless Blizzard decides they want to redo every armor set. This is part of what makes me cringe when people demand armor textures be a higher resolution. Unless the texture artists were working at a higher-than-native resolution, they can’t just increase the size. (They could, but the result will look terrible.)
The reason why older armor sets look bad has nothing to do with texture size. It has to do with compression. See, in order to save on bandwidth, disk space, and memory, the textures were compressed. You can see on the chest pieces that there are blobs of one solid color in some areas. The color palette was reduced to save space. Newer armor sets don’t have this problem, so they look crisper. (Ostensibly, the armor sets could be rereleased because hardware has improved a lot in the last decade—it depends on if the source Photoshop file has full color or not.)
Coincidentally, compression is also the reason why older player models look like garbage compared to newer models like Mar’li; she has the same texture size as our characters, but since the image isn’t compressed, it looks better. It’s also why Goblins and Worgen have better-looking textures than older races, even though they use the same setup. In fact, all textures in World of Warcraft are no bigger than 512 pixels wide/tall. I suspect this is a limitation of Blizzard’s proprietary M2 model format, which they’ve been using since Warcraft III: Reign of Chaos shipped in 2002. M3 models, which Blizzard uses for StarCraft II, can have textures that are 1024 pixels wide/tall.
Conversely, the special Death Knight skins look worse than normal skins because those were compressed and reduced in size; Death Knights have a 256 texture that is being scaled up to fit the 512 buffer!
Pandaren look better for another reason, though. Let me know if you can spot it:
Pandaren faces have a separate 512 texture dedicated just to their face, while the body texture remains the same size. This allows Blizzard to reuse all of the current armor set textures. But what I want you to pay attention to is the bottom left corner, which is used for face textures on older races. You can see that there’s a tail, some fur, and the bare toes. Moving the face to a 512 space freed up some texture space to allow for additional model details! You can also see the underside of the sandals in the bottom-right corner of the face space.
All other races have symmetrical faces. In case the full face didn’t give it away already, Pandaren faces are not symmetrical. Just look at the nose and you can see it in the whiskers. This allows Pandaren to have a dark spot around one eye but not the other, or a scar that goes diagonally across the face without forming a V shape. It’s almost not fair.
This is the future of player models: crisper textures, asymmetric facial features, and just more detail everywhere.
You can see that there is some blank space where the fingers and feet would normally be, as well. When this texture is wrapped on the model, you’re not going to see those flat colors. You can thank UV maps for that. You can also thank UV maps for why we can’t have legs underneath our robes: our legs would look the same as our robes! A more important reason we don’t have legs is geosets.
Geosets are sets of geometry. They are what give sleeves a flared cuff, leg plates their bulk, and what gives robes their shape. Every race has a base model of just feet, hands, torso, and the front of the head. Geosets add wrists, the upper back, waist, thighs, shins, and a hairstyle. The wrist is what is replaced when you equip a pair of gloves, though some robes have flared sleeves. The upper back is replaced by surprisingly few cloaks. The waist is replaced by some belts, though those belts look like wrestling belts. Thighs are altered predominantly by plate leggings, though there have been leather leggings that add bulk. Shins are what make a boot floppy or rigid.
A decade ago, Blizzard used many tricks to make a good-looking game that ran on a wide range of hardware. For terrain, they only detailed things that the player could see which left large tracts of flat land between zones; this is why we couldn’t fly in Azeroth until the Cataclysm update. Following that logic, they designed their character models so that we don’t have legs when we’re wearing a robe; we can’t see the legs 99% of the time, so why bother rendering them? (Not to mention the clipping issues if we had floppy boots and bulky leggings!)
There are 32 geosets. These are just the baselines. Every race has to have bulky legplates, for example. Not everyone has 30 hairstyles. So the basics are just things that every race has.
A request I sometimes see is Azshara. More specifically, players want to wear Azshara’s half-gown instead of a full robe. The problem with this request is… well, have a look:
There could be a geoset for a half-gown. The problem is that only one leg is on the texture sheet. The UVs are mirrored, so the gown would look correct on one side, while the should-be-naked leg would have paint on it. It wouldn’t look right. Our characters put their pants on one leg at a time. They have to. And, if you look at the gown itself, you can see the underlying leg clipping through. On Azshara’s model, that portion of the leg was deleted; the same procedure would need to be applied to work with player geosets.
What’s really holding back character customization is this old tech from the early 2000’s. However, BlizzCon starts tomorrow and I’ll be waiting to see what Blizzard’s actual plans are. I’m hoping I’ll get to go over what Blizzard can do to expand the customization options next week. It wouldn’t be customization sliders like Saints Row, but it would be the next best thing. Just don’t get your hopes up.