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

Developer Diary | Tech

Hey everyone! I’m Plankie and one of the programmers on Hearts of Iron. Large parts of my work consists of feature work, bug fixing, and general game improvements. My absolute favorite part of game development is working with the AI and trying to make it more fun and interesting and immersive to play with. So, in this week’s dev diary I’ll focus on showing how the AI interacts with one of our major new features: The International Market

On a very high level, there are a few things that the AI needs to be able to do in order to utilize the market:
  • Gain market access so that we can see what other countries have put up for sale
  • Sell equipment to others, i.e. putting equipment up for sale on the market
  • Buy equipment from others, i.e. decide what we want to buy and how much
It also needs a surplus of equipment to sell, but fortunately the AI already knows how to produce equipment, so that just needs a little bit of tweaking!

The basis of the AI’s behavior on the International Market is the surplus/deficit it has of different types of equipment on the production stockpile (you know that list of equipment you see under the logistics tab). In general, it will try to buy equipment it has a deficit of and will offer to sell equipment it has a surplus of. This base behavior is then modified by other factors, such as AI strategies.

image2.png

The familiar logistics tab showing what equipment is available on the production stockpile. The right-most number showing surplus/deficit is an important component of how the AI interacts with the International Market.

Putting things up for sale
Before anyone can buy equipment from the AI, it obviously needs to put equipment up for sale. Just like for a human player, it is only possible for the AI to add equipment to the market if it has a surplus of it. However, just because there is a surplus doesn’t mean that it’s a good idea to put all of that surplus up for sale. And if the surplus disappears and we start lacking equipment again, the AI should take the equipment off the market so it can use it itself instead. We basically want something like the following behavior:
  • If we need the equipment ourselves, don’t sell it
  • If we have a lot of surplus equipment, start selling some of it, but not all of it

The problem is that we need to define how much “a lot” is so we know when to start putting the things up for sale. This could depend a lot on what type of equipment it is and what situation our country is in. We could do something simple and say that “if we have a surplus larger than 200, then start selling”, but 200 infantry equipment and 200 strategic bombers are on completely different scales so using absolute numbers is not a good idea. But manually having to define the numbers for different equipment types and situations and countries also means a lot of work and balancing, so we at least want some good default behavior with a possibility of tweaking it.

In one of the first iterations of the market AI, we just made it put a certain ratio (say 20 %) of its surplus equipment up for sale. Despite the simple approach it worked pretty well, and since it’s simple it’s also easy to understand and debug. It had some shortcomings so we modified it a little bit, but it’s still the basis of how the AI puts things up for sale. Every market AI update, it calculates its total surplus of every equipment type (surplus on production stockpile + anything on the market stockpile) and makes sure that the ratio is correct.

This means that if the AI needs the equipment themselves, they have a total surplus of zero, so they put 0.2*0 = 0 equipment up for sale, i.e. they won’t sell it. They will also pull back anything already up for sale so they can use it themselves. And if they have a total surplus of 100 equipment, it will put 0.2*100 = 20 equipment up for sale (assuming a ratio of 20 %). So the more surplus it has the more it tries to sell, while still retaining a buffer in case things go sour and it starts needing the equipment itself. It also means that we don’t need to specify an absolute number for the threshold, it adapts itself to the situation.

But as mentioned, the approach had some shortcomings. The AI had a tendency to “trickle in” equipment on the market, trying to sell 1 rifle as soon as it had a surplus of 5 rifles, etc, and this felt very artificial and not very human-like. This led us to modify the algorithm so that the AI thinks about the equipment in batches instead of singular weapons. The size of a batch is roughly how much equipment can be delivered in one month using one factory for payment, so instead of seeing the AI try to sell 3 rifles, it now waits until it reaches around 350 rifles (one “batch” of surplus) before putting it up on the market.

At this point we had a reasonable default behavior for how the AI puts equipment up for sale, but we still needed the capability of tweaking it. This is done through scripted AI strategies! If you don’t know what AI strategies are in HoI4, it’s essentially a way that content designers and modders can tweak the AI behavior through script. With AI strategies, it’s possible to modify things like
  • how much equipment is needed before considering it as a surplus to sell on the market
  • the ratio of equipment the AI wants to put on the market
  • the min and max amount of equipment to put up for sale (overriding the default batch size)

With the AI strategies, it’s possible to for example prevent minor countries from selling all their trains (which aren’t used much before the war, so they are technically a surplus). It is possible to script Germany to not sell their huge surplus of weapons when preparing for war (fun fact: the German AI isn’t really aware that its going to end up in a big war until just a few months before the war breaks out, so without different scripted AI strategies they wouldn’t prepare enough for it). Needless to say, the AI strategies are a very useful tool for the designers!


Buying equipment
If the AI is lacking some type of equipment, it will consider buying it from the International Market (assuming there is someone offering to sell it). First of all it decides how many civilian factories it is willing to spend on purchasing equipment. Second, it looks at all the available equipment up for sale and determines if there is anything there that matches what it needs. After that, if the AI has factories to spend and there is equipment it wants to buy, it’s just a matter of deciding what to buy first and how much of it. This is done by computing a score for each potential deal, a score which takes into account:
  • Construction cost of needed equipment - we prefer to fix our biggest needs first
  • How good the equipment is - we prefer newer equipment with better stats
  • How expensive the equipment is - we prefer cheaper stuff
  • Applicable subsidies - if we have any subsidies we prefer to use them
  • Scripted AI weight - we want to make the content designers and modders happy

image4.png

Example of a debug info window for the market AI. Here, the US AI has a deficit of 294 tactical bombers and almost 19k infantry equipment. It would prefer to buy bombers since the value of the lacking bombers is higher than the value of the lacking infantry equipment, but for the moment only British infantry rifles are up for sale, so the Americans starts buying that instead.

So, now we know WHAT we want to purchase, but what about HOW MUCH? If we asked to buy 19k infantry equipment but only were prepared to pay with one factory, we could end up with a deal that would go on for years. In order to circumvent problems like these, the AI tries to create contracts that are neither too small nor too large by tweaking the amount of equipment and assigned factories until the completion time is acceptable. At the time of writing (and subject to change), the AI avoids purchasing more equipment than what can be delivered in ca 10 months. It also uses the aforementioned “batch size” as a minimum limit of how much equipment to buy.

image1.png

Paying off 19k infantry equipment with just one civilian factory takes a couple of years. Long-term weapon deals sound better before you do the math…

Of course there are also AI strategies for affecting how the AI purchases equipment. These are values that either go into the scoring calculation (affecting what the AI prefers to buy and from whom if there are multiple alternatives), or that tweak things like the threshold of when it wants to buy equipment of a certain type.

Establishing market access
Now we know how the AI puts equipment up for sale, and we know how they determine what they want to buy. But all that is for nothing unless the AI has access to another country’s market, so of course it needs some way of gaining market access.

This is a relatively simple process since market access is nothing more complicated than a normal diplomatic relation, like docking rights or a non-aggression pact. Naturally, the AI is able to respond to requests for market access if you ask them, but it would be a pretty boring feature if they never took the initiative themselves. The exact factors that go into the AI’s desire to have market access with another country are of course subject to change as we balance the game, but at the time of writing the most important factors are:
  • Diplomatic opinion - I really like this since I think opinion is underused in HoI4. It makes it possible for you to achieve market access with a country as long as you are prepared to spend some sweet PP to maintain it ;)
  • Trade influence
  • “Ideological” opinion - Some ideologies like other ideologies more or less
  • Competing factions - If the two countries are in different factions

image3.png

The Soviet Union is really not interested in opening their market to those British capitalists.

The results of this is that you tend to see something similar to trade blocs, groups of countries that trade with each other (often along faction or ideological lines). The boundaries between the trade blocs are soft, however, and it’s often possible to convince countries to trade with you by raising their opinion of you.

Producing surplus equipment
Finally, since the International Market revolves around surplus equipment, it wouldn’t be much fun if there was no equipment to trade with. This ties into some changes to how the AI produces equipment, especially when they have already fulfilled all their own needs.

As some of you may have noticed, since BBA a lot of smaller countries have been bad at fully utilizing their military factories. As soon as they have fulfilled all their equipment needs (including having a buffer for any armies in the field), they stop using their military factories. This behavior was not introduced with BBA, but because of some other changes to how the AI recruits armies the problem became much more visible. The reason they stop producing equipment is because they technically don’t need any more equipment, and if you don’t have any equipment you need to produce… well, they simply stop producing it. As human players, we know that a war is looming on the horizon and there is no reason to stop production just because “we have enough”. It’s better to be prepared with a larger stockpile. And with the International Market making its entry, we can suddenly satisfy our inner capitalists and earn something by selling our surplus equipment.

So, now, when the AI gets to the point where they have enough equipment to fulfill their own needs, they start transitioning into a “surplus production state”. In this state, they once again use AI strategies to determine what to produce. This makes it possible to script countries to produce different types of surplus equipment, which in turn would allow for more “equipment diversity” on the market place and a larger selection of equipment to choose from.


Summary
We are nearing the end of this dev diary, so let’s quickly sum it up!

We did a little deep dive into the AI for the new International Market feature, and got to see the logic for how it puts surplus equipment up for sale and how it constructs purchase requests. In addition, we looked at the factors affecting how the AI opens up their market to other countries, and finally, how surplus equipment is produced when all other needs are fulfilled.

I hope you found it interesting to see some of the inner workings of the market AI, and I definitely hope you will enjoy playing the game with your new trade partners! In next week’s dev diary you will get to join some of our content designers for a closer look at how to mod Hearts of Iron! Stay tuned!
 
  • 60Like
  • 15Love
  • 6
  • 4
  • 2
Reactions:
Well the guns are an abstraction it's the complete set of infantry equipment including support weapons, uniforms etc. Plus the game doesn't include ammo, so that also factors in there.
Of course and the game even cuts the needed amount of those "guns+other stuff" by the factor 10 (so 10.000 soldiers need only 1000), but the amount of convoys here for transporting a mere 100 still seems steep. But I'm just assuming that is work-in-progress and subject to a final balancing.
 
I understand that there is nothing to change now. But I have a question: when will we be given the opportunity to change captured and lend-lease equipment? The Germans built their own base of captured tanks. The Australians also remade British aircraft for themselves. Sometimes captured equipment is simply worse than analogues.
 
I understand that there is nothing to change now. But I have a question: when will we be given the opportunity to change captured and lend-lease equipment? The Germans built their own base of captured tanks. The Australians also remade British aircraft for themselves. Sometimes captured equipment is simply worse than analogues.
You can already convert captured or land-leased tanks/planes into your own models - a conversion is possible, as long the chassis/hull size and generation is the same. Whether it's worth the cost depends on which modules you add/remove/change and if you have the cost reduction techs for conversions. What is conceded a bit annyoing is that you never really know how the foreign vehicle/plan looks in the designer, so guesswork, trial/error or cheating (switching country and examining the foreign design) is necessary to find real good conversion opportunities.
 
  • 4Like
  • 1
Reactions:
Do you think base civilian fac build speed should be shortened since the increased use now or do u think the consumer goods factor changes will be enough? With spies/buying equipment will minors feel a lack of civs?
 
The equipment will be magically delivered/teleported or will there be the possibility of intercepting stuff with convoy warfare/trade interdiction?
this dev diary is about the AI behind the feature we will be talking more about the international market feature in a future dev diary
 
  • 10
  • 4Like
  • 1
Reactions:
What about Poland and other countries with isolationist/embargoed economies? How does that affect them getting to the international market or trading with other countries?
 
  • 4Like
  • 1
Reactions:
this is amazing. now that we're getting a built in arms market, will the Vickers 6-ton B finally be fixed? it currently suffers from a bug where the design is given a machinegun turret despite no turret being defined in England's history file on the design. it's missing a line of code to dentoe the special slot as empty, and thus for some reason defaults to the special slot of the design above it (the vickers variant with the MG turret).


Will embargoes, certain national spirits (Bulgarian and Hungarian arms restrictions), justifying/has wargoals, and availability of convoys or trains affect the imports?

and will license production be looked at in this update? its currently almost impossible to license anything that isnt horribly obsolete from the AI.
 
  • 4
Reactions:
  • 3Like
  • 1
Reactions:
this is amazing. now that we're getting a built in arms market, will the Vickers 6-ton B finally be fixed? it currently suffers from a bug where the design is given a machinegun turret despite no turret being defined in England's history file on the design. it's missing a line of code to dentoe the special slot as empty, and thus for some reason defaults to the special slot of the design above it (the vickers variant with the MG turret).


Will embargoes, certain national spirits (Bulgarian and Hungarian arms restrictions), justifying/has wargoals, and availability of convoys or trains affect the imports?
this dev diary is about the AI behind the feature we will be talking more about the international market feature in a future dev diary
 
  • 5
  • 1Like
  • 1
Reactions:
In the past, I used to produce shoddy tanks and shoddy planes while playing HOI4, and I would gift them to both the Soviet Union and Germany, causing them to expend millions of manpower fighting each other.

In the future, I will produce extremely expensive shoddy tanks and shoddy planes while playing the game, and I will sell them to the Soviet Union and Germany. This way, not only will they continue to expend millions of manpower fighting each other, but they will also gift me a lot of civilian factories!
 
  • 8Haha
  • 2Love
  • 1
Reactions:
9 convoys for 120 units of guns? in real life you can deliver 120 units of guns with a truck or smaller vehicle but 9 ships for 120 units of guns sounds very unrealistic
Couple of problems with that.
1) Infantry Equipment is not just the guns. It is also the ammo, and all the other kit a soldier would be issued that doesn't already have a separate equipment type (i.e, Artillery, Anti-Tank, Anti-Air, Support Equipment). So The gun, ammo, uniform, mess kit, first aid kit, grenades, machine guns, mortars, etc.
2) 1 Infantry Equipment is enough for 10 manpower, so basically enough for a typical squad.
 
  • 2
Reactions:
It seems that this new system may allow the AI to manage inventory equipment more efficiently. So, after gifting/selling equipment to the AI, will it modify division compositions based on the surplus of certain equipment? Considering that the summer beta version has made many changes in this area, the release of this DLC is likely to be delayed. However, I don't mind as long as its quality is on par with the NSB DLC.
 
  • 1Like
Reactions:
I have an observation and a question.

The observation is that the AI manages equipment differently from me (and most human players, I suspect)

As this user has already pointed out, it seems immediately clear that this feature is going to run up against a wall which is player behavior and AI behavior not being the same thing. Maybe this has been fixed since I last checked, but if you have ever tag switched in the middle of a game, you know the AI has a tendency to train divisions in a way which from a player's perspective seems somewhat random and inefficient, and often attempting to overproduce units. With an automated equipment system, this might just mean every nation attempts to buy whatever equipment of certain types (like rifles) they can, effectively being a debuff the AI has against players who can use the system more intelligently by only buying things when they recognize the civs can't be used more effectively.

In theory, if for example some goods commonly end up on the market in large amounts by around the same time a player wants to go to war, like 1939ish for Germany, does it make any sense to spend civs on equipment earlier than is absolutely necessary to complete a deal? Civs can produce more civs, so early game civs and mid game civs are not equal in value, and spending civs on anything that isn't more civs earlier is harder to justify. If the AI is just buying whenever they need equipment, will they sabotage their own industry compared to players who buy equipment only when they know they will be at war in a few months? This probably isn't the way this could go wrong, it really depends on what players eventually figure out is the new meta, maybe the opposite or something else will end up being the most effective strategy.

Making use of AI strategies is a good idea for nations like Germany which it's immediately obvious can't fall for any of these traps or risk the health of a playthrough, but does every nation get its own strategy configured for its market needs and plans? Chinese warlord states for example, they seem like they might make themselves victim to this sort of practice. Maybe you could argue this is actually just more realistic or fun and it should be this way, in theory, but from my point of view the AI overall doesn't need to be that much weaker than it is now against players, and as interesting as this system is, players are probably going to find a way to take much better advantage of it than AI if AI is automated like this.

I'm honestly really sketchy on the idea of immediately automating this whole process, unless the devs can manage to replicate actual future player behavior in testing and then design around it, which is going to be really hard, automating this system by just having the AI buy stuff whenever they feel they need to seems prone to everything breaking when the patch goes out (from the player's perspective, the whole system can work fine technically but if it produces behavior players don't like it will be considered broken), and then taking weeks or months to get in a state that is closer to being agreeable. I'm getting flashbacks to EU4's leviathan and players using the concentrate development button to produce 300 development provinces the AI couldn't fathom.
 
  • 1
  • 1
Reactions:
This is going to be an absolute mess, the AI already doesn't know how to properly run it's production, how to build vehicles/ships (and especially how not to waste XP & production time by NOT making 10 minorly changed variant of every vehicle) and regularly lets itself get into gigantic deficits of basic infantry equipment, artillery, now it's going to start selling them?
 
  • 4
  • 2
Reactions: