• 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.
Since there was some discussions and curious people in the last dev diary thread I thought I should take a break from HOI3: For the Motherland and describe how the character portrait system works. If there are any art questions perhaps Danevang who is doing the actual art can answer those for you, I will focus more on the technical aspects. Remember that all of these pictures are still very much in progress and things will change and a lot of things will be added.


The primordial goo

The way a character looks is based on two things: inheritance (we call this DNA) and other factors (we call these properties). Your DNA is created when you are born and cant be changed. Its a mix of your characters parents DNA plus a small "mutation chance" to simulate genes from ancestors and to make people look different despite not having millions of characters. Properties on the other hand change during a characters lifetime depending on traits, social status etc.

For example DNA will tell if you inherited the big 'ol family potato nose and blond hair (and if not it might cast some suspicions on what your mom was up to while your dad was busy crusading) and properties will tell what kind of hair style you prefer and if you are likely to wear a crown because you're king and how fancy your clothes are.
Currently there are 11 DNA genes and 6 properties for each character, but its not unlikely that we will increase these during the project.

Below is a picture showing inheritance, sadly none of our female portraits are ready for showing yet so I'v shown only the male line:

stenkil.png

You can also see the effects of properties, our character in the middle is a king with a crown and one of his sons is a bishop, above him is his late father. This picture also shows the effect of aging. We currently have 4 age levels for the portraits so you will see your characters grow wrinklier, get bigger ears and their hair thinning and becoming white.

The DNA is scriptable in history files for character if we want to make someone look like their historic counter part (arguably this was more important in EU: Rome because the romans were pretty good at making statues so we could see what people looked like), then during startup the game will run through characters outwards from scripted ones and propagate their genes for a plausible result for all the ones not scripted.


Hey, you said this was about modding not biology!

ok ok, lets see some code and I'll show you how characters can be modded.
Character portraits are described in two files, one for the graphics and one for scripting logic around properties.

Graphical portrait setup
Code:
[COLOR=YellowGreen]# portraits.gfx[/COLOR]
[COLOR=YellowGreen]# graphical look of character portraits[/COLOR]

[COLOR=YellowGreen]# middle age[/COLOR]
portraitType = {
    name = [COLOR=Magenta]"PORTRAIT_norsegfx_male1"[/COLOR]
    effectFile = [COLOR=Magenta]"gfx\\FX\\portrait.fx"[/COLOR]
    layer = { [COLOR=YellowGreen]# GFX_TYPE:[d|p]INDEX:COLOR_LINK[/COLOR]
        [COLOR=Magenta]"GFX_character_western_background:p0"
        "GFX_western_male_clothes_behind:p3"
        "GFX_western_male_headgear_behind:p5"
        "GFX_western_male_beard_behind_midage:p4:h"
        "GFX_western_male_base_midage:p2"
        "GFX_western_male_neck:d0"
        "GFX_western_male_chin:d1"
        "GFX_western_male_mouth_midage:d2"
        "GFX_western_male_nose_midage:d3"
        "GFX_western_male_cheeks_midage:d4"
        "GFX_western_male_head:d5"
        "GFX_western_male_eyes_midage:d6"
        "GFX_western_male_eyes2:d6:e"
        "GFX_western_male_clothes:p3"
        "GFX_western_male_beard_midage:p4:h"
        "GFX_western_male_ear_midage:d7"
        "GFX_western_male_clothes_infront:p3"
        "GFX_western_male_headgear:p5"[/COLOR]
    }

    hair_color_index = [COLOR=Cyan]8[/COLOR] [COLOR=YellowGreen]# which DNA gene sets hair color[/COLOR]
    hair_color = { [COLOR=YellowGreen]# dark, base, highlight[/COLOR]
        { [COLOR=Cyan]15 8 0[/COLOR] } { [COLOR=Cyan]173 158 102[/COLOR] } { [COLOR=Cyan]255 255 255[/COLOR] }
        { [COLOR=Cyan]10 10 10[/COLOR] } { [COLOR=Cyan]125 100 82[/COLOR] } { [COLOR=Cyan]255 255 255[/COLOR] }
        { [COLOR=Cyan]30 22 18[/COLOR] } { [COLOR=Cyan]194 132 97[/COLOR] } { [COLOR=Cyan]255 255 255[/COLOR] }
    }

    eye_color_index = [COLOR=Cyan]9[/COLOR] [COLOR=YellowGreen]# which DNA gene sets eye color[/COLOR]
    eye_color = {
        { [COLOR=Cyan]58 109 193[/COLOR]}
        { [COLOR=Cyan]120 74 46[/COLOR] }
        { [COLOR=Cyan]34 103 36[/COLOR] }
    }
}
The name for the portrait type specifies that this is used for the norse graphical culture group and that he is male and middle aged (the number at the end sets age). The portrait is made up of 18 layers (this can change between ages and cultures as well if wanted) and each layer has a string describing it. Lets use "GFX_western_male_beard_midage:p4:h" as an example. This specifies that it should use an image from the GFX_western_male_beard_midage icon strip (specified higher up in the file), that it should use property 4 :)p4) from the character to decide which beard to pick and the last ":h" means that it should be colored using the characters Hair color. If we had wanted to connect to DNA instead of a property (like for the nose) we would write :d4 instead of p4.

Layers are free to connect to the same property and this is done quite a bit for clothes and beard/hair etc that needs to show both behind and in front of other layers. This is what GFX_western_male_clothes looks like for the first 3 options:

western_male_clothes.png

Further down are hair and eye colors specified. For hair there is 3 colors for each property so we can tint hair highlights differently from base colors etc.

Property scripting
A separate file "portrait_properties.txt" specifies what properties a character should have. These are updated on major changes on the character like a new trait, a new title etc and also randomly once in a while. Scripting properties looks like this this, any property not mentioned will basically have a random value picked (so if we don't specify anything for hair/beards you will just get a random beard):
Code:
[COLOR=YellowGreen]# p3 clothes[/COLOR]
[COLOR=Cyan]3 [/COLOR]= {
    [COLOR=Cyan]0[/COLOR] = { [COLOR=YellowGreen]# mail armour[/COLOR]
        factor = [COLOR=Cyan]1[/COLOR]
        modifier = {
            factor = [COLOR=Cyan]2.0[/COLOR]
            martial = [COLOR=Cyan]5[/COLOR]
        }
        modifier = {
            factor = [COLOR=Cyan]100.0[/COLOR]
            has_job_title  = job_marshal
            OR = {
                is_ruler = no
                is_theocracy = no
                NOT = { religion_group = christian }
            }
        }
    }
    [COLOR=Cyan]1[/COLOR] = { [COLOR=YellowGreen]# fancy shirt[/COLOR]
        factor = [COLOR=Cyan]5[/COLOR]
        modifier = {
            factor = [COLOR=Cyan]10.0[/COLOR]
            OR = {
                has_job_title = job_treasurer
                has_job_title = job_chancellor
            }
        }
    }
    [COLOR=Cyan]2[/COLOR] = { [COLOR=YellowGreen]# Catholic vestments[/COLOR]
        factor = [COLOR=Cyan]100[/COLOR]
        modifier = {
            factor = 0
            NOT = { religion_group = christian }
        }
        modifier = {
            factor = [COLOR=Cyan]0[/COLOR]
            OR = {
                is_ruler = no
                is_theocracy = no
            }
            NOT = { has_job_title  = job_spiritual }
        }
    }
}
The top level is the property, so 3 is the same as :p3 in the graphical description we showed above. The next level in specifies which entry among the icons to pick, this script basically selects between 3 options: chain mail, fancy shirt and a more spiritual outfit. The factors you see are just percentages, but if something is specified with a value of 100 or above it always overrules any other option after it.

Alright, hopefully that was clear. So lets test this with an example. We want to add another layer connected to property 6 to our portrait. lets call it "props" so first we declare a sprite like normally in our gfx file and refer to it in the portrait description at the very end with "GFX_western_male_props:p6". Then we add a rule in the properties script like so:
Code:
[COLOR=YellowGreen]# p6 props[/COLOR]
[COLOR=Cyan]6 [/COLOR]= {
    [COLOR=Cyan]0[/COLOR] = { [COLOR=YellowGreen]# empty, dont use props, this is default[/COLOR]
        factor = [COLOR=Cyan]1[/COLOR]
    }
    [COLOR=Cyan]1[/COLOR] = { [COLOR=YellowGreen]# new prop. overrule all if character qualifies[/COLOR]
        factor = [COLOR=Cyan]100[/COLOR]
        modifier = {
            factor = [COLOR=Cyan]0[/COLOR]
            trait = [COLOR=Red]cool[/COLOR]
        }
    }
}
This means that if our character gains the "cool" trait and we have done our modding correctly his portrait will be changed to something like this:

cool.png

Looks like this
*puts on sunglasses*
wraps up this developer diary.

YEAAAAAAAAAAAAAH!

(disclaimer: there probably wont be any sunglasses in the real game)
 
Last edited:
I like how it works but I liked the original look more (1st DD I think)

those gave a vibe (feeling) of a medieval world. these don't. they are too much of the 3d hype. (I know they are not 3d)
but they look like it.

the portraits look fake and feel wrong in the setting IMO.

(I hope they won't look like this in the final version) :(
I didn't agree with that look at first, but... after I saw this, I think it'll be great to have this kind of photorealistic portraits, if DNA and these kind of details are so important.

Well, beauty is in the eye of the beholder.

I did miss the simple and flat portraits too. But after giving the new photorealistic ones a second glance, I think they are fine.

I have to say, that the father and grandfather look much better than the two sons.

The young faces are too symetrical and have a strange, babylike skin.
The old guys seem to be more "alive" and to have more personality.


EDIT: Johan, please give the young faces more natural, personal features!
 
Last edited:
Excellent.

Confirmation requested:

1) The standard silhouettes for children?

(n.b. especially retaining them should they not survive to adulthood.)

2) Sunglasses will appear?

(Even if they don't have to appear in standard, default play.)
 
Well, beauty is in the eye of the beholder.

I did miss the simple and flat portraits too. But after giving the new photorealistic ones a second glance, I think they are fine.

I have to say, that the father and grandfather look much better than the two sons.

The young faces are too symetrical and have a strange, babylike skin.
The old guys seem to be more "alive" and to have more personality.


EDIT: Johan, please give the young faces more natural, personal features!

I have to say that older faces do look more interesting than younger ones. I look forward to seeing how they progress from youth to very old people, which if nothing else will be a big improvement over CK1 and the Total War people (whose faces, no offense to the devs, these faces remind me of), in that they change over time. You guys might be on to something and this might be a nice move for more traditional RPGs, too.
 
A quick question: will skin color be treated the same way with RGB values than hair or eye color?

no its too hard to draw that way and make it look natural. skin color needs to be drawn for each layer, so you need a new base set of sprites for each culture/race/etc

I'm guessing the kids still have the generic portraits, right?

right now yes, the system supports showing dna for kids however so its subject to change (or could be added by modders), but drawing kids is much harder since they change look so much every year and its hard to pick one look that works for all ages below 16.
 
I don't really know what was going on in the DD, but it looks good. I like pictures.
 
no its too hard to draw that way and make it look natural. skin color needs to be drawn for each layer, so you need a new base set of sprites for each culture/race/etc

OK, it's understandable from a technical point of view. So if I understand right, the only traits that will get "mixed-race" in case of different culture marriages will be the hair and eye colors, since the culture of the children will determine their skin color and the "properties".
 
I have to say, that the father and grandfather look much better than the two sons.

The young faces (...) have a strange, babylike skin.

I have to agree with this. They look like youngsters but have small children's skin. I hope that gets adjusted. The older guys I'd be happy with already.

However, that's pretty much the only thing that bothers me here. Looking very, very good, and unlike some I very much like the style choice and find it fitting. And the system seems brilliant too. The DNA seems to be working really well so if there's enough variety I foresee numerous hours of selectively breeding my families. :D
 
But, but... I am 24 yo and still look youngish, and I have the strange feeling I'm not the only one; if the game intends to represent people from 16-8 to let's say 26-8, the younger portraits look decent.
 
But, but... I am 24 yo and still look youngish, and I have the strange feeling I'm not the only one; if the game intends to represent people from 16-8 to let's say 26-8, the younger portraits look decent.

Dunno, I'm not that much older and I can think of only a handful of adult males who I've seen RL who have skin like that (and the otherwise good-looking ones of them have to turn down modeling jobs left and right). Plenty of females of course because they're more likely to take care of it. But among males, even those who "still look youngish", or are even mistaken for teenagers, have worse skin than that. Maybe Finns just tend to live a rough lifestyle then if that's not the case everywhere. :D
 
But, but... I am 24 yo and still look youngish, and I have the strange feeling I'm not the only one; if the game intends to represent people from 16-8 to let's say 26-8, the younger portraits look decent.
Here's the funny thing: in bed girls alsways compliment my soft skin. They have dificulties believing, that over the muscles there is such a young skin :D

I did not meant they have just a bit youngish skin in my post above.
I talked about strange, shining Babyskin and too perfect symetry (left/right mirror), which makes the young faces less realistic.

But anyways, I still think that the older ones look much more, like they are filled with live from the "inside". That's my point.
 
Last edited: