Character Customization System

Started by
0 comments, last by Kyall 12 years, 4 months ago
We're developing a virtual lobby prototype where people can log in and chat with other people, something that's very similar to Playstation Home. One feature of the character customization is the ability for people to equip and switch out different equipment on their character. Our models are separated into Hands (bracers), Arms, Head, Torso, Legs, and Feet.

Here's the basic run down of the character customization process:

Race Selection (human, alien, etc.)
Gender Selection
Body Type (morphing feature, hopefully, otherwise pre-set body types/sizes will be used)
Hair Type & Color
Facial/Body features (scars, tattoos, etc.)
Basic clothing selection
Accessories (glasses, bandannas, watches, etc.)
Character Name and other info

From there on after players will load at the starting area and they'll be able to run around and mingle with other people.

What we're trying to do is to be able to have the characters equip many different types of clothing/armor as well as have all character meshes rigged to the same bones so that they can all share the same animations.

Now my question is, what is the best approach in building this type of system?
Advertisement

Now my question is, what is the best approach in building this type of system?


I've worked on a similar thing in the past. We had the following features:
- Different attachments
- Different textures
- Different models even

And the solution that was done as a proto-code, though cheap and easy wasn't very workable as a final solution. I built the proto system as a tree where each branch was an item that could be customised (for example headgear ) and that branch had a description of what it was and then there were leaf nodes describing what could be placed there. And then for customization preset for different characters we created a list of indices to each leaf node for a character to use the character customization system to achieve the customization.

The customization system took a bunch of settings (the index list) and applied itself to a model, we were flat out modifying the model instead of storing information about attachments since the engine worked such, but it meant we were adding attachments and the like in a counter intuitive fashion. So for attachments we enabled/disabled them on an instance, or replaced textures with over ride textures, or dropped the original model and loaded up a new one for the model replacement.

The problem with this implementation however, was generating presets or customized options, the data file that stored the list of all possible options got too long to maintain, to the point we would have to build an editor for the artists to use in order for them to build those presets.

So my recommendations would be:
- Use a database, or use a bunch of files where each file represents a different option to be customized, to make adding/modifying of elements easier
- Use a tool, or come up with some way to generate presets that makes things easy for the artist. For example you might want to use headgear=feathercap rather than option[3]=2.
- Create a structure for your 3D model that lets you override/change things, as customization that holds all of those changes completely internally to itself, it doesn't even have to remember what the selected options are, you can just use it to replace/add materials, or swap out one gauntlet for another. It is a counter intuitive way of doing things, but for ease of programming a highly recommend it, since it reduces the number of sections of code that handle the customization down to 1. And that section will be the customization manager that takes a model and some settings and applies.



I say Code! You say Build! Code! Build! Code! Build! Can I get a woop-woop? Woop! Woop!

This topic is closed to new replies.

Advertisement