Behavior, Traits, Villager stats

Walking through the files for traits I think I understand them but I’d appreciate a clearer picture on how villagers behave and the scripts behind that, along with how random effects like disease or pregnancy are determined

Well this is more complex than random. There are multiple simulations running at a time in each actor: Nutrition, sleep, stamina, sex… And these are related with every actor behavior.

Traits are the states, reasons or consequences of the simulations and behaviors. Also traits could affect other traits.

2 Likes

Are you talking on the lines of being able to script in story lines?

Like making simulated events or behaviors trigger when something reaches a certain state?

I was wondering about this as well. It’s been stated that the game will not contain a campaign. But if players could script in their own custom stories, that would fill the void.

1 Like

So how are things like aging controlled? What determines pregnancy?

I’m not interested in a story, just how the villagers make choices and what affects them in terms of health or why they choose to X Vs Y

Ah, I see. I would assume that these things aren’t modifiable unless the developers specifically add pathways for you to do this. With it being so early in development, I doubt this is even implemented into the game yet. So there would probably be no real solid answers yet.

Just a random thought… It would be interesting starting a tribe with members that never aged or got pregnant. You could increase the difficulty of the game and have like a hardcore mode where X amount of people have to survive for Y amount of time. It would be some kind of arcade mode. Or you could make an ancient Cities Zombies Mod lol…

But this was said:

1 Like

Behaviors are not currently scriptable for performance reasons. But there are many parameters that are affecting those behaviors and you can tweak these parameters in the .art files.

1 Like

So if I look at the traits in - \SteamLibrary\steamapps\common\Ancient Cities\Ancient\Data\Ancient\Entity\Trait

I can see

Entity/Trait:{
Name:“Entity”
State:“Enabled”
ValueAttributeName:"‘Stamina’,‘Nutrition’,‘Will’,‘Nutrition’"
ValueAttributeRange:"(0,1,-0.5,-0.5),(0,1,0.25,0.5),(0,1,0.5,0),(0,1,0.25,0.5)"

Which looks like it maps to how this affects stats, so babies get those characteristics and that says what effects it has on numbers.

How does the AI get these traits? What file says “this villager is clumsy, this villager is pregnant, etc” on startup what assigns traits to villagers and what assigns them as game goes on?

1 Like

The answer is… C++ code

1 Like

Ah so not moddable? I can’t adjust preganncy rates or adjust the odds of having genius villagers

Now you are talking about data and this is in .art files in plain text. Not every parameter is there but we could add more in the art files if this is needed.

Always appreciated and I’m sure there will be more to adjust at a later date and the traits will have more of an effect on gameplay

There are already many things to adjust in art files but we need to create some kind of wiki to explain everything.

1 Like

I’m plowing through them slowly, its really nice to have a game where its easy to adjust this stuff.

All the game data is in standard format to be easily moddable. Behaviors & Simulations are entirely in C++ for performance.But these are pretty dependent on data so you could modify behaviors and simulations from data.

2 Likes