Information about developments at snowballing problem

Currently viewing this thread:

mexxico

Developer
Concerning this failed test, I am thinking about trying it again, but this time removing the AI troops XP cheat (just to check if this is the main reason because long peace is bad). Does someone know an easy way to remove it?

Here is code block giving passive xp :
GSwyT.png

Possible side effect :
If you close passive xp gaining during peace time then factions can stuck at some strength limit and maybe they continue paying tribute to stronger factions for long years or even they have no tribute payment they do not feel they are strong enough and they do not declare war to other kingdoms. Currently in peace time they continue upgrading troops and being stronger so at some point they do not want to continue paying tribute (because they are strong enough) and they declare war to kingdom collecting tribute from them.

Everything is connected.

One possible development area related :
I can stop AI to upgrade their troops beyond tier-x if they are having financial problems.

Actually @Bannerman Man post an idea to clan member micromamangement post. He wanted to limit parties at certain wages. For example he wanted to limit a party in his clan at X daily wage payment with a slider controlling X value. If we have that kind of UI for player we can make AI clans to use this system also. So if a clan is having problems in payments they can limit its clan's expenses at a certain limit. This will save clans to going bankrupt. However I think best way of doing this can be having an option like this : "do not upgrade your troops beyond tier-X" this can suit better than limiting wages. Because 20 x tier-5 payment is equal to 200 x tier-1 payment. And if we limit a party at X payment it can stay with less number of high tier troops.
 
Last edited:
What do you want?
I am asking how to make edit(preferably step by step) - not for the values.I have no idea how to do it or when to even look for it.
I will be grateful for instructions.
Also if you know how to increase/decrease upkeep level separate from unit Level it would be nice.



Yes.
SPNPCCharacters, Bandits and SPSpecialcharacters.
Lowering bandits Tiers probably also helped peasants because now they can face them head. I also lowered mercenary troops by 2 tiers because they are overvalued compared to their stats and equipment.
Here are files


Use DnSpy or Visual Basic
Open the talesWorld.campaign.dll

Now you can edit functions/methods and variables/objects. Programmcode is c#. You should know what you are doing/Changing there. Otherwise it will break your game, so make sure to have a copy of that dll
 

Dabos37

Sergeant Knight
Here is code block giving passive xp :
GSwyT.png

Possible side effect :
If you close passive xp gaining during peace time then factions can stuck at some strength limit and maybe they continue paying tribute to stronger factions for long years or even they have no tribute payment they do not feel they are strong enough and they do not declare war to other kingdoms. Currently in peace time they continue upgrading troops and being stronger so at some point they do not want to continue paying tribute (because they are strong enough) and they declare war to kingdom collecting tribute from them.

Everything is connected.

Thank you so much for this! The thing is that I think you have built a pretty solid campaign system, especially the lastest changes to make come backs happen more frequently, etc. I just think that the current numbers could be tweaked a bit.

I am going to try to make several tests these days just for fun and because I want to find some numbers which improve my own game experience (which could be worse for other players). I would like to work around tiers, wages, fiefs income, loot income, war/peace declarations, upgrade XP cost, etc. If I find something really solid after 10 tests or more, I will share the results. Thanks!
 

Rycon Caldestan

Sergeant at Arms
WBVC
Here is code block giving passive xp :
GSwyT.png

Possible side effect :
If you close passive xp gaining during peace time then factions can stuck at some strength limit and maybe they continue paying tribute to stronger factions for long years or even they have no tribute payment they do not feel they are strong enough and they do not declare war to other kingdoms. Currently in peace time they continue upgrading troops and being stronger so at some point they do not want to continue paying tribute (because they are strong enough) and they declare war to kingdom collecting tribute from them.

Everything is connected.

One possible development area related :
I can stop AI to upgrade their troops beyond tier-x if they are having financial problems.

Actually @Bannerman Man post an idea to clan member micromamangement post. He wanted to limit parties at certain wages. For example he wanted to limit a party in his clan at X daily wage payment with a slider controlling X value. If we have that kind of UI for player we can make AI clans to use this system also. So if a clan is having problems in payments they can limit its clan's expenses at a certain limit. This will save clans to going bankrupt. However I think best way of doing this can be having an option like this : "do not upgrade your troops beyond tier-X" this can suit better than limiting wages. Because 20 x tier-5 payment is equal to 200 x tier-1 payment. And if we limit a party at X payment it can stay with less number of high tier troops.
Could we use both?
Troop tier limit AND expense limit?
 
Last edited:

Sarissofoi

Veteran
M&BWBWF&S
What do you want?

Use DnSpy or Visual Basic
Open the talesWorld.campaign.dll

Now you can edit functions/methods and variables/objects. Programmcode is c#. You should know what you are doing/Changing there. Otherwise it will break your game, so make sure to have a copy of that dll
Open the talesWorld.campaign.dll
can't find the file
 

Blood Gryphon

Master Knight
WBVC
Actually @Bannerman Man post an idea to clan member micromamangement post. He wanted to limit parties at certain wages. For example he wanted to limit a party in his clan at X daily wage payment with a slider controlling X value. If we have that kind of UI for player we can make AI clans to use this system also. So if a clan is having problems in payments they can limit its clan's expenses at a certain limit. This will save clans to going bankrupt. However I think best way of doing this can be having an option like this : "do not upgrade your troops beyond tier-X" this can suit better than limiting wages. Because 20 x tier-5 payment is equal to 200 x tier-1 payment. And if we limit a party at X payment it can stay with less number of high tier troops.
That man is full of gold. These changes sound great and will help to curb defection. Safe to assume you want to limit tier and wages (can the player get both as well)? This would actually make the AI behave like the player is, I literally do just that I have a limit based on my avg income and will typically run around with a party of up to tier 3 and as my income grows I will start to upgrade to higher tiers.
 

mexxico

Developer
Yes, this feature can be used by both player and npc clans and it will solve some of existing problems at game. This made me happy too, probably it will add gameplay lots. Now it is time to get approve for this. I hope we can pass this hard step.

Today Bannerlord active players past 20K first time after July by the way. Normally it was in decreasing trend all summer, autumn and december until 1.5.6. SteamDb Bannerlord Link.
 

sniparsexe

Knight at Arms
Yes, this feature can be used by both player and npc clans and it will solve some of existing problems at game. This made me happy too, probably it will add gameplay lots. Now it is time to get approve for this. I hope we can pass this hard step.

Today Bannerlord active players past 20K first time after July by the way. Normally it was in decreasing trend all summer, autumn and december until 1.5.6. SteamDb Bannerlord Link.
naturally, it was already around 16k and you dropped 1.5.7, this can go up to 22k tomorrow or this night
 

Dabos37

Sergeant Knight
Actually @Bannerman Man post an idea to clan member micromamangement post. He wanted to limit parties at certain wages. For example he wanted to limit a party in his clan at X daily wage payment with a slider controlling X value. If we have that kind of UI for player we can make AI clans to use this system also. So if a clan is having problems in payments they can limit its clan's expenses at a certain limit. This will save clans to going bankrupt. However I think best way of doing this can be having an option like this : "do not upgrade your troops beyond tier-X" this can suit better than limiting wages. Because 20 x tier-5 payment is equal to 200 x tier-1 payment. And if we limit a party at X payment it can stay with less number of high tier troops.

I have been making some tests reducing war/peace declarations while nerfing the AI XP cheat to just add XP to T1,T2,T3 units (like Raise the Meek), plus reduced the wages about 30%. Even with these changes, some T5 clans like Calatild's one, were going bankrup after some days at peace. The thing is that AI lords economy depends too much on wars (much more than I could think at the begging), and it is not only due to loot income, it is also about some Kingdom's lords actually need to get defeated to stop paying elite units wages for some time and get some money again (especially these lords in the losing side).

What Bannerman Man suggested for making AI clans stop upgrading troops when clans are below a threshold ( for example, X < 50K denars) would solve this for sure. I also like the idea behind making kingdoms at peace to do not pay for party wages (or pay less money), it could looks unfair because it should not be applied to the player, but it is also unfair to see lords not being able to get caravans, workshops, and not doing manual trading.

Anyway, I am just commenting this in case you want to decrease the current war pace in the future (after doing other more relevant things you commented) which is insanely fast currently.
 
Last edited:

Dabos37

Sergeant Knight
I have been making tests these days and sadly, I did not find anything great for improving snowballing issue by much. I have found some interesting changes and figured out about the most impactful things concerning snowballing though. For example:

- While defections are pretty harmful for snowballing, I have seen campaigns with 60-70 snowballing score where all kingdoms still had initial clans at year 20.
- Increasing peace time is not actually great for snowballing. It just make it slower at the beginning but the result is similar after 20 years. It is good for game though, I prefer a slower pace.
- I think I have found one of the things which increases a lot snowballing: AI XP Cheat. I have modded the cheat in my lastest tests to add experience just for low tier units (like Raise the Meek perk), and while snowballing is still a thing and Khuzaits are still OP, this is probably the better change I have tested. First, because it helps on making economy better for some lords if they do not have to pay for huge wages, and second, because Khuzaits usually ends with tons of elite units because they rarely get defeated and because they have tons of money to afford these huge wages.
- I have also found that increasing the Upgrade XP cost for units is possitive as Mexxico said. I have increased the XP upgrade cost to 300-1500 (T1-T5 units) from 300-1200. I think that the devs' intention in 1.5.7 was to set 300-1500 for T1-T5 units but there is an error in the code which makes the cost lower than it should.
- Khuzaits are especially OP for their ability to pick favorable wars 99% of the time (yes, cavalry speed bonus is also another big reason). Hopefully the 1.5.8 changes will help on this but not sure if it will be enough. It is really common to see Khuzaits declaring war on kingdoms which are already involved in other wars and taking border fiefs in no time, and then making peace again. I have tested some campaigns where I drastically reduced Khuzait's tier clans, and they are still too strong. They just make peace really fast with NE, and backstab SE or Sturgia while they are fighting in the west.
 

Sarissofoi

Veteran
M&BWBWF&S
- I think I have found one of the things which increases a lot snowballing: AI XP Cheat. I have modded the cheat in my lastest tests to add experience just for low tier units (like Raise the Meek perk), and while snowballing is still a thing and Khuzaits are still OP, this is probably the better change I have tested. First, because it helps on making economy better for some lords if they do not have to pay for huge wages, and second, because Khuzaits usually ends with tons of elite units because they rarely get defeated and because they have tons of money to afford these huge wages.
- I have also found that increasing the Upgrade XP cost for units is possitive as Mexxico said. I have increased the XP upgrade cost to 300-1500 (T1-T5 units) from 300-1200. I think that the devs' intention in 1.5.7 was to set 300-1500 for T1-T5 units but there is an error in the code which makes the cost lower than it should.

Interesting.
Yeah I agree Khuzaits Horse army is pretty OP. I changed their 2nd Thier HA into foot but they level up so fast that it didn't matter too much.
I also experiment with ATC currently and use it to divide possible recruits into three category(militia/regular like only 2-3 tier), men at arms(3-4 tier) and Noble(4-6). But I am getting tired of it.
Can you share this fix with no AI exp cheat and higher XP needed to level up? If you have it for 1.5.7.

talesWorld.campaign.dll in Bin/Win64_Shipping_Client
I feel like brainlet but could not find it. The only file that look similar is TaleWorlds.CampaignSystem.dll. I am using 1.5.7 and Win7. Note that I would not know what to do even if I found it. So lets forget about it because otherwise I gonna burn from embarrassment.
 

Dabos37

Sergeant Knight
Interesting.
Yeah I agree Khuzaits Horse army is pretty OP. I changed their 2nd Thier HA into foot but they level up so fast that it didn't matter too much.
I also experiment with ATC currently and use it to divide possible recruits into three category(militia/regular like only 2-3 tier), men at arms(3-4 tier) and Noble(4-6). But I am getting tired of it.
Can you share this fix with no AI exp cheat and higher XP needed to level up? If you have it for 1.5.7.

I feel like brainlet but could not find it. The only file that look similar is TaleWorlds.CampaignSystem.dll. I am using 1.5.7 and Win7. Note that I would not know what to do even if I found it. So lets forget about it because otherwise I gonna burn from embarrassment.

Check this image:


Look for the DefaultPartyTrainingModel class, and modify this line from this:


if (mobileParty.IsLordParty && !troop.Character.IsHero && (mobileParty.Army == null || mobileParty.Army.LeaderParty != MobileParty.MainParty) && mobileParty.MapEvent == null && (mobileParty.Party.Owner == null || mobileParty.Party.Owner.Clan != Clan.PlayerClan))


To this:


if (mobileParty.IsLordParty && !troop.Character.IsHero && (mobileParty.Army == null || mobileParty.Army.LeaderParty != MobileParty.MainParty) && mobileParty.MapEvent == null && (mobileParty.Party.Owner == null || mobileParty.Party.Owner.Clan != Clan.PlayerClan) && troop.Character.Tier < 3)


Another option would be to change the XP value the AI get In vanilla, units get 5 XP + unit level (which is a lot IMO):

result.Add((float)(5 + troop.Character.Level), null, null);

I also tried to change the above line to this:

result.Add((float)(5 + troop.Character.Tier), null, null);

So unit got less experience because units tier is a much lower number than level(for example, a Tier 5 unit has level 21 if I remember correctly). Or you could also specify a fixed number like 10 or so, and all units tier would get this XP daily.


(I am not great with code, so please somebody corrects me if I am wrong about something. I testes these changes though and it looks like it works as I am thinking).
 

mexxico

Developer
@Dabos37 you are right current passive xp gain per troop is (5 + troop level) per each troop in npc parties and this is not a low value.

Currently
tier-1 troop needs 300 xp for level up,
tier-2 troop needs 600 xp for level up,
tier-3 troop needs 900 xp for level up,
tier-4 troop needs 1200 xp for level up;

so if npc party have 100 men tier-1 party they will be all tier-5 in
300 / (5 + 6) +
600 / (5 + 11) +
900 / (5 + 16) +
1200 / (5 + 26) = about 28 + 38 + 44 + 38 = 148 days (about 2 years without any battle).

So when about 1 year peace happens for a weakened kingdom nearly all npc parties can be tier-4 and up with this passive xp and it will be hard for kingdom to pay these wages with limited tax income (because they lost 50-70% of fiefs). So povertry rises and some clans defects.

First solution is passive Xp gain per troop in Npc parties can be lowered to (5 + troop level * 0.5) however real solution is I think adding a feature for limiting party wage for both player and npc clans. So if a clan's income is low they can limit wage of clan parties at 500 - 1000 instead of unlimited so they will not upgrade their troops or recruit more troops at some point.

Secondary (best imo) solution is we can make clan parties feed themselves better with increasing their money making actions like better looter hunting (increasing looter's loots / plundered gold / targetting looters more) during peace time especially. So even their daily wage is 1000 if they can make 500 per day somehow their expense will be 1000 - 500 = 500 for clan leader. This will also increase their Xp so we will not need that much passive Xps.

Third solution is increasing needed Xp for tier-3 to tier-4 1000 from 900 and tier-4 to tier-5 1500 from 1200. So there will be less tier-4 and tier-5 troops in world overall. Tier-4 and tier-5 troop wages are so high compared to tier-1, tier-2 and tier-3 troops.

Even we do these we have one problem we always need to think of. We should not make Npc clan's economy perfectly balanced so there will be some poor lords in late game. So player will be able to recruit them cheaper than paying 1-2M denars. Thats why totally balanced world is not something we want. After 20 years past it is good seeing several kingdoms lost their territory and we have several poor clans at map. Of course currently this ratio is high.

Today I remembered something. One addition to why 1.5.7 results are not better than 1.5.6 results is there was a AI cheat at finance codes even player is using this code was giving (clan tier x 100) denars to all clan leaders if that clan has no settlement, also code was giving (clan tier x 50) denars to all clan leaders if that clan has only one castle. I removed this at 1.5.7 because it was giving money from nowhere this was not connected to kingdom budget and I want to get rid of it. After we implement kingdom budget we should use this variable only. So this made things harder for weakened factions. But keeping this cheat was not a right thing. We should apply better solutions mentioned above.

CFHUJ.png
 
Last edited:

Bannerman Man

C# Sleuth
Knight
Because 20 x tier-5 payment is equal to 200 x tier-1 payment. And if we limit a party at X payment it can stay with less number of high tier troops.
Yeah, I was thinking about this too. One possible solution would be to create a "target party size" based on the average daily wage per troop of npc nobles across the whole world. The party leader would then recruit troops to try to match the target party size. This means that when their party reaches the max daily wage cap, their party will be of "average" tier distribution.

The average daily wage per troop is a number that you (the developers) could try to just guess (such as 8g per day per troop, perhaps?), or you could collect data in game and use that to find what the actual average wage is for noble npc parties. And I mean this to be a number set by the developers in the code, not chosen by the player.

As an example, let's say the player sets a companion party's maximum daily wages at 400g, and the average wage per troop is hardcoded to 8g. To find the "TargetPartySize" value, the game divides 400 by 8, which gives you 50 troops. So if a companion recruits to a target of 50 troops, they should have approximately an "average" tier distribution in their party by the time their wages hit the 400g per day cap.

That would hopefully prevent npcs from maxing out their party size with low tier troops and leaving no room for upgrades before they hit their daily wage cap.

Edit: Another way of determining the average daily wage per troop would be to decide what you personally think the tier distribution of a party should be and calculating a number from that. So if you think the proportion of t1-t2-t3-t4-t5-t6 troops should be, say, 40%-25%-15%-10%-6%-4% respectively, you would add: (2 x 0.4) + (3 x 0.25) + (5 x 0.15) + (8 x 0.1) + (12 x 0.06) + (18 x 0.04) = 4.54 average gold per troop per day (which seems low to me).

Also, another point worth keeping in mind is that party leader wages can be in the 25-50g range. When a low max wage cap is selected, that can take up a significant proportion of the party's total daily wages.

And lastly, it would probably make sense to allow a party to recruit above the target party size when they are nowhere near the max wage cap, with the assumption that a portion of those troops will die in the process of training the party.

Just some things to consider.
 
Last edited:

Dabos37

Sergeant Knight
@Dabos37 you are right current passive xp gain per troop is (5 + troop level) per each troop in npc parties and this is not a low value.

Currently
tier-1 troop needs 300 xp for level up,
tier-2 troop needs 600 xp for level up,
tier-3 troop needs 900 xp for level up,
tier-4 troop needs 1200 xp for level up;

so if npc party have 100 men tier-1 party they will be all tier-5 in
300 / (5 + 6) +
600 / (5 + 11) +
900 / (5 + 16) +
1200 / (5 + 26) = about 28 + 38 + 44 + 38 = 148 days (about 2 years without any battle).

So when about 1 year peace happens for a weakened kingdom nearly all npc parties can be tier-4 and up with this passive xp and it will be hard for kingdom to pay these wages with limited tax income (because they lost 50-70% of fiefs). So povertry rises and some clans defects.

First solution is passive Xp gain per troop in Npc parties can be lowered to (5 + troop level * 0.5) however real solution is I think adding a feature for limiting party wage for both player and npc clans. So if a clan's income is low they can limit wage of clan parties at 500 - 1000 instead of unlimited so they will not upgrade their troops or recruit more troops at some point.

Secondary (best imo) solution is we can make clan parties feed themselves better with increasing their money making actions like better looter hunting (increasing looter's loots / plundered gold / targetting looters more) during peace time especially. So even their daily wage is 1000 if they can make 500 per day somehow their expense will be 1000 - 500 = 500 for clan leader. This will also increase their Xp so we will not need that much passive Xps.

Third solution is increasing needed Xp for tier-3 to tier-4 1000 from 900 and tier-4 to tier-5 1500 from 1200. So there will be less tier-4 and tier-5 troops in world overall. Tier-4 and tier-5 troop wages are so high compared to tier-1, tier-2 and tier-3 troops.

Even we do these we have one problem we always need to think of. We should not make Npc clan's economy perfectly balanced so there will be some poor lords in late game. So player will be able to recruit them cheaper than paying 1-2M denars. Thats why totally balanced world is not something we want. After 20 years past it is good seeing several kingdoms lost their territory and we have several poor clans at map. Of course currently this ratio is high.

Plus lords also have access to perks which increase even more passive XP for their troops. This is one of the reasons because Khuzaits are so strong, they are rarely defeated, so it is pretty common to see Khuzaits' armies with tons of elite units.

On the other hand, with the current war/peace probability values, it is pretty rare to see peace times for kingdoms (Vlandia, Aserai and Khuzaits are the only ones I have seen so far), and this peace is pretty short, so while a like a lot second option, this won't probably change much with the current war settings.

Concerning the need for some lords going to bankrupt to make it easier for the player to recruit them, I think we are leaving aside one key factor: The player. It is not really a problem if AI vs AI is somehow balanced, because the player will always be able to clearly put the balance in some kingdoms' favor (even as mercenary), so fiefless lords going to bankrupt will be still a thing.

My suggestion is to apply all three options but with a small change:

1- Instead of (5 + troop level * 0.5), I would apply this: (10 + troop level * 0.5). Why? Because it is interesting to keep AI lords being able to upgrade low tier units fast, or battles against tons of recruits and low level units would be back. With the suggested formula, T1,T2,T3 unit would get similar XP per day, while T4 unit would get 20,5 XP per day, compared to 26 XP they are getting currently.
2- Second option would be great, this would also help to see the world a bit less caotic with bandits everywhere. Not sure about how easy is to add and correctly balance this though (probably not too hard for you).
3- I am currently playing a campign with 300-1500 UpgradeXPCost for T1-T5 units and feels good IMO. Getting T5 units for the player is almost as easy as it was before 1.5.7, and the AI won't have much problems to get T3 units at a similar speed than they are doing now. My current XPcost for all tiers:

if (this.Tier == 0)
{
return 100;
}
if (this.Tier == 1)
{
return 300;
}
if (this.Tier == 2)
{
return 700;
}
if (this.Tier == 3)
{
return 1100;
}
if (this.Tier == 4) <---- 1500 to upgrade from T4 to T5.
{
return 1500;
}
if (this.Tier == 5)
{
return 1900;
}
if (this.Tier == 6) <----- This part of the code is actually not applied to any units, there is not T7 units as far I know.
{
return 2300;
 
Last edited:

mexxico

Developer
Please no. Maybe increase fief income instead? Or reduce troop upkeep when in peace?

Increasing fief income does not help factions lost territories or player who build his kingdom new it helps kingdoms with lots of fiefs. Reducing troop upkeep in peace is something we cannot apply player / again it also helps all kingdoms. Our problem is even player cannot create new parties when his tier is enough because having extra parties are so expensive currently. They cannot make money themselves to cover even half of their wages.
 

D0c1

Knight at Arms
Increasing fief income does not help factions lost territories or player who build his kingdom new it helps kingdoms with lots of fiefs.
maybe it can prevent the start of snowballing because they have more or less the same amount of towns.
and when one is taken, the loyalty mauls will prevent the new faction from making full use of the town taxes (maybe tax cuts due to loyalty can increase?). giving an opportunity for the original faction to get it back?
the player can always game the system. or ransoms can be increased so they would mean something.
also, the player can snipe a weak fief for his kingdom and sustain himself on its incomes.
taxes were the main source of income in warband and it worked fine.
 
Top Bottom