Sean Tracey (ST): Hi there everyone. I’m Sean Tracey the Technical Director of Content here at CIG and today we wanted to talk a little bit about character customisation. So to make that happen I have with me Paul Reindell if you want to introduce yourself.
Paul Reindell (PR): I’m Paul Reindell and I’m the Director of Engineering for the Persistent Universe and with me also.
Josh Herman (JH): Yup, I’m Josh Herman, Character Art Director.
ST: Awesome. So to bring online character customisation you need a lot of different departments working together and that’s going to come from design, that’s going to come from art, and that’s going to come absolutely from the engineering side. So the first thing we did want to talk about was exactly what we’re going to do for the next big release that we’ll be giving out to you and then what we’re going to do moving forward and today what we’re going to discuss is what we’ll term customisation. So basically selecting items on your character and being able to customise what you’re wearing, things like armour, things like clothing, things like weapons and basically how we brought that system online.
So maybe to give them a bit of a background over how this system came to light was, at the very base of it, the CryEngine or Lumberyard Engine uses something called character definition files so basically it's really just static geometry. So you’ve got a skeleton of the character and then you’ve got a bunch of geometry attached right? The problem with that is that none of that can change at one time, you can’t switch out those attachments. Changing things like the colour of it or even embedding things like gameplay logic within those pieces of geometry was not possible.
JH: So it sounds like no customisation at all was available.
ST: No customisation was available, it was all very static and it was very pre authored. So it works very good for a game that has maybe upwards of 20 character or so, but a game like Star Citizen which is an MMO, players gonna make their own characters, we’re going to have hundreds and hundreds of different types of NPCs, it’s not going to work very well.
So as the ships we’re being developed and maybe Paul can talk a little bit about this, they had to come up with a system for ship customisation.
PR: Yes we basically had the same issue with ships. The vehicle system in CryEngine comes as predefined ships, predefined weapons. Obviously we want to have like, customisable ships so we built a system called Itemport system which allowed us to build vehicles in a completely modular system where you have your base ship and you can attach turrets or weapons to it and you can basically build your own customized ship out of it and we thought with that system already in place, why don’t we take that and move it over use it for character customisation to actually use the same system and be able to apply like a base character which is basically a naked person and put on different armour pieces, different clothing and even different clothing.
ST: Yeah and one of the tricky parts about that is… With a ship things are very rigid in terms of, you attach this one gun here, there’s no real deformation going on, it doesn’t have to attach in any super special way, it’s like just align it to that helper and you’re pretty much happy, but on the character side it can become a little more difficult because we’re talking about zones within the character and everything on a character deforms, everythings skinned to a scan.
JH: Costumes are going to be all unique. You're going to have jackets that are going to have to fit over different types of things, armours that are going to have to fit over different types of things, Helmets that don’t necessarily fit, shoes that don’t meet the pants. You have all these kinds of problems where when it is a deformable and very unique asset, whereas you’re saying it’s basically a port and an item going into that port for the ship system, it needs to be a little more flexible for the character.
ST: So then what we had to do obviously was change out that default CryEngine or Lumberyard implementation and over the course of many months we’ve been working on this and things have been progressing very well. We basically load a skeleton, that particular skeleton is sitting right there. It can animate and do everything it needs and technically that character is loaded, there’s just no actual geometry that’s showing it.
So in the loadout editor here you can see that I have an item port and it’s called the body item port and this is what supports a bunch of different items. So within the items you can see we’ve got female bodies, we’ve got male bodies. So right now just I’m going to load up one of the male bodies and we’ve got two very different, different ones in terms of their skin tone and before I get too much further, I want to attach a head just to show you how we do do skeleton extensions and that the base skeleton actually gets built up upon. So what I do is the body actually carried a whole bunch of item ports with it by itself, maybe I’ll move these little figures so you can see it. The one I’m really interested in is this head item port. So as soon as I select that head item port it actually tells me what items are valid for that particular port and we set this all up through types and types of rules.
So you can see we have a lot of different character heads and in this case I’m going to select the male tier one, male 09 tier one, which is the one everyone is kind of used to within the PU. We'll have Lee change that around a little bit.
So I’m just going to add some eyes onto him, so he gets a little set of eyes and now let's go ahead and turn off the skeleton debug here.
So here’s our guy. So he’s loaded up and one of the things that we’re working on right before we give you a character creation is this scene between the neck and the body because we have our heads all scanned from actual people and our body itself wasn’t a body scan, this was just modelled by one of our very talented character artists, what we have to do is align those two so that there’s no seeming in there and what can be confusing, but also very powerful within this situation is the dynamic hierarchy that it kind of creates. So we have the skeleton, then we add that naked body on top and then on that naked body there’s a certain number of ports. It’s got clothing ports for t-shirts and whatever else, but it’s also got another port called the armour port.
PR: The way our games designed is we have the undersuit and then on top you can layer different armour plates and so on. That’s also just another item port on top of the undersuit item port, so the undersuit itemport and I can go give him different leg plates, I can really customise my character. Since the art is all set to work with each other, I can now actually even go further and put stuff attachments on my armour so there’s like different item ports for grenades for example. So put a little grenade in here. So here as you can see, this completely allows me to completely customise and randomise my whole player.
ST: Now initially doing this of course, some of the assets weren’t really set up as modular as they could be. So what were some of the challenges that you ran into when we were trying to put all this stuff together all of a sudden.
JH: Sure. Some of the easy ones are, when we start putting it together all types of art, shirts or pants and shoes i the easiest example. So if I have high tops and I have shorts, that’s going to be a very distinct difference between the two, but then if I have pants that are going to go longer, things start colliding and if those things aren’t set up early, basically what we’ve started to create are zones or regions or boundaries depending on what you want to call them to help us make sure that everything is going to line up.
The other thing is maybe say somebody's got a weapon on and then when I take that off, this armour piece off, does the weapon go away or now does it go down a level and does it get to stay there and that’s also a gameplay implementation as well. Should you be able to put armour on or weapon on whatevers underneath that.
So all these kind of things where it’s like, we can add it on there, but also does it look go visually, does it work for the gameplay and then does it also make sense for the tech team to have to do that.
ST: Sure and there’s always a point of contention in there. Who really says where that gun is meant to go because design will say all the time, “Yeah, yeah we want to move it around wherever”, but sometimes they’ll put it up on the shoulder, it just looks ridiculous there or on the back or that doesn’t work with that armour so there’s always an interesting I think, interplay between the art as well as the design needs so there’s constant iteration on this.
PR: It’s also the technical aspect of design and artist they come and it’s like, “Oh we want to have all those different layers”, but then again like now your multiplayer draw calls because you put layer on top of layer and that’s where also this zone system Josh just mentioned like really helped is having defined zones and then layers on top of layers on different zones allowed us to basically take one layer which is underneath and just cut it out on a mesh level so we save all those draw calls which you don’t see anyways and having a defined zone system really helped getting this stuff going.
JH: Yeah exactly. Like the balance between the tech and the art, the art is always going to want to push it and make it this much as possible and design wants to do the same, typically as much as possible as cool as possible and then you run into the performance problem where you’re saying, “Now you’ve added so much stuff that the game can’t run, or this character is 20x more expensive than the basic character” which turns into a problem.
ST: True and it's happened.
JH: It has happened.
ST: Right, right.
JH: With some cool systems like the zone system is that it does actually give us quite a bit of leeway and I’m going to break that down with you guys in a concept, we can break them down pretty easily.
So both of these have a jacket which is this piece right here. Both of these have shirts would be this piece right here and then we have pants, looks like this guy is wearing probably some kind of a glove and both have boots. Now this is all exactly what we talked about right? So this t-shirt, we’ll actually be making t-shirt, if it’s a t-shirt or tank top all the way into this area. Same with this if it’s a long sleeve or whatever it is, we’re building it all the way out. When we put this cardigan on, it’ll actually be culled out all the way over here. So all this will go away which is pretty cool because then we don’t have to worry about it like we said we get performance savings which is really a lot of freedom for the artists which is really cool.
One thing that we were talking about before which is a challenge is pants. The challenge is actually where any two zones are going to meet because that’s where you’re going to have two things colliding right? Now let's say I have a pair of boots like this and I have a pair of short boots or pant shoes like this, and I drag these over and you’ll see that maybe I didn’t change these pants out, what’s actually going to happen is this would all be skin right? The challenge that we have here is that first off, that looks a little weird, and then second, the model that made for these pants is built to look like it’s tucked into boots. So if we have that problem, now this creates a problem where we have a piece of clothing that we’ve created that doesn’t necessarily fit in all of our scenarios and we want to make sure that all of characters are built to be able fit within a system where it’s easily swappable and easily modular and the biggest thing I’m that I’m most excited for this is NPCs
So right now if you look at any of the NPCs you see, they’re all pretty much the same guy unfortunately, but when we get into randomly spawning them we’ll be able to select from certain types of clothes in certain groups and because of all of our assets will be able to blend seamlessly together, we’ll be able to spawn them really quick and really, really easily because they’ll be able to select from anything and all the shoes will work with the pants, all the pants will work with the shoes, all the shirts, all the jackets, etc.
ST: It does sound like a very simple thing that, “Oh okay when I put a t-shirt on we’ll just get rid of that torso”, but we ran into some great edge cases between there and again I think it comes from having assets that were built beforehand that we’re now supporting within a modular system. So I mean there was clever things, sort of like when you’ve got a t-shirt, how much of that body do you want to call and we actually had to separate those zones down and I can’t remember the exact number, but there’s around 20, just over 20 even zones that split up say the upper arm for example because sometimes we have t-shirts like the one I’m wearing here, but sometimes we have ones that go down past the elbow and sometimes we have a full arm shirt so you don’t want to keep drawing all this stuff underneath and the other tricky part about that is you would think that you would just be able to layer the clothing like you would in real life so i put a shirt on and put a jacket over that and everything is going to look right.
Well, not really because when the topology doesn’t match, so let's say I put a jacket on top of this shirt and the literally the edges of the topology don’t line up, when it deforms, they’re not going to deform in the same way and so what ends up happening you may not get clipping when you’re standing, but as soon as the guy animates, boom it’s all popping out everywhere.
JH: It looks terrible.
ST: And there’s never really anything you can do about that if you do not keep your topology consistent which we don’t necessarily have on the shirts because it’s a bit restrictive if you have to do that. So with the zone culling coming online, not only did it fix the clipping problem, it also fixed our performance problem which was a super duper powerful thing to have.
JH: Yes, super.
PR: It also put constraints onto your work right because artists they usually just work and make it everything look cool, but then with this system like that, they start to get okay you have to build this, but this section won’t always have to be exactly at that line and so it puts some restrictions on your work.
JH: It’s restrictions, but I think that’s part of why we had 20 zones on the body is like, it’s not just you can only have shirt or shirt sleeves or no shirt, like we have way more than that. So we can play with within the zones a little bit so we don’t want to get too close where it clips or you see holes in the mesh, but you also have enough to where you can get something that looks pretty cool looking. Pretty much we can come up with anything at this point and we still get super good savings and looks good.
ST: One last really good example because a lot of people are maybe are thinking of the layering structure so that you would always have pretty consistent assets so a jacket that was always closed, okay great that’s always going to cull out the stuff, but guess what we actually have jackets that go up on the third layer that are wide open so that means what if I don’t have that t-shirt on underneath that jacket, I got to show the chest then, but the t-shirt was culling the chest so then how do I make sure the chest is there with that jacket on. So there’s a lot of little logic within there has to get all worked out and we’ve worked most of it out anyways.
JH: What’s really cool about that is that we do that... I don’t know if seen other people do is like, maybe they have, but if I buy a jacket in some other games, it is an open jacket, they just replace the shirt underneath and you get just a generic shirt, whereas with ours you can wear that jacket with t-shirt underneath or shirtless.
ST: Or shirtless, look at like Fabio we call it the Fabio look.
JH: Fabio, Yeah you can do that too.
ST: Yeah it’s pretty fun
JH: So it adds a lot of customisation within that to where we can start layering much more than we were with just like, okay you’re making an open jacket and a closed jacket and t-shirt.
ST: Yeah so a lot of questions that present themselves and sometimes I go down this road with the designers, but we have to explain the hierarchy of how this works a little bit.
We have just as Paul explained this naked body and then on the naked body we have clothing that can get attached to it. So then we have this layering, so that clothing can start hiding that naked body, but then on top of it we have another layer of the hierarchy which is the armour. So the armour hides all the clothing, which hides all the body so now we keep building up on it. It might be worth explaining how we’ve split up the armour into less granular zones than the 20 or thirty, we still have that technique, but we have whole items anyways. If you want to...
JH: Sure. So, when we’re going to put on armour, and one of the things we’re defining right now as armour is an undersuit. So, an undersuit basically means that you’re going to be able to go into space with it. So, you can put on a helmet and you can go into space, EVA, jet around, and you should be fine.
ST: So an undersuit is kind of your chassis.
PR: It’s like a full-body onesie.
ST: Yeah, it’s like a frame.
JH: So, what that does is it puts on - and you can still see the player’s head, hair, face, all that kind of stuff - then on top of that now you put your helmets and you put your chest pieces, your arm pieces, and your leg pieces. So, right now we’ve split it up into four because it’s just easy to assemble, it’s easy to - with less zones, like we were kinda talking about before, you have way more free play for the art because I don’t have to say, like if this line on my arm is where I’m going to have a zone, all the gloves - everything is always going to have to end at this line and will look a little weird and you’ll see it in some other games. It doesn’t call itself out until you see it but you’ll see all the gloves go to here. All the boots and the pants mesh at one line. So, if we remove those lines we can have a lot more free play in that art so we have a little bit less there. But, also it allows for gameplay for design so we can put - how many weapons go on a chest piece, on a core piece, and does that get bigger and better as you go up light, mediums, and heavies. And then tech within the helmets and all the kind of stuff within the legs and arms as well.
ST: So, within this we’ve talked a little bit about how the art is developed, so let’s talk a little bit about how the tech actually works in terms of - okay, so we’ve got this hierarchy and then we have these character items, so this is all part of the item 2.0 entries that we’ve talked about with the community quite a bit. So, we have all of these items that are all pre-defined. Within those items there can be gameplay components on them. There are a couple of components that are being developed for the character side. Did you want to talk at all about any one of those?
PR: Well I mean for the first thing we did, taking what originally CryEngine counts as - what you said - like the static character definition file and split each piece out and we just made them items so they are interchangeable and then we already had the itemport system for ships so we just took the same thing and basically made - okay those pieces which you usually define in one static file are now just items which you put together and that allows us to give each item different game values. For example, for our chest pieces we give them different mass values and then the game code just takes the overall mass of your attached items and calculates how fast you run. So now we have the ability - design has the ability to give each individual item different mass values and that gives them the ability to make a fast player or a slow player and then it also allows us to build rules. So, the itemport system comes with a rule set which says, ‘Okay, on this port you can only wield a heavy weapon or a light weapon or a small weapon or this type of ammo class and whatever. With this system now we can basically build, ‘Okay, if you have heavy armour obviously you’re slow but you can carry the bigger and heavier weapons,’ and that all works because we have componentized all of those into items.
ST: And on the performance from that’s a better thing because again we could do scheduler updates type thing, we can make it so that they’re not all updating all the time, it’s all very controllable.
PR: And then still for characters still, even if they are now split into different items, under the hood we’re using the skin mechanics which basically still on the rendering side we merge everything into one skin and since they all use the same material, even if it’s split in logical items, on the rendering side it’s still one thing which we can draw in one go so it’s still very optimal and good -
ST: Right, this unified see render proxy piece of the character. Another benefit of that, by the way, is something that we have to deal with on the tech art side quite often is the LODs and the culling of that. So, one thing that can be tricky with the character - if he’s made up of a whole bunch of different attachments, they’re all various sizes and usually our level of detail culling is based on either a bounding box size or distance or an average poly size and if they’re all sort of popping and doing things at different rates, what happens is that on those edges that you talked about, all of a sudden there is breakage in those seams. So, it’s important to keep that as one unified piece and actually up until now - just a good example that came off the top of my head - the helmets were separate, these were a bone attachment, so - and I’m sure that people have seen this within Star Marine is that - they’re shooting at somebody, he’s running away, and all of a sudden the helmet disappears and he’s just running around in space with no helmet on and his face out doing Star Lord or whatever. So, you know, we’re changing those over to the skin files and then that will combine with the render proxy and then all of a sudden we’re LODing and culling out all at the same time. Which is the best way to do it of course, I think, in my opinion. So, a little bit deeper into the tech, some people might wonder how exactly we manage a skeleton like this. So, in most games - and it’s a dramatic difference to how somebody would develop a movie, every single character in a movie tends to get their own rig so it’s a very bespoke rig, they’ve got whole departments of riggers that are just building up these skeletons for every single character. However, in a game it’s the polar opposite - you want one skeleton for everything as much as possible. Problem with that is that you’ve got to carry all of those joints around. So, we’ve had a system within CryEngine/Lumberyard, now it wasn’t used on any shipped game yet -
PR: You’re talking about Skel-Extension -
ST: Yeah, Skel-Extension. So, what this system does is that we can have a base skeleton but we can add additional joints to the skeleton at runtime and when there is duplication of those joints, they’ll shear off basically those duplication of joints and just extend it to the new one so what this gives us the ability to do is modify the skeleton hierarchy itself at runtime meaning I can create - I put that chest piece on and all of a sudden I’ve got a new joint with that new helper just on that chest piece and that’s where the weapon will go. So, rather than saying, ‘I’m going to carry around a skeleton that has a helper here, here, here, here, here, here, here, here, here, here, here, and I’m using helper 22’, you know, for that armour piece, it’s actually coming in automatically with that so, was there anything more that I’ve missed, maybe, on Skel-Extensions or some challenges within that?
PR: You kind of touched on the key points. I think the key points is really to keep the joint count in the base as low as possible and then every piece which comes on top which comes with additional joints can come with its own joint and then there are very smart people in Frankfurt, our animation engineer who built the system which allows us to combine those bone with skeletons into one single skeleton and still all of the animations will work. That allows us exactly what you just mentioned, we can have one armour piece which has two bones here for attachments for grenades and then another armour piece which has them here and it still works and we don’t have to carry four bones for that, it’s still two bones but they are in different locations in each piece.
ST: Exactly, and the nice part is that it all becomes data driven, really, and that’s the key to this entire system is that it was meant and it needs to be scalable as much as possible.
PR: Well, it’s data driven but it also gives the designer more freedom to instead of having, ‘oh, I always have to put the gun on this position’ because that’s how the system works. He can place the thing wherever he wants and then obviously you use the same item port but then on one armour piece the weapon is maybe here and on another it’s a little bit more here and still aligns. Gives the artist a lot of freedom…
JH: Which I love cause now we can do any shape and size and put stuff wherever we want and you guys can just scale extend to that location which is awesome.
ST: Exactly. Yeah, it’s definitely very powerful.
JH: Do scale extensions affect like non-armoured clothing like just casual clothings, social clothing, or anything like that?
ST: Absolutely, so though the design is still up in the air, not up in the air necessarily, we know people are going to have weapons on their civilian clothes at some point but there is no combat right now when you’re outside armour but it would absolutely apply to those civilian clothes. Where it applies even more and this was the next topic I wanted to talk a little bit about, was simulation and secondary motion on a character.
JH: Secondary animation in relation.
ST: Yeah, so that’s where this gets really powerful because if I was to say attach a cape to a character that cape is going to need bones chains and it’s going to need a good whatever, five bone chains across, probably ten long. That’s a lot of joints all of the sudden to be carrying around on your base skeleton but if you can attach with the asset that’s coming in, you’ve saved that much off your base skeleton so that’s where we really use it is when that simulation comes into play.
PR: And the modularity even helps more because of like what you just said, like this cape needs to collide some with your body and then usually traditionally in most games how they do it is they have pretty defined area and that makes always look the same shape. For us, because we put everything into these different modules each piece can come with it’s own collider zone. So you can make a very fat chest piece which just comes with a collider zone and then the cape will still work and collide with that and collide different than big, heavy chest versus a very thin, light chest piece.
ST: Yeah, we have used this on not just things like capes, things like hair, jackets, the sand nomad that was within the Homestead demo was one of the best uses I think that we’ve had so far. So definitely an interesting thing.
JH: Really excited about the degree of variety this tech is going to bring our players, we wanted to leave you guys with a little bit of a video showing off some of the features. So, thanks again and thanks for watching.
ST: I hope you guys enjoyed this very work in progress and behind the scenes look at the character system and how you as players are going to be outfitting and customizing your character. Now no character customization is complete without something to make unique faces and in a future AtV we’re going to discuss this a lot more. Before then however, I wanted to leave you with a technical demonstration done by our partners 3Lateral of the potential of runtime facial technology to create millions of unique faces. This is the last piece of what we need for character customization and we’re super excited it’s finally getting to a stage where we can start integrating it into Star Citizen. We hope you enjoy and if you want to see more of the DNA system and 3Lateral’s technical presentation, go to the link below. Thanks alot guys and see you in the Verse