• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

CK3 Dev Diary #34 - It’s all about appearances

Hello, I’m Nils and I’m the lead character artist on Crusader Kings III. We’ve already touched briefly on a lot of the features of the portrait system but in this Dev Diary I’m going to dive deeper into the intricacies of the system. It might get a bit technical at points - so bear with me. I personally think all this stuff is very cool but I'm also a gigantic nerd when it comes to these things.

front_end.jpg

There’s going to be a lot of text in this Dev Diary, but really, when it comes down to it, it’s mostly there as an excuse to show off the art!

Characters are generated dynamically in the game using a DNA system that defines their looks - everything from mouth shape to body height is stored in this DNA. A DNA is made up of a number of genes. Each gene defines a certain feature. Crusader Kings II already does something similar, but in CKIII we have more than 10 times the amount of genes for every character and a lot of added complexity. The system itself is very flexible and it was up to me how to set it up to get as much visual variation out of it as possible.

Our predecessor, CK2, by necessity builds up characters from a limited number of facial features. There are x amount of noses combined with x amount of mouths and x amount of eyes and so on to make up a face. While this works well and gives a good amount of variation it still has some inherent limitations. What we’ve done in CKIII is to have a much more granular approach where we use many parameters to control each feature. So, for example, instead of just picking a nose (you shouldn’t pick your nose kids) out of a selection of pre-defined noses we store values for nose protrusion, nose height, nose length, nose nostril height, nose nostril width, nose ridge profile, nose ridge angle, nose ridge width, nose size, nose tip angle, nose tip protrusion, nose tip width, nose ridge definition and nose tip definition. In other words; if you’re into noses, or any other facial feature, this is the game for you.

faces.jpg

Some of the many faces (and noses!) of Crusader Kings III
As you can imagine, this gives us quite detailed control over the facial features of characters. And they can vary greatly depending on many factors, which I will try to cover here. Let’s start with ethnicity.

Like we’ve shown in other Dev Diaries already, the CKIII map covers a vast area of the world from Ireland in the west to modern day Mongolia in the east and from Arctic Norway in the north to Sub-Saharan Africa in the south. This big area is populated by groups of different ethnicities which we represent in the game. Due to the way that the character generating system is set up, we can use the same base assets for all different ethnicities and just script in different average values for the facial feature parameters. As an example, west african characters have, on average, darker skin, fuller lips and differently shaped noses than their european or asian counterparts, but they still use the exact same base model. This is good news for inheritance, which is the next subject I will discuss.

ethnicities.jpg

A selection of characters of different ethnicities
Due to the fact that all characters use the same base model, we can easily create blends between multiple DNAs. Each character stores two sets of genes that we call dominant and recessive, respectively. (Disclaimer: Please note that the dominant and recessive genes in our system do not work exactly like in real life. We’re still dealing with an approximation of genetics. We haven’t fully replicated real world genetics. Yet.) When a baby is born it will inherit two versions of each gene - both of which will come randomly from either parent. As mentioned one of these genes will end up being dominant and the other one recessive based on a chance value (dominant genes from the parents have a higher chance of being inherited as dominant genes for the baby). The appearance of the newborn character is decided entirely by its dominant gene set. But the recessive genes are still there as a representation of genes carried down the generations. So when this new character gets to make its own babies they will have a chance of inheriting a gene from their grandparents, even though that gene might not have been visible on their parent.

inheritance.jpg

Inheritance in action. Top row parents and bottom row their children. If you look closely you should be able to spot the inherited features.
I hope you guys are still awake for the continuation of this Dev Diary. What does all this genetics mumbo-jumbo mean for you as a player? It means that inheritance has a much bigger impact on the appearance of a character in CKIII than than it does in CK2. Characters of different ethnicities that get down for the hanky panky will make babies that look like a blend between both parents, with some genes from further back in the family tree thrown into the mix. Of course, there’s still a fair amount of randomness in the system so we won’t get identical siblings unless they are, you know, identical twins.

Now, while we’re on the subject, let’s talk briefly about children and aging. This is the other huge factor in defining the appearance of a character: his or her age. The 3D system that we use gives us the possibility to have seamless aging and there’s a ton of things that are set up to take advantage of this. A newborn child will obviously be very tiny compared to when it’s all grown up. It’s adult facial features will be there already from birth but they are very toned down during early childhood to get gradually more pronounced as the character ages. When a character approaches their 30’s and 40’s their skin will get more rugged, age lines and wrinkles will start appearing in the face, and their hair turns grey. Once they enter old age their body will start sagging, posture will deteriorate, their ears and nose will get bigger and the jaw protrudes as they lose their teeth.

aging_somatu.jpg

Chieftain Somatu of Kevrola, from age 0 to 99

In addition to genetics and age, lifestyle choices and changes also impact a character’s appearance. Body types vary greatly from alarmingly thin victims of starvation to truly impressive bulks of some high nobility gluttons. Different levels of muscularity and fitness are also represented and tied to the “prowess” value in the game.

body_types.jpg

Examples of different body types


gaining_weight.gif

Like, every Christmas Holiday, ever


working_out_02.gif

I got ripped in five seconds!

There are a number of traits and conditions, genetic or otherwise, that have visual impact on the character portrait. Some examples of non-genetic ones are pregnancy, wounds, scars, lost arms, blindness and disfigurement. And some notable examples of genetic conditions are dwarfism, gigantism, albinism and hunchback.

traits.jpg

Genetic traits

Dragoman.png

Dragoman

Dam.png

You know how some people have names that just feel “right” for them?



wounded_anim.gif

“You should see the other guy”

We have already discussed clothes in previous Dev Diaries so I won’t go into great detail about them. But I would like to show something I don’t think we’ve shown before. That is the barbershop feature which allows you to change clothes, head wear and hairstyle for your character:

barbershop.JPG

Barbershop
Even though the vast majority of characters have randomly generated appearances, there are some notable exceptions. The detailed setup of the DNA system allows us to design quite specific appearances where we want to. There are some historical starting characters in the game whose looks were based on how they are described in historical sources. For example William the Conqueror and Harold Godwineson of England. Of course, medieval sources are not always... perfectly reliable and the portraiture from the time not the most accurate (to put it mildly!) so we did have to do some guesswork and use a lot of artistic license. There are also a whole bunch of developer characters with appearances that match their real life counterparts. They’re lurking around various courts in the game. If you want to find some, a pro tip is to browse through the characters in modern day Sweden…

It is perfectly possible to mod DNAs as well as adding new ones, so if you feel like adding your own likeness or a medieval Abraham Lincoln to the game it is fairly easy to do so.

fate_of_England.jpg

Historical characters from the “Fate of England” in the 1066 start date. Guess who is who!
And finally, to end this on a more gruesome note, the last thing I’d like to show you is some diseases. As you all know, the middle ages were a time of ravaging epidemics and quick unexpected death from disease. And the game reflects that in quite a graphical way.

And if you don’t enjoy being disgusted - don’t worry - we have an option to turn off the worst looking diseases and replace them with something less nightmare-inducing.

WARNING: The following spoiler tags contain images that some viewers might find disturbing. Viewer discretion is advised.

illnesses.jpg

Don’t say I didn’t warn you
 
  • 258Love
  • 131Like
  • 12
  • 7
  • 4Haha
  • 1
Reactions:
NilsW said:
"It is a simplified system compared to real genetics so it will have roughly the same chance to pick either parents' hair colour."


Basicaly dominant genes are healthy or primal traits. For example lighter hair colors are mutations. Its easy dominant hair for example: Black hair > Brown hair > Blonde hair > Red hair. Darker usualy is dominant but skin color is codominant. Facial features generaly codominant and some primal faical traits are dominant. I never said anyting that they swap dominance and recesivnes of traits. They said that there is no recesive or dominant traits and everything is 50% random. Probably they gave some small percent for grandparents trait whetever its dominant or recesive, so we will get something ridiclous like two redheads having dark haired child when dominant dark hair cant be hidden after generations because its dominant. Also you cant get recesive trait from only one grandparent because you need copy of recesive gene from each parent until one parent have even more recesive gene. For example two dark haired parents where on have hidden blonde gene and another hidden redhead gene can have 25% chance of child having blonde hair when blond gene combine with red gene, and as its more dominant child will have blonde hair.

Btw as for atractive traits I always found it strange because someone cant be attractive for everybode physically and we will always ask why this character is considered attractive and this not when we look at them. Also will there be some well known mutations like albinism?
 
Last edited:
  • 1
  • 1
Reactions:
Basicaly dominant genes are healthy or primal traits. For example lighter hair colors are mutations. Its easy dominant hair for example: Black hair > Brown hair > Blonde hair > Red hair. Darker usualy is dominant but skin color is codominant. Facial features generaly codominant and some primal faical traits are dominant. I never said anyting that they swap dominance and recesivnes of traits. They said that there is no recesive or dominant traits and everything is 50% random. Probably they gave some small percent for grandparents trait whetever its dominant or recesive, so we will get something ridiclous like two redheads having dark haired child when dominant dark hair cant be hidden after generations because its dominant. Also you cant get recesive trait from only one grandparent because you need copy of recesive gene from each parent until one parent have even more recesive gene. For example two dark haired parents where on have hidden blonde gene and another hidden redhead gene can have 25% chance of child having blonde hair when blond gene combine with red gene, and as its more dominant child will have blonde hair.

NilsW said:
"It is a simplified system compared to real genetics so it will have roughly the same chance to pick either parents' hair colour."


Btw as for atractive traits I always found it strange because someone cant be attractive for everybode physically and we will always ask why this character is considered attractive and this not when we look at them.
And you are expecting the devs to do more research on this, implement a system that closely match this with several levels of domination (in your hair example), a system of co-domination, and specific traits such as facial features to use this system instead of their general scheme right now?

Don't get me wrong, I'm not trying to attack you personally, I just have a fundamental disagreement there, because that's a lot of effort and complicated fine-tuning for relatively low return compared to the current version. The only thing we get out of it is realism.

The tiered hair color for example will requires many combinations to be defined in the code, either through a table or like some kind of clever coding tricks but that's a lot of development time wasted for no return.

I never said anyting that they swap dominance and recesivnes of traits. They said that there is no recesive or dominant traits and everything is 50% random.

If a copy is chosen to be expressed over another, it is dominant in our context. Were you defining domination by "if it is always expressed over the other copy"? If yes then it's just a minor miscommunication then. In the end we're talking about the same thing.
 
  • 5
Reactions:
50% chance isnt dominant or recesive at all its simply random outcome. And I dont think its much more difficult to make it correct. Its already simplified. For example for hair: red hair is 0, blonde is 1, brown is 2 and black is 3. You get one from each parent for example 0 and 2 so your character is 02 visble brown but carrying red. Easy. The same for eyes color. They already have slider for skin and facial features codomination. This would be simple enough but simulatoneusly correct enough. Of course they can add some other traits like some facial features or hair type as dominant and recesive.
 
  • 1
Reactions:
Who cares. It's a game. ;) Fun trumps realism, same with use of precious dev resources.

As for an anecdote, my family: grandpa on mother's side was red haired. Grandma dark brown/black hair. My mother is dark blond/brown haired. She even turned pitch black when I was born and was so until her third child (me being first). Her two siblings are red haired. Her children is dark blond/brown x2(me and my brother) and red heads (2x girls). My sister has two children with a man with black hair. These two kids has light blond hair (as I had when I was their age) so far.
 
  • 3Like
  • 3
  • 1
  • 1
Reactions:
50% chance isnt dominant or recesive at all its simply random outcome. And I dont think its much more difficult to make it correct. Its already simplified. For example for hair: red hair is 0, blonde is 1, brown is 2 and black is 3. You get one from each parent for example 0 and 2 so your character is 02 visble brown but carrying red. Easy. The same for eyes color. They already have slider for skin and facial features codomination. This would be simple enough but simulatoneusly correct enough. Of course they can add some other traits like some facial features or hair type as dominant and recesive.
Ah! I see what you mean. Let's see how that play out:

Hair color is 0, 1, 2, 3.
Possible combinations are

00, 01, 02, 03
10, 11, 12, 13
20, 21, 22, 23
30, 31, 32, 33

Some of them are duplicates since order doesn't matter:
00, 01, 02, 03
, 11, 12, 13
, , 22, 23
, , , 33
Since you want consistence domination the code will look like this: (pseudo code)

In case:
00: red​
01: blonde​
02: brown​
03: black​
11: blonde​
12: brown​
13: black​
22: brown​
23: black​
33: black​
Now repeat this for all the traits that we would want to apply this special inheritance.

Okay, I see that it's doable, tedious, but not too hard to do. If we only do this for hair and eye, it shouldn't be too much dev time.

However this set up won't work with traits that are inherited as values such as chin width or eye distance. But for a special rule only for specific things like hair and eye color yes. Although I still think it will significantly reduce the amount of red hair character (which is realistic, but not fun) and I don't like that, I'll concede that it is possible.

Edit: they made it so that attractiveness does not affect actual values just symmetry of the face. I don't think any culture consider asymmetrical face attractive.
And yes, albinism is in!
 
Last edited:
  • 6
  • 1Like
Reactions:
Ah! I see what you mean. Let's see how that play out:

Hair color is 0, 1, 2, 3.
Possible combinations are

00, 01, 02, 03
10, 11, 12, 13
20, 21, 22, 23
30, 31, 32, 33

Some of them are duplicates since order doesn't matter:
00, 01, 02, 03
, 11, 12, 13
, , 22, 23
, , , 33
Since you want consistence domination the code will look like this: (pseudo code)

In case:
00: red​
01: blonde​
02: brown​
03: black​
11: blonde​
12: brown​
13: black​
22: brown​
23: black​
33: black​
Now repeat this for all the traits that we would want to apply this special inheritance.

Okay, I see that it's doable, tedious, but not too hard to do. If we only do this for hair and eye, it shouldn't be too much dev time.

However this set up won't work with traits that are inherited as values such as chin width or eye distance. But for a special rule only for specific things like hair and eye color yes. Although I still think it will significantly reduce the amount of red hair character (which is realistic, but not fun) and I don't like that, I'll concede that it is possible.

Edit: they made it so that attractiveness does not affect actual values just symmetry of the face. I don't think any culture consider asymmetrical face attractive.
And yes, albinism is in!
Except that there is more than one "black" gene, more than one type of "red", and so on.
Plus some types of red hair bleach blonde given enough sun.

For eye colour it's a nightmare to analyse the genes, because they don't 100% seem to apply consistently, and you can get things like heterochromia occurring without chimerism, indicating that the same gene combination doesn't always give the same eyecolour.

According to the "simple" eye colour model, my eyes are the wrong colour considering my parents' eye colours, because it's *really* complicated and isn't a simple case of total dominance - there's some co-dominance involved.

It's also probably easier to write all traits as "active" and "passive" (better terms than "dominant" and "recessive") rather than having some work on one system, and others on another.
 
  • 7
  • 1Like
Reactions:
Except that there is more than one "black" gene, more than one type of "red", and so on.
Plus some types of red hair bleach blonde given enough sun.

For eye colour it's a nightmare to analyse the genes, because they don't 100% seem to apply consistently, and you can get things like heterochromia occurring without chimerism, indicating that the same gene combination doesn't always give the same eyecolour.

According to the "simple" eye colour model, my eyes are the wrong colour considering my parents' eye colours, because it's *really* complicated and isn't a simple case of total dominance - there's some co-dominance involved.

It's also probably easier to write all traits as "active" and "passive" (better terms than "dominant" and "recessive") rather than having some work on one system, and others on another.
Right, and I agree with you on the grand scheme of thing. But I'll play the devil's advocate here and note that we don't need 100% accurate representation of hair and eye colors. Having said that, I agree that this is a slippery slope and figuring out where to stop and which abstraction to use is totally arbitrary.
 
  • 4
Reactions:
Please do not fall in love with your game characters.

I can make no guarantees on this front.


Just for clarification - we won't be able to customize the body shape/appearance of characters during release?

You will with an editor accessed through the console, but not "officially", no. Ruler designer is coming later as free DLC, and the barbershop seems to only let you edit hair, facial hair, headwear, clothes, and hair color.

To use the console, you'll have to make your edits, copy the DNA string it gives you, then open up your save in a text editor and paste the new DNA over your character's DNA.
 
  • 2Like
Reactions:
Great job!:)

A question however:

fate_of_England.jpg


If Harald Hardråde is to the left, why does he have Cineese eyes?:oops:

Sweden
1597258145211.png


Harald
1597258355880.png


China
1597258301463.png


1597258665332.png
 
Last edited:
  • 3
  • 1Haha
Reactions:
Probably because he's northern European.

Northern Europe?
If you are thinking about the Sami then yes:
Nordic_Sami_people_Lavvu_1900-1920.jpg


An innland Scandinavian minority however.
Few Samis today has eyes like this 100 year old picture, because they have mixed with Norwegians and Swedes.

Norwegian kings were never Sami however, so again strange to see Harald with eyes like that.
Not that i mind that much:)
 
  • 2
Reactions: