• 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.

Dev Diary #156 - Modding & Achievements

Hello there! We’ve got some new stuff available for you to tinker with and I’m happy to have the honor of presenting it for you! I’m Jens, the programmer behind the Barbershop upgrade and Message Settings. But first I want to talk about Domiciles, the system behind Estates & Camps.


Domiciles​

When building the feature, I made it in close collaboration with artists, designers and UX. Nobody wanted to work with another activity locale window again. So gathering the learnings and feedback, I wanted to make it as easy as possible for anyone to set the amount of building slots, their positioning or size and appearance based on triggers, all while having it updated by hot reloading in real time.

Domicile Slots​

To get some terminology out of the way, we decided on 3 different domicile building slot types:
  • Main: The building slot of your home building. It differs from the external slot in that its building is auto-constructed at start for free and is indestructible. Otherwise it’s handled just like any other external building slot. We decided on one main slot per domicile type, but there is no cap so technically you can add as many as you want.
  • External: The visual building slot you see as you open the window. It has 4 states: locked, unlocked, under construction and constructed. Clicking an unlocked slot opens the building panel where you select what building you want to construct in the slot. There’s a new character modifier domicile_external_slots_capacity_add which sum determines how many extra slots are unlocked.
  • Internal: For Estates we added internal building slots for its main building and for Camps we put them in the external buildings, but it's not enforced so any external building can host internal slots. They share the same 4 states as external slots even though it's visually presented in another way.

image_01.png

[Highlighted external building slot states of the Camp]

image_02.png

[Highlighted internal building slots of the Estate]

Domicile Types​

With Roads to Power we add Camps and Estates as two new domicile types. What domicile type to use is set per government type. Each domicile has base_external_slots which sets how many slots always are unlocked before the domicile_external_slots_capacity_add modifier is applied.

In the domicile_building_slots array you define the amount of external building slots the domicile type has. Because it’s an array you’re free to add as many or as few building slots as you like. Camps have fewer building slots than Estates so we made its artwork slightly bigger to get the zoomed in feeling. For each slot you can define if its main or external, its position and size and what image to select for the empty and under construction slot states (meaning each slot can look unique if you so wish).

image_03.png

[Database of domicile type displaying how the array of domicile building slots is defined]

The order of definition is only relevant when drawing the slots on the screen as the first items will appear behind the last items of the array. In the above example you can see we have several empty_slot_asset defined where slot appearance is selected by a trigger depending on current location. Make sure to have at least one empty_slot_asset and one construction_slot_asset per slot to cover the states.

The background of the window is selected in the same manner by defining domicile_asset that will pick the first triggered match starting from the top.

image_04.png

[Database of domicile type showing how window background is selected using triggered domicile assets]

If a domicile type uses provisions or not while moving is determined by a bool. Whether the domicile type will have a followers window and handle follower temperament will automatically be enabled if you start adding domicile_temperament_low_modifier or domicile_temperament_high_modifier.

Domicile Buildings​

image_05.png

[Example building of the domicile building database]

Some things in the above example are self explanatory but other parts are not that straightforward.
  • allowed_domicile_types: This is an array defining what domicile types this building will be available for. If not specified this building won’t show up anywhere.
  • previous_building: Is arguably the most complex as setting what building comes before this is what the upgrade tree structure will be based on. It is fully dynamic so you can make the tree as simple or as complex as you wish regardless what slot type the building is.
  • slot_type: This determines in what slot you may construct the building. Note that setting the previous building of an internal building requires its predecessor to either also be an internal building or being the base building of an external or main building track. Internal buildings cannot be base buildings so all internal buildings require a previous_building.
  • internal_slots: Defines how many internal slots this building hosts regardless if it’s an external or main building. (Please don’t add internal slots to internal buildings as that would start getting silly).
  • asset: Works just like assets for the domicile types and may be selected by triggers as well.

Not shown above we also have can_construct trigger and on_start/on_cancelled/on_complete effects.

image_06.png

[Picture of a more complex tree structure. Note you won’t find this particular building in the game]

Decision Groups​

As you might have noticed in some screenshots we have structured the decisions window into collapsible groups. What decision belongs to which collapsible group and in what sort order is fully moddable.

image_07.png

[Displaying decisions sorted into collapsible groups]

The only thing you have to do is to set decision_group_type = <key> on the decision to have it show up within a specific collapsible group. The keys are defined in the decision group types database.

image_08.png

[Displaying decisions sorted into collapsible groups]

We use gui_tags as an arbitrary string to check for within gui files changing how they should be presented and you can easily append with your own in the same manner if you want a unique look.

Message Settings​

To talk about this I also have to reveal some updates to Message Settings we will ship later with the patch.

image_09.png

[Picture of the Message Setting window in the patch version]

Message Filters​

Each message can define its own message_filter_type to be handled as. These filters are defined in a separate database.

In the filters database you can set the default behavior of messages of the filter. You can set its display type, always_show if it never can be hidden, auto_pause by default and finally the collapsible group it will belong to. All but the always_show would get overridden as a player’s starts changing their own settings.

image_10.png

[Example of the Message Setting Filter database]

Message Groups​

Works exactly like decision groups mentioned above, but without the gui_tag functionality.

Message Settings Patch Updates​

Added shortcut on each message, quickly locating their respective filter.

image_11.png

[Image of shortcut icon on a toast message to its message settings filter]

This one is from Joror: Added text field to search through your message filter list.

image_12.png

[Text search field for message filters]

And as a parting gift requested by Mindel in a previous dev diary I present to you: Custom Messages! Giving you the ability to write messages to your future self reminding you about things of importance.

image_13.png

[Screenshot displaying the Custom Message feature]




Development Tool Improvements​

Hiya, this is Joror - programmer on CK3 - I have been a modder myself before my Paradox days, and was also part of our central GSG Tools team before I joined CK3. So you can say that I have experienced our dev-tools from many different angles!

Developing or modding any grand strategy game can be an overwhelming task, given the sheer amount of systems and visualization layers that work together to create a believable world.
But we can help ourselves by improving the weapons that we have to wrangle this beast - our development tools. The modding community knows this all too well. (And often it has created better tools than the dev teams themselves. You do outdo us often, but you do outnumber us as well.)
We have improved a number of the in-game dev-tools during the development of this expansion. And as a modding-friendly game, you get to use them too! Here is a probably-not-complete overview.

Object Explorer​

A tool often used to check out what is going on in the simulated world while it is running; we tweaked its UX a bit. To access this tool you can run ‘explorer’ console command. You can also open the ‘Inspector’ part of it by ctrl-alt mouse clicking any portrait.

Improvements:
  • Made the edit input box bigger
  • Added provider name to title of dockable
  • 'Save as Default' also remembers size and position of the object browser window
  • Object Browsers 'stack' when opened on top of eachother
  • Object Inspector will now always open to the right of the Browser window instead of on top of it
  • Hitting ctrl-enter while typing in the text box will auto-apply it
  • Bugfix - Alt-Tab no longer kills half your typed text in the text box

image_14.png

[The Object Browser with more information and bigger input fields]


image_15.png

[Picture of several stacked Object Browser window, also demonstrating it remembers a Default size and position]

Script Debug Logs​

That honker of a text file called `errors.log` - it is usually filled with messages of shame from a strict and mysterious machine overlord. We have cautiously convinced it to perhaps tell us a bit more than “Error on line 0”.

Improvements:
  • Scripted effects/triggers state their actual line-number instead of the 'relative' line-number
  • Scripted effects/triggers state their full file name
  • Multi-line script errors go "last-to-first" instead of "last, first-to-last" (they're now in an order like most stack traces)
  • Script file lines mention extra context in (...) behind them - the name of the object they were in, with potentially their sub-part
  • Mean-time-to-happen script calls now actually put their script location in the logs too
  • A bit of extra indenting for visual clarity

image_15-1.png

[The same error reported in the old log style and the new]

We also now follow script-execution-chains through more layers. More verbose, but ultimately easier to track down where things went wrong. For example with events triggering other events:


image_15-2.png


[A long chain of script calls, from a ‘hold_court_decision’ initial call, all the way through a series of triggered events]

Localization Syntax Checker​

Almost all of the text of our game lives in a large amount of .yml (sort-of YAML) text files. We call these files and their entries “loc” - after “localization” - but they’re also responsible for our text-formatting, and they can call Data script functions as well. A complex database, where it is easy to make a small mistake that goes unseen. Until spotted by our talented translators, or our very observant player base.

Improvements:
  • Added a high-level localization syntax checker at game startup on all localization keys of the current language (when in debug mode)
    • Checks for extra / unterminated loc symbols `[...] (...) $...$ '...'`
    • Checks for invalid usage of Text replacement within Data functions
  • Other loc-key replacements via `$...$` can now also apply formatters via `$...|u$`
  • Escaping single quotes in `$...$` can be done via a new formatter `q` : `$...|q$` - you’ll see a bunch of our localization has been tweaked to add this.

Various improvements​

  • The map debug menu buttons work again in our release version (they still worked in our internal development builds, but modders brought this to our attention)
image_16.png

[Map debug menu - all these button now again do things, nice for streamers and modder that want to enable/disable visuals]

  • The Script Profiler (originally from Victoria 3 ) has been ported to CK3!
image_17.png

[The script profiler at work, showing us how much time was spent on various script statements]

Various AI Watch Window Changes​

One of the tools at our, and modder’s, disposal is the Watch Windows. Some of these are receiving some minor improvements.

First improvement to speak of is the AIWatch window, which contains various information regarding some of the AI logic and how the AI considers things like marriage, activities and relevant to this entry: available casus belli. One of the improvements we’ve made to the AI is that they will now consider a ruler’s military power rather than their military strength. Allow me to clarify the distinction: strength is the raw numbers a ruler has, no matter what troops they are. All military calculations up until now have been based on this. Power is a more accurate representation, in that it combines a regiment’s combined damage and toughness and multiplies that with the strength of the regiment. The short of it is: the AI now knows that levies are much weaker than MAAs and Knights when both declaring wars and picking battles.

To make it easier for ourselves when investigating how the AI picks available casus belli, we are exposing the AI’s power calculation, and the power they estimate other rulers to have. It is important to note that this calculation is affected by the ruler’s personality when targeting administrative realms, such that a craven ruler will overestimate a target’s power, while a bold ruler will underestimate a target’s power; a craven ruler will assume all governors operate at peak efficiency, while a bold ruler will assume them all to be useless administrators barely fit for office. These calculations can now be seen in the AIWatch Window in the Casus Belli section.

image_18.png

[AIWatch Window with military power in the CB tab]

Furthermore, while in debug mode, the military strength tooltip in the character window will also show an entry for the ruler’s military power.

Next is an improvement to the AI War Coordinator Watch Window. While this is not a window that helps modders too much, as the items shown within are more relevant to us who have access to the source code, it can be of worth for those who modify the strength of levies and knights.

image_19.png

[AI War Coordinator Watch Window]

While rarely relevant for modders, the ai war coordinator watch window can be of value when modders change the calculus of war by modifying the strength of levies, men at arms and knights, to see if their tweaks have the desired effect on strength on the sides of war.

The military power information is also available in the character window when in debug mode.

image_20.png

[Character Window showing “Our Military Strength” tooltip with debug mode enabled]

Warfare Modding​

Retiring some of !warfaremodding​

New modders often ask the question: can I mod armies and regiments? For the longest time we have not allowed any sort of warfare modding to the point where our modding community has had this little command on their Discord server, first proposed in 2022.

image_21.png

[CK3 Mod Co-op !warfaremodding command proposal and first use]

Now we retire some of these points. We are adding a whole suite of effects and triggers that affects regiments. Yes, we are making regiments a scope and various ways to access them. You’ll now be able to create, destroy, change size of, and add troops to regiments from script.

Let’s look at the refill_maa_with_provisions_effect as an example where one of them is used.

image_22.png

[Warfare modding example with change_maa_troops_count]

Another thing we’re adding with Roads to Power is dynamically changing commanders in battles. While not directly moddable, this does mean that one can add temporary modifiers to commanders to swap them around.

Starting wars never was easier!​


The ‘start_war’ script effect has some downsides because you have to specify exactly which war you want to start, and you might not know which Casus Belli and targets might be available to a character. Troublesome. You will have to wait for the general AI war background process to kick off a war you want to start.
So to give our script a bit more power, we have added a new ‘complex’ effect called ‘ai_start_best_war’, which can be used only for AI characters. It will go through all the valid wars a character can start at this moment, and gives you the opportunity to ‘select’ them via the ‘is_valid’ trigger.

Out of all the wars selected this way, the effect will start the one with the highest AI score. (as determined by the regular AI scoring mechanism for wars, which is a combination of a code-based score and script-based ‘ai_score’ calculation on Casus Belli)

The outcome of the effect can be further acted on by its two sub-effects: ‘on_success’ and ‘on_failure’.

It is a key component of how we made characters with our new Conqueror trait extra aggressive!

image_23.png

Music Player​

The contents of the music player are moddable. For those who're already modding music into the game, there's just a few more steps you have to do in order to have the songs show in the music player.

We add the Music tracks we wish to put into the Music Player into categories. To do this they must be implemented with the following files structure:

image_24.png

[Music Player Modding directories]

The music.txt files contain information on the tracks themselves, and in order to have them localized they all must have a name = loc_key field. Example:

image_25.png

[music.txt entry example for music player modding]

The music_category.txt files will then contain information on the categories and tracks contained within:

image_26.png

[music_category.txt example for music player modding]

It is important to note that the id field in these categories must be unique. Finally, here’s where you can add illustrations for the music player. Using the above category as an example:

image_27.png

[Directory structure to add illustration for music player]

Of course all the audio banks and all that must also be added into it.

Flavourization​

Some changes are coming to the Flavourization system. For the uninitiated, this is what separates the Petty-King from the Duke, the Emperor from Basileus, and the Divine Empress from Empress-Bishop. The big thing of note from before is that we’re encapsulating previous true/false flags in a container to collect them all. This is to improve legibility when new rules are added. Let’s look at the full structure of supported members.

image_28.png

[Complete structure of the flavourization, minus the detailing documentation]

This entire structure was undocumented previously, so all modders had to go on was how we had previously used it. An up to date .info file on the structures will be coming with Roads to Power so you can make your own, flavourful modifications to titles, names and the like. As of Roads to Power, naming conventions of characters with their titles (Emperor Chad to Holy Emperor Chad), title tier names (duchy to petty-kingdom) and domicile names (Estate to Family Holding) are supported.

As an example:

image_29.png

[Example flavourization entry for Badass Queen]

An interesting thing we discovered while adding features to the Flavourization system was: we already supported looking for character flags. It was just never documented. Our designers were enthusiastic about this revelation. Our programmers were… not so enthusiastic about the designer’s enthusiasm:

image_30.png

[Slack thread on Flavourization changes and discoveries]

Fair warning to our modders: the Flavourization system can get very expensive to do in terms of execution, so as much as I know better than to say this but – use it responsibly.



Achievements​

Hello! Rageair here with a preview of the Achievements coming with Roads to Power! I’ll start off with the easy ones, getting harder as we go down the list…

image_31.png

As mentioned in a previous Dev Diary we have Historical Characters such as Dante or Fibonacci spawning across the map. If you get one of them to appear in your realm while owning Roads to Power, you will have the option to set out on an adventure as them!

image_32.png

Take care of the people in your camp and this one should come rather easily! It’s not entirely trivial to get people to join your camp in the first place, though…

image_33.png

A callback to an old way to play the game, harkening back to the CK2 days (there were several YouTube series with this gimmick!) - switching which character you played every time you died. Now this is supported by the game, making it easier than ever!

image_34.png

Now we’re getting into the intermediate difficulty achievements. This one can happen naturally, but a fun thing to try is by playing Harold in the 1066 invasion of England, and then returning to reclaim the crown from William!

image_34-1.png

Quite straightforward - create a large realm, then adopt the new government form!

image_35.png

Deceptively hard seeing as there are a lot of buildings to construct in your Estate!

image_36.png

Buddy up with the emperor and then smite your enemies with his permission! You will probably find a lot of enemies while playing in Byzantium, so you should be motivated to pursue this.

image_37.png

If you’re really chummy with the emperor you might be named co-emperor, and as a co-emperor you can demand a larger share of the realm to rule as your own…

image_38.png

This achievement is based on history; the Palaiologos dynasty became the longest-ruling dynasty in Byzantine history after having served faithfully for a long time.

image_39.png

A fun challenge! Save up a lot of gold in order to weasel your way into becoming a noble family (hint: this is easier to do if you adopt Byzantium's State Faith), and then use your influence to claim the throne, good luck!

image_40.png

Time for the harder achievements - if you follow the story of the historical founder of the assassins it will culminate with the dissolution of an empire (historically the seljuks, but you can take him anywhere!)

image_41.png

Playing as El Cid you will have plenty of choice; this achievement is unlocked by following his historical path.

image_42.png

Saladin starts out as a Conqueror, so this is a tall feat to pull off. You have a few years to prepare for his invasion as he tends to go for central arabia before holy warring Jerusalem.

image_43.png

If it’s not broken, don’t fix it! Having a turkic-dominated islamic administrative empire is a fun challenge to pursue, especially seeing how Byzantium still can pack quite a punch despite having lost a lot of territories to you in the 1178 bookmark.

image_44.png

A natural continuation of the venerable ‘Rags to Riches’ achievement from the base game!

image_45.png

Georgia had plans on holy warring for these territories, but in history this plan didn’t come to fruition - an interesting and plausible alternative history scenario to pursue!

image_46.png

You have to work hard in climbing the political ladder to achieve the position of dominant family! Try putting as many family members on important positions as you can!

image_47.png

In 1178 Byzantium is at a low point, making it a fun challenge to not only survive, but thrive!

image_48.png

Perfect achievement to pursue in combination with Chaos is a Ladder.

image_49.png

If you wish to pursue this I recommend the 1178 bookmark, as it’s very likely for this to happen around that time.



That's all we have for this week; come back next Tuesday as we dive into the details behind the new Scheme rework coming in Roads to Power!
 
  • 85Like
  • 43Love
  • 9
  • 2
Reactions:
Any new Barbershop poses? That sword and shield look cool and I love to take pictures of my characters in the barbershop.
Here is the list of upcoming new poses:
  • Incapable
  • Menacing
  • Threatening
  • Interested (two versions)
  • Prayer
  • Thinking with sceptre
  • New love animation
  • Storyteller
  • Idle bow
  • A new shocked animation, previous shock is now called stunned
  • New marshal prop variations: Marshal with random weapon, marshal with axe, marshal with dagger, marshal with mace, marshal with shield
  • Acknowledging
  • Betting
  • Bribing
  • Debating
  • Obsequious bow
  • Scepter
  • Stay back
  • Inspect weapon
  • Passive with shield
  • Waving from horseback
  • Riding chariot
  • Riding chariot while happy
  • Riding chariot while shocked
  • Riding chariot with horses
  • Riding chariot while happy with horses
  • Riding chariot while shocked with horses
 
  • 15Love
  • 13Like
  • 12
Reactions:
And this just got mentioned in passing?! It's a great QoL improvement! It's been really annoying having to micro when Armies arrived in order to get the Commander I wanted, and then sometimes you'd get an inferior Commander from an Ally anyway. I'm glad that will be gone. Perhaps the CK3 team have seriously underrated how much of an improvement this will be! It's a great example of why Personal Dev Time can deliver immediate wins for players, in addition to the career development benefits.

Thank you for your kind words.

It was surprisingly difficult to make it work well - we wouldn't have approved such a rework during normal production time, if it's not tied to some of the expansion features. Because previous version, although sometimes frustrating, still works well enough and it very predictable. Previous version had quite interesting quirks - like some situational issues were present at start of combat, and kept affecting advantage even when condition no longer applied. For example, you may start battle with holy warrior, get your bonus, then commander dies in battle, new one take its place - old combat will still think you have holy warrior advantage. Not it's fixed

Some things will still affect combat for the entire duration - if you start out of supplies, or bankrupt, or in winter - those advantage modifiers will remain even if weather changes, you get some money etc, we decided it's good to keep those. While some will become situational - if your opponent's army owner switches faith mid-battle, and your holy warriors stops working, it may cause a commander to switch
 
  • 12Like
  • 10
  • 9Love
Reactions:
Would it be possible for us to get the script_docs for this update (effects.log, triggers.log, etc.) please as was done for the ToTo modding dev diary?
You're in luck!
 

Attachments

  • custom_localization.log
    544,3 KB · Views: 0
  • effects.log
    424,4 KB · Views: 0
  • event_scopes.log
    6,4 KB · Views: 0
  • event_targets.log
    35,4 KB · Views: 0
  • modifiers.log
    31,4 KB · Views: 0
  • on_actions.log
    58,8 KB · Views: 0
  • triggers.log
    285,6 KB · Views: 0
  • 13Like
  • 13Love
  • 5
Reactions:
You've really outdone yourselves PDX Devs..... the QoL changes and mod support you've provided alongside the upcoming DLC wouldve overshadowed the actual expansion content if RotP wasn't a master piece in the making.


This should be the new standard when it comes to major expansion updates :^)
 
  • 10Like
Reactions:
Here is the list of upcoming new poses:
  • Incapable
  • Menacing
  • Threatening
  • Interested (two versions)
  • Prayer
  • Thinking with sceptre
  • New love animation
  • Storyteller
  • Idle bow
  • A new shocked animation, previous shock is now called stunned
  • New marshal prop variations: Marshal with random weapon, marshal with axe, marshal with dagger, marshal with mace, marshal with shield
  • Acknowledging
  • Betting
  • Bribing
  • Debating
  • Obsequious bow
  • Scepter
  • Stay back
  • Inspect weapon
  • Passive with shield
  • Waving from horseback
  • Riding chariot
  • Riding chariot while happy
  • Riding chariot while shocked
  • Riding chariot with horses
  • Riding chariot while happy with horses
  • Riding chariot while shocked with horses
oh cool, I'll have to check them out :) I do have another question too. I'm always mixing and matching clothes in the barbershop any chance that can save a few combos for different characters? So I could switch clothing sets easily between something like war and court. That's a big reason why I love to take photos in the barbershop is making different looks for my characters.

Thanks for the answer about the poses :)
 
  • 3Like
  • 1
Reactions:
Good DD. Thanks for sharing the details.
 
  • 3Like
Reactions:
if your opponent's army owner switches faith mid-battle, and your holy warriors stops working, it may cause a commander to switch
Now that's a situation I'd love to see dramatized.

"Oh no, our skirmishers got driven off and the line is wavering. Quick, in between arrow volleys, furl up our holy banners and foist up a copy of what they've got. Yeah that's right, we're good Catholics now! Hah, I see their zealot commander over there getting benched and some mediocrity taking his place. Now let's get'em!"
 
  • 7Haha
Reactions:
Custom Messages ARE HUGE for me!

As someone that has limited time to play, I find that I often abandon campaigns simply because too much real life time has passed between sessions and I forgot what I was trying to do or why certain things had happened, which made me lose connection to the story that was happening around me. Now I can add a bunch of reminders for myself for my next session. THANK YOU! This is likely to incredibly increase my CK3 time.
 
  • 5Like
  • 4
  • 1Love
Reactions:
Custom Messages ARE HUGE for me!

As someone that has limited time to play, I find that I often abandon campaigns simply because too much real life time has passed between sessions and I forgot what I was trying to do or why certain things had happened, which made me lose connection to the story that was happening around me. Now I can add a bunch of reminders for myself for my next session. THANK YOU! This is likely to incredibly increase my CK3 time.
Speaking of Custom Messages, will I be able to get Messages whenever a Family Member in my Court comes of age? Or, failing that, whenever a child living in my Court comes of Age?
 
  • 3
  • 2Like
Reactions:
I always wanted to have regiment modding! Now I can continue to develop my total conversion mod!

I wish I could write something like this
JavaScript:
var mother_in_law = event.scope.self.mother;
var spouse = event.scope.spouse;
if (spouse.faith == Faith.find("catholic")) {
  spouse.piety += 100 + Math.sqrt(mother_in_law.prestige);
}

Your current script language evolves chaotically, is too verbose, is hard to parse using traditional parsers used for big languages (C++, JavaScript, Rust) and, IMO, is the main source of bugs in the game:
common/genes/00_clothes.txt file had two missing } for ages! Also I saw somewhere a value like this: 10'.

I even tried to parse all 20000+ game files and create transpiler from Typescript to Paradox language since Typescript has first-class support in all major code editors.

You may say that current language is easy for non-programmers but I think that if you can write this
Perl:
if = {
  limit = {
    $TARGET$.prestige > 5000
  }
  $TARGET$ = {
    add_piety = -1000
  }
}
then you can write this
JavaScript:
if (target.prestige > 5000) {
  target.piety -= 1000
}
 
Last edited:
  • 4
  • 2Love
  • 1Like
  • 1
Reactions:
I'm guessing this is a tall order. But one modding thing I'd love to see for localizations is an ability to designate a language as the fallback. Meaning any other language missing a localization would use the fallbacks instead of erroring out

I have multiple mods at different levels of translation in different languages based on the generous translations others have done. But it does mean that if I have to fix, for example, a spelling mistake, I have to make sure to copy it to all languages that still use a copy of the English loc without accidentally copying over any that are translated
 
  • 3
  • 2
  • 1Like
Reactions:
First of all, very nice on getting the AI to consider military power vs strength. My question to the developers is "Has the UI been updated to incorporate Military Power for the player?"

Because in the current version of the game, military strength is also what the player sees when attacking the AI or being attacked by the AI. The player has to do some calculations in their head about how many MoA the AI has and doing a gut check on if the strength meter is accurate or not.

It would be very nice if the player also just sees military power (the same stats that the AI will now calculate and see) to simplify decision-making.
 
  • 2
  • 1Like
  • 1Love
  • 1
Reactions:
First of all, very nice on getting the AI to consider military power vs strength. My question to the developers is "Has the UI been updated to incorporate Military Power for the player?"

Because in the current version of the game, military strength is also what the player sees when attacking the AI or being attacked by the AI. The player has to do some calculations in their head about how many MoA the AI has and doing a gut check on if the strength meter is accurate or not.

It would be very nice if the player also just sees military power (the same stats that the AI will now calculate and see) to simplify decision-making.
Good call out. I would add that, perhaps even more important, is that the UI for battle win estimation (the one you get when two armies are about to fight) uses the new values. That estimate is currently incredibly misleading.
 
  • 2
  • 2
Reactions:
First of all, very nice on getting the AI to consider military power vs strength. My question to the developers is "Has the UI been updated to incorporate Military Power for the player?"

Because in the current version of the game, military strength is also what the player sees when attacking the AI or being attacked by the AI. The player has to do some calculations in their head about how many MoA the AI has and doing a gut check on if the strength meter is accurate or not.

It would be very nice if the player also just sees military power (the same stats that the AI will now calculate and see) to simplify decision-making.
It has not. These changes are not an accurate representation of what the actual military power is, merely a guestimate in the same manner the player might do it by looking at a character's men-at-arms and knights. This is because we don't want the AI to operate on perfect information. It will not account for any modifiers affecting the men-at-arms, just the base stats. The practical reason for this is performance. Getting and doing calculations on the base stats is fairly simple, but looking up all involved modifiers is a significant operation to check for every tick for every regiment for every war.

As an example:

1725983974947.png


This is the same information the AI has access to when making those calculations. We are not making any changes to this with Roads to Power in this regard.

Good call out. I would add that, perhaps even more important, is that the UI for battle win estimation (the one you get when two armies are about to fight) uses the new values. That estimate is currently incredibly misleading.
The combat prediction map icon was already taking this into account. There was a bug there though, which was unrelated to this, that has been fixed now where it wouldn't count allies in the same province.
 
  • 22
  • 2Like
  • 1Love
Reactions:
I like the change to the way the AI calculates military power. Should result in fewer suicidal war declarations.
Following on that, will the AI now focus more on building-up MAAs? Right now, one of the main issues that can often make the game too easy for experienced players is the AI relying too heavily on Levies.
 
  • 6Like
  • 2
  • 1
Reactions: