Jump to content
  • Advertisement
Sign in to follow this  
jay.pis

Character Customization System

This topic is 2555 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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.



Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!