Skip to content

Characters 2.0 wait 3.0

June 12th, 2016


Time for the next big update!

Character and Animation Revamp

As I mentioned in the last post, I’ve been working on one last big unplanned change: revamping our process for creating characters and animation.

To recap, way back when our campaign ended, we upgraded to using 3D characters in the game. These characters have three main components:

Since we don’t have a big team of artists and animators to churn out variations for all the playable characters, enemies, and NPCs we’ll need, the plan was to create a handful of base meshes and simply re-texture them as needed.

This was limiting for a number of reasons:

  • Not enough variation overall
  • Limited control over individual character shapes and silhouettes
  • Lots of overhead for downstream work like animation
  • Character appearance can’t change dynamically (i.e. equipment changes)
  • Characters look terrible up close!

After stumbling on some amazing new tools, I decided to redo our character creation process to address these issues. The new system allows us to create characters in a modular way that’s more efficient and delivers better results.

Here’s a quick video before I get into details:

Bodies, Faces, and Animation

Now, all characters in the game are created from a single, universal mesh, rig, and animation set. This new base forms the foundation of our entire character creation pipeline:

Universal base mesh & rig

The new system allows us to deform our universal base mesh in-engine by changing a series of variables. The system proportionally scales our character mesh to fit target attributes:

To save time on tasks like level editing and crowd generation, I’ve grouped different body types into easily selectable presets:

Since all characters are derived from a common base, animations can be reused across very different body types with no manual rework:

In addition to body type, facial structure can be edited in engine as well:

Hair was tricky. I experimented with a modular system to generate hair assets, but in the end the best results came from creating them manually, one at a time. Here’s a time-lapse of one of the assets you’ll be seeing lots of in the game:

Making the dozens of hair, facial hair, and even eyebrow variations to cover the game’s population took a while!

Eye and hair color, skin tone, age, and other details can all be adjusted in engine, reducing both manual texturing work and memory overhead:

Together these changes mean we can create an unlimited range of faces and body types with no extra art effort required for individual characters!

Wearable items

With the problem of creating different faces and body types solved, the next issue we need to tackle is wearable items. As mentioned above, previously we were simply re-texturing a handful of generic base meshes to “fake” the appearance of clothing and armor. The new system allows us to use swappable meshes instead, which takes some more work but gives much better results overall:

Getting wearable assets to automatically deform to fit different body types was a challenge, but will be a huge time saver in the long run:

Using swappable meshes frees us up to create characters with much more distinct silhouettes. For example, we can now create items like loose tunics, robes, and dresses without having to multiply the effort required by gender and body type.

More importantly, it means character appearance will update dynamically to reflect gameplay. For example, equipment changes will now be visible.

Additionally, for non-primary characters, faction and level progression will be visible on a surcoat worn over armor, and unit class will be reflected in headgear. Below is an example showing how a unit’s key combat attributes (class, level, faction, weapon and armor) are all made visible on his in game avatar. This will be useful for surveying groups of enemies during battles without having to rely on UI.

The system allows these rules to be overridden where needed. With important characters for example, headgear can be excluded and accessories customized to ensure they maintain a distinct appearance.

Facial Animation

Since our characters stand up better to closer inspection, I’ve implemented a facial animation system. Changing expressions, blinking and eye tracking immediately made characters feel more lifelike in game.

Updating the character management UI

I’ve also been updating the character management UI I shared over a year ago to better showcase the new characters and visible changes based on gameplay progression. Here’s a quick peek at the WIP:

Hopefully you all find this upgrade interesting! Putting finishing touches on these changes took longer than expected, but I think the results are worth it, and we’ll get some of that time back as we use the new process to populate the game world. As I mentioned earlier, this will be the last big detour since we’re well past the point where we can keep adding unplanned features to the project’s scope!

Other Stuff

A lot of other things have been going on between the day to day work.

Whenever possible, I’ve been continuing to do various shows and events. Way back around February, we were selected for the Indie Showcase at MagFest. Since then I’ve been keeping busy showing the game at various events like IndieCade East, Playcrafting, Sheep’s Meow and GDC. For anyone near Philly, I’ll be at Too Many Games toward the end of June- come say hi!

In the last update I shared the vertical slice demo to all of you. The demo had a few hundred downloads and so far the feedback’s all been very positive. I’ll leave it up for another day or two in case anyone who hasn’t had a chance wants to give it a spin.

Between the character work, I’ve been chipping away at playable content. The next alpha build’s been pending for a while now, but I don’t want to waste anyone’s time by releasing something unstable with big changes still happening. Soon!

Lastly, here’s a piece from Aakaash featuring some live trumpet instrumentation:

Thanks as always!

– John

No comments yet

Leave a Reply

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS