• 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 look forward to what the devs come up with to accompany traits and what homebrew props modders can come up with. Imagine Emperor Heinrich wearing sackcloth (trait: penitent, for those humbling themselves to have excommunication removed) at Canossa. The crusader trait should give your character a white tabard with a red cross.

Another more general suggestion for the devs would be to include a sort of mannequin image so that it will be easy to size any objects we modders create on our own without having to load up the game, see that the ducal hat I just made is too big or covers the eyes then open my editing programs again and adjust things, save changes, then open CK2 again, rinse and repeat. I am really excited about the possibilities. You guys rock.
 
This seems great!!!! BUT! I somehow understood this guide (I think) But I can't find out where to edit it in, to change a specefic character (Made myself) or did I just miss that??? This is what I have done
I've made my own dynasty. I don't think the appereancess is going to be put un that folder
and this is how I made my character, but this is all I've done, and I can't figure out where to edit in things so I can have him look the way I want him to (well, at least more similar to what I want)

955555 = {
name="Glenn"
dynasty=2000000
martial=8
diplomacy=8
intrigue=8
stewardship=8
religion="catholic"
culture="norwegian"
add_trait="diligent"
add_trait="brave"
add_trait="tough_soldier"
add_trait="skilled_tactician"
1048.1.2={
birth="1048.1.2"
}
1095.1.2={
death="1095.1.2"
}
}
 
This seems great!!!! BUT! I somehow understood this guide (I think) But I can't find out where to edit it in, to change a specefic character (Made myself) or did I just miss that??? This is what I have done
I've made my own dynasty. I don't think the appereancess is going to be put un that folder
and this is how I made my character, but this is all I've done, and I can't figure out where to edit in things so I can have him look the way I want him to (well, at least more similar to what I want)

955555 = {
name="Glenn"
dynasty=2000000
martial=8
diplomacy=8
intrigue=8
stewardship=8
religion="catholic"
culture="norwegian"
add_trait="diligent"
add_trait="brave"
add_trait="tough_soldier"
add_trait="skilled_tactician"
1048.1.2={
birth="1048.1.2"
}
1095.1.2={
death="1095.1.2"
}
}
Oooh, thread necromancy! Anyways, look here under dna: http://ckiiwiki.com/Character_modding
 
I saw that one a little earlier, but with what stands in this guide and the one at that page just didn't make any real sence to me, and I just got confused and mindfucked, possibly I didn't understand or can't remember what he said in the guide, but when I try to read it once again I'm still mindfucked D: