• 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.
Hi everyone, welcome to another dev diary! Last week we talked about changes to frontlines (both UI & backend and AI) and today I want to talk about some of the other fixes and changes we have been up to.

1.7 ‘Hydra’ is a chance for us to rewrite and improve some pesky systems and to step up and go 64-bit, so this diary is going to get a little technical :)

64-bit
1.6.2 will be the last 32-bit build of HOI4 and we will be leaving it (and older as normal) on steam for those who still want to access it (and make sure to mark the build). We also will not be converting any of the old versions to 64-bit. It would simply be too much work. Because of this we have decided to up the big decimal on our version number to 1.7. 1.7 ‘Hydra’ will be fully 64-bit supported on Linux, Mac and Windows and it has been a big undertaking. There are many reasons for this change. Some platforms like Mac are phasing out 32-bit quite aggressively and we don’t want to end up with people not being able to play on there. 64-bit lets us use newer compiler features and a lot more possibilities code wise in the future. It is also about time, because it felt like a lot of the industry did this over 5 years ago :D

As a player you won’t notice a huge difference. We haven’t seen any big performance improvements for example, although I wouldn’t say that it’s impossible some areas might improve as our investigations have been pretty shallow. 64-bit is tricky in that on one hand we get access to the possibility of more optimized code, CPU registers etc, but it also takes up more memory, and memory is often highly impactful on speed too. We see it as an investment into the future where we know we can start taking advantage of things now that the foundation is in and make it easier for us to work.

We have already seen some of this internally where we during this work have been able to replace a lot of basic code structures dating back to the Year of our Lord 2003 :)

Convoy system
The old code system keeping track of your favourite little boats has long plagued development, and after 1.6, when we still had some issues, we decided it was simply best to take it out back and shoot it. 1.7 comes with a new system rewritten from scratch. The old convoy system was operating in a way where everyone could control it, and by association, everyone could also break it at any time. It would also swap convoys in between the country’s supply and the assignments at every single tick, swapping them around all the time, and convoys getting lost because there was no sense of ownership and control over the convoys. It was a nightmare.

The new system is a centralized system where each country has one instance of a class that has full ownership and control of convoys, and any other gameplay code that needs convoys can request them from this system but never have real control over them. This “magically” fixes bugs with convoys disappearing from the game because it’s not possible to write code like that anymore. It’s stability by design along with the other great and exciting stability changes that we are bringing to you with this patch.


Naval Balance Changes
We have been looking at convoy escorting, subs, detection and raiding and making improvements:
  • Subs can now fire also while withdrawing
    • Convoy escort missions were too binary. Either you have protected the convoys in time or not. Arriving on time provided too much of an advantage to the escort and thus made sub raiding less viable. Subs will now get an extra volley or two in most combats, making raiding with high-quality subs against low-quality escorts more viable.
  • We increased submarine detection chance from passive detection (hi bitmode) and lowered detection chance from firing torpedos. Detection chance from passive sweeps now scales parabolically so that large differences in detection and visibility will be much more pronounced.
  • We gave carriers passive sub detection and gave them a detection increase in doctrines. This makes them more viable in their historical roles in the Atlantic.
  • We also increased detection values on some later radars and a bit on sonar, to make detecting subs a bit easier.
We have also been looking at various issues related to convoys and how they defend themselves against naval bombers. There were many different problems:
  • Unit transports died too easily vs naval bombers, this was extra bad for the AI which generally suffered more to this than a player would.
  • In small naval bombers vs transports as above, we also had way too high casualties for the planes
  • Because convoys are not “real” units they would heal up after battle, so unless you sunk them there was no real damage to the enemy.
To deal with this, we have made several changes:
  • Troop transports get a special defensive boost in the particular case of being attacked directly by naval bombers
  • The anti-air formula for ships shooting back has changed so that partial damage is taken into account. We now essentially roll a dice for partial damage allowing it to kill planes. Before, weak ships like convoys that got hit a lot had much to big an impact, and early naval bombers didn't really deliver. This should be a lot nicer now.
  • At the end of battles we add up all the damaged convoys and for a fraction of them we roll a dice based on the damage to see if they sunk from that damage. The kills get attributed to the last to strike them during the regular battle.

When it comes to regular combat we wanted to help out carriers and capital ships a bit and we felt the more realistic way of doing that was to give them a time at the start of the combat when they are the only ones active. Carriers and aircraft are active straight away. Some ticks later capital ships and subs get to fire and last screens. This gives a bit of a boost to those bigger ships and represents their longer ranged weapons better.

Script-Side Performance Improvements
1.6 came with a number of new script features to improve performance for targeted decisions. Previously these decisions would check every country in the world every day, and with some of the more complex triggers that could amount to quite a bit of number crunching. With the new features, we can pre-restrict the list of targets to reduce the necessary number of checks. Unfortunately, the new script features came too late in development for us to utilize these features in the initial release and other bugs took priority.

Thankfully, a member of the community by the name of Antoni Baum (aka “Yard1”) did make the effort to go through our script and fix all the places where the new features would make a difference (as well as a few triggers where a small reordering of script checks resulted in better performance). This work has been merged into 1.7 with permission. While it is difficult to measure the immediate performance effect of these changes, we saw a performance improvement of about 5-10% depending on the overall gamestate, number of wars etc.

We planned to put 1.7 out as an opt-in beta tonight but we hit some snags (which is why this diary is a bit late ;)) but we think we should have the open beta tomorrow with patchlog for those brave enough to help us test it :)

See you again next week!
 
In the future, will you update the TfV trees to feel more fleshed out with the new mechanics like command power and force limit for special forces?
 
In the future, will you update the TfV trees to feel more fleshed out with the new mechanics like command power and force limit for special forces?

We have loosely discussed what to do once we are through the majors we want to improve and it would be nice to be able to sexy up those trees a bit with some of the new features too. But its not something we got concrete plans for yet
 
On the topic of convoys, could you make sure this windows shows numbers that make sense? (numbers don't add up, why twice the same flag, ...) + add a scrollbar in the filters
index.php
 
Convoy system
The old code system keeping track of your favourite little boats has long plagued development, and after 1.6, when we still had some issues, we decided it was simply best to take it out back and shoot it. 1.7 comes with a new system rewritten from scratch. The old convoy system was operating in a way where everyone could control it, and by association, everyone could also break it at any time. It would also swap convoys in between the country’s supply and the assignments at every single tick, swapping them around all the time, and convoys getting lost because there was no sense of ownership and control over the convoys. It was a nightmare.

The new system is a centralized system where each country has one instance of a class that has full ownership and control of convoys, and any other gameplay code that needs convoys can request them from this system but never have real control over them. This “magically” fixes bugs with convoys disappearing from the game because it’s not possible to write code like that anymore. It’s stability by design along with the other great and exciting stability changes that we are bringing to you with this patch.

We have also been looking at various issues related to convoys and how they defend themselves against naval bombers. There were many different problems:
  • Unit transports died too easily vs naval bombers, this was extra bad for the AI which generally suffered more to this than a player would.
  • In small naval bombers vs transports as above, we also had way too high casualties for the planes
  • Because convoys are not “real” units they would heal up after battle, so unless you sunk them there was no real damage to the enemy.
To deal with this, we have made several changes:
  • Troop transports get a special defensive boost in the particular case of being attacked directly by naval bombers
  • The anti-air formula for ships shooting back has changed so that partial damage is taken into account. We now essentially roll a dice for partial damage allowing it to kill planes. Before, weak ships like convoys that got hit a lot had much to big an impact, and early naval bombers didn't really deliver. This should be a lot nicer now.
  • At the end of battles we add up all the damaged convoys and for a fraction of them we roll a dice based on the damage to see if they sunk from that damage. The kills get attributed to the last to strike them during the regular battle.
EDIT: Wonderful. Convoys have always been an issue in HoI4. I'm glad these issues will be fixed.
 
Will this fix the issue where convoys shred through hundreds of naval bombers in weeks? Will it fix the issue that convoys instantly repair after battle, making naval strikes against them weirdly binary?
I specifically wrote about those in the diary. answer is yes it should.
 
Good! Hope all goes well with bug fixing and historical gameplay tuning! (Hope you are still considering the fading of colour from a dominion to an integrated puppet which would have a similar country colour to their overlord)
 
Any plans to make Carrier CAS more viable?
I have been thinking of doing something where CAS is better vs armored targets compared to NAV to give them both a role, but that would require quite a lot of changes to both plane combat and naval combat.