• The forum has been updated. For an explanation of some of the changes, head over here.

Recent content by Pejot

  1. Pejot

    Information about developments at snowballing problem

    Sure, I'll walk through the steps. There have been changes made to autocalc over the course of EA, but I'm not sure when they happened. Also, keep in mind my numbers were just the base kill chances without any perks or tactics skill multipliers applied.

    First, the power level of each troop is calculated based on this code:

    For those that can't read code, the power formula for a regular troop is [(2 + tier) x (10 + tier) x 0.02], and if it's a mounted troop, multiply that by 1.2.

    The power level for a T5 cav troop is 7 x 15 x 0.02 x 1.2 = 2.52

    The power level for a T4 inf troop is 6 x 14 x 0.02 = 1.68

    The next part of the equation happens in the SimulateHit method:

    I'm just going to focus on the parts I've put in the red and yellow boxes. For reference though, PowerBasedOnContext just determines the troop power depending on if the battle is a siege or not, strikerAdvantage is the tactics skill multiplier of the party leader, and the part in the if statement deals with perk multipliers.

    So in the red box you have [(PowerLevelOfAttacker / PowerLevelOfDefender) ^ 0.7] x 40. This determines the troop's *max* damage output.

    Max damage for the T5 cav troop against the T4 inf troop is [(2.52 / 1.68 ) ^ 0.7] x 40 = 53.

    Max damage for the T4 inf troop against the T5 cav troop is [(1.68 / 2.52 ) ^ 0.7] x 40 = 30.

    I said that's the max damage, because in the yellow box you can see it uses the function MBRandom.RandomFloat, which rolls a random decimal between 0 and 1, with the average outcome being 0.5. This randomly modifies the damage a troop will deal within a range.

    If the random roll is 0, then the result of the arithmetic in the yellow box is [0.5 + (0.5 x 0)] = 0.5.

    If the random roll is 1, then the result of the arithmetic in the yellow box is [0.5 + (0.5 x 1)] = 1.

    If the random roll is 0.5, which is what you expect on average, then the result of the arithmetic in the yellow box [0.5 + (0.5 x 0.5)] = 0.75.

    What that means is that each troop has a range of possible damage outputs, with 0.75x the max being what you'd expect on average.

    For a T5 cav troop against a T4 inf troop, the damage range is 26-53, with 39 being the average (I said 40 in the other post but it's actually 39).

    For a T5 cav troop against a T4 inf troop, the damage range is 15-30, with 22 being the average.

    Then finally, this damage is "applied" in the ApplySimulationDamageToSelectedTroop method, but the only relevant part is this line:

    This rolls a random integer between 0 and the defending troop's max HP. The max HP of regular troops is almost always 100, so the roll is between 0 and 100. It will kill/wound the troop if the outcome of the random roll is < the damage number. So if the average damage of T5 cav vs T4 inf is 39, then there is a 39% chance the cav kills/wounds the inf on average (because any random roll outcome between 0 and 38 will kill).

    The fact that it is based on probabilities and not cumulative damage is acceptable in my opinion, because the two methods aren't that much different in practice. If a troop deals 20 actual damage to another troop, it will take 5 hits to kill them guaranteed; while if they instead have a 20% chance to kill them, it will take on average (1/0.2) = 5 hits to kill that troop as well, sometimes less, sometimes more. Using probabilities makes the system less deterministic, and in my eyes more realistic, since sometimes a soldier will catch an arrow in the gap of their armor which kills them outright, if that makes sense.

    Yes, the AI not being made aware of the cav bonus not applying in sieges is likely just an oversight (and in that case, easily fixable). But the second part of my comment about the Empire/Khuzait field battle was just a hypothetical situation to illustrate what happens when the AI can't properly estimate it's own strength.

    Currently, the AI sums up the total power level of all of the troops in their party to get one single number that represents their total "strength." This is a bit of a simplification, but they more or less use this number to estimate their strength vs another party in the area to determine if they should engage/flee from that party. Using this one number to compare strengths works because the auto-calc model is heavily based on this troop power formula. There are other things in the auto-calc formula right now which will introduce some error into the AI's ability to judge an engagement, but generally it probably isn't enough to make much of a difference.

    Now, if you base the auto-calc formula on a bunch of conditional rock/paper/scissors factors, then in order to give the AI a reasonable approximation of their strength, they will need to do a bunch of conditional checks of their strength vs another party on the campaign map in realtime. For instance, if each of the four main troop types has an advantage/disadvantage against every other troop, then you will now have 16 strength checks to do for each party that the AI is considering engaging (i.e. Party A's infantry vs Party B's infantry, A's infantry vs B's archer, infantry vs cav, infantry vs HA, then archer vs infantry, archer vs archer, archer vs cav, etc). That's 16x more strength checks than we had before, and that's without adding any other factors into the model.

    I'm just trying to temper expectations about what kind of strategic thinking we can realistically expect a video game AI to be capable of. I'm not sure I'm being as clear as I'd like, but it's a difficult concept to put into words.

    But I don't think we're going to agree, and that's ok.


    I guess my point is that it's only easy when auto-calc is simplified. The more situational variables you start adding into the ruleset, the harder and harder it becomes to quickly and accurately estimate one party's strength vs another in an efficient way, and the more irrational their behavior will seem.

    Yep, different people want different things. I'm not really for or against anything, but my main point was only that creating a complex autocalc model and coding the AI to make rational/strategic decisions based on it is a tall order, and it's not just a matter of wanting to or not. Not everything is feasible and all projects have constraints.

    You're right though, adding a complex autocalc ruleset isn't going to necessarily result in an outcome that matches realtime physics based battle results.

    I see at least 2 changes from the last time I made the calculation. First damage is multiplied by 40 while it was by 50 previously and secon is additional DMG multiplier that gives this 0.75 average value. It wasn't there before.

    So yes You are right that current chances are lower then they were before and in fact cav bonus is less relevant. Still it gives advantage to cav while there is no counter.
  2. Pejot

    Information about developments at snowballing problem

    But another semi-related issue is that current camps seem split between making auto-calc a battle simulator in its own right vs. auto-calc being an accurate reflection of the mission side outcomes. Like @froggyluv mentioned the AI doesn't get a bonus for fielding pikemen against heavy cavalry and my first thought was, "Well, that's just the autocalc being accurate: pikes don't do a damned thing to cav in this game." Making the autocalc take into account stuff like terrain when terrain, frankly, barely matters to battle outcomes on the mission side (exception: cramped village maps) is going to create another divergence between expectations and actual performance.

    I cannot agree with that. Forest make cav and ranged less effective (they hit trees). Higher ground gives ranged advantage. And polearm troops are really effective against cav but You cannot mix them with other inf and need to keep as separate group. Rivers are perfect spot to kill inf with ranged and are great to stop cav and kill it off. All of those are available in missions and it all depends whether You/AI use them or not. AI in missions is stupid but it doesn't mean it should also be stupid in autocalc. I prefer making better autocalc and improving AI in missions.
  3. Pejot

    Information about developments at snowballing problem

    That's overstating the advantage a bit though, as any unit can kill any other unit first try, since it's all probability based. If you crunch the numbers from the auto-calc model, a T5 cav unit has about a 40% chance on average to kill a T4 infantry unit on any given hit, but a T4 infantry unit also has a 22% chance to kill a T5 cav unit on any given hit. If you compare T5 cav vs T5 inf, it's a 34% vs 26% chance respectively. So even though the cavalry unit has a 20% bonus applied to its power level, this only shakes out to be roughly an 8% greater chance to kill a non-cav unit of equivalent tier than vice versa.

    Not sure how You calculated this but last time I done the calculation was in May right after they nerfed cav buff to 20% and it was 65% chance for T4 cav to kill T4 inf and 84% for it to kill T3.
    T5 cav had 81% chance to kill T4 inf and 100% to kill anything below. To compare T6 inf had only 46% chance to kill T4 cav.
    T5 cav Vs T5 inf is 65% chance to kill.
    As long as they didn't add any major changes to the calculation than situation is same right now.

    The biggest downside of this calculation is random hp value. You can have 100% T6 army but if You're unlucky they will draw low hp value and be killed by looters.
  4. Pejot

    Information about developments at snowballing problem

    Just some programmed code I gave froggy for terrain effects.
    Post in thread 'Beta Patch Notes e1.5.6' https://forums.taleworlds.com/index.php?threads/beta-patch-notes-e1-5-6.436281/post-9609968

    Problem is, atm you can only get bool methods of a troop if it is an archer(bow, crossbow) , mounted, ranged(has some javelin bow or crossbow) and soldier. It doesn't take into account if it is a skirmisher, mounted skirmisher, shocktrooper(2handed), polearms. But this could be easily implemented. Like the terrain effect for some sort of those troops.

    I saw this one. Nice soliution. As for troops what i proposed was to add a flag to every troop in the game defining if it's inf, polearm inf, ranged, cav, ranged cav. This would require to add additional information in troop definition that won't be editable in game. Than call this flag when calculating round outcome.
  5. Pejot

    Information about developments at snowballing problem

    Man thats just sad. Get Horse -Win Game! So basiclly an AI lord cant counter Heavy Cav with more pikeman as it takes no weapon into consideration? If its rock/paper/scissors and rock is horse -than what trumps rock?

    Cmon TW -how about at least an attempt to start calculating weapon and armor types as well as terrain and weather. The World Map game already just feels chaotic -like sprite bees buzzing around a sweet can of soda. Lets give them some strategic reason for moving, attacking and defending.

    I'm not even dreaming of such complex calculation here xD. It would be a step forward if they at least separate units to range, inf, polearm inf, cav, ranged cav and apply some buffs when confronting other groups. Like cav gets buff Vs archers and inf but debuff Vs polearms. Ranged gets buff Vs polearm inf (cause they mostly don't have shields) and smaller buff Vs inf but debuff Vs cav etc.
    Something like this could take into account some predefined markers for troops not changeable by player.
  6. Pejot

    Information about developments at snowballing problem

    This formula is just for calculating strength of troop. I do not know details of autocalculation but it is probably effected by this basic formula mostly, of course there are probably more details.

    What is weird in this formula according to it 1 x tier-5 troop is equal to 3 x tier-1 troop (looter / recruit) as power, I think it should be 4x or 5x. However to find out best formula we need to run several 100 tier-5 troop vs 300 / 400 / 500 tier-1 troop battles at custom battle for both infantry vs infantry / cavalry vs infantry / mixed vs infantry and examine their results.

    I do not want to change codes at auto-calc also because its not good changing examining that much areas. Its not one of my areas. I reported this situation to design team. If they want they can make a study on this.

    According to some reddit user who studied the autocalc formula that's all there is to this. At start there's calculation deciding which army gets first blow than th whole calculation returns unit power based on tier plus buff if it's mounted. And here rounds are starting 1v1 randomly selected troops at each round. One is attacking one is defending. Attacker power lvl is multiplied by some constant and compared to randomly drawn HP value of defending unit. That's all. This method gives huge advantage to cav based armies because the buff is big enough that cavalry unit at T5 can kill any infantry/ranged unit up to T4 at first try.

    Link to reddit where it is explained:
  7. Pejot

    Information about developments at snowballing problem

    Do you have that sheet? Can you share it?
    Yes, i've sended the link to You in PM.
  8. Pejot

    Information about developments at snowballing problem

    I cannot change troop trees. I can give this as suggestion but I do not think they will change it. So these changes are out of my limits.

    Also when examining your screenshot I realized someone changed power calculation formula. It was not like this before. There was higher strength difference between tier-0 and tier-5 troops like 10x as it should be. Because 5 villagers cannot win aganist 1 tier-5 troop. I checked and see it is changed at 1.4.0 but I could not find who changed it. Asked info about this at office comunication channels but probably I will not get any answer (communication is not so good there). I am placing an image to show you old formula. Thats why players are losing high tier troops at simulations aganist even looters. However if we make this 10x like in old days probably it will be worse for snowballing but for better and equitable gameplay we need to change formula as in old days.

    also related :
    tier-0 troop wage is 1 / daily
    tier-1 troop wage is 2 / daily
    tier-2 troop wage is 3 / daily
    tier-3 troop wage is 5 / daily
    tier-4 troop wage is 8 / daily
    tier-5 troop wage is 12 / daily

    oldest formula (before EA) :
    tier-0 strength : 0.19
    tier-1 strength : 0.40
    tier-2 strength : 0.74
    tier-3 strength : 1.20
    tier-4 strength : 1.79
    tier-5 strength : 2.50 (13x of tier-0)

    old formula (1.0-1.3s) :
    tier-0 strength : 0.40
    tier-1 strength : 0.74
    tier-2 strength : 1.20
    tier-3 strength : 1.79
    tier-4 strength : 2.50
    tier-5 strength : 3.30 (8x of tier-0)

    new formula (1.4s-1.5s) :
    tier-0 strength : 0.40
    tier-1 strength : 0.66
    tier-2 strength : 0.96
    tier-3 strength : 1.30
    tier-4 strength : 1.68
    tier-5 strength : 2.10 (5x of tier-0)

    Even if You change it back this simplistic formula is really bad.

    Months ago I made excel sheet that simulated battles the same way and allowed me to predict outcome of 8 out of 10 equal battles. It also made me realize how big of a buff is cav buff in this calculation cause armies with bigger cav % in army composition won in simulations battles that were 90% lost for them in mission.
  9. Pejot

    Information about developments at snowballing problem

    yes this would be gold!
    if this can work, than it could also work for a zone of control around a garrison for parties less then 50% of garrison strength (example %, would represent the fact that not the entire garrison would leave the castle/town to engage)

    This could take full garrison into account but not militia. That would make sense to have full castle garrison on the borders.
  10. Pejot

    Information about developments at snowballing problem

    I don't think that such a radical change of the mechanics would be a good idea. Supply lines were mostly problems of later warfare. Ancient and medieval armies did not need a lot of special supply, unlike modern armies which are toast without fuel and ammunition. So ancient and medieval armies usually lived from the country (and quite often early modern armies too, up to the 19th century; an interesting read to start for example here is "Supplying War: Logistics from Wallenstein to Patton" by Martin van Crefeld). Warfare was in fact often cheaper and easier to sustain when they were in enemy country and could plunder and forage there. This system of supporting the armies also explains a lot the way armies in the old times moved and why and where battles were fought.

    The problems of this kind of "living of the land" was that sooner or later regions were empty of supply and the armies had to move. However with the small scale warfare we have and the relatively small armies, it would not have been such a huge aspect. Finally, I just imagine that the constant foraging is done by all parties and included in the movement speed.

    From the gameplay aspect, making war too complicated may hurt more than help, I see this similar as Apocal. In the end it might promote snowballing more than hindering it.

    I agree that making them too complicated would be bothersome for many players but right now they lack any depth.

    There is no reason for war and when it starts it's just blindly running around fighting whatever You encounter with no real purpose. If controlling the whole map is the only goal of waging war then it's getting boring after few sieges.

    Current party/army management is too simplistic and have no downsides. It's easy to raise and keep army, it's easy to feed it. You get more troops by doing so. No additional cost or problem with it. You can basically just gain from wars cause loot give tons of money that You can't even spend since there is nothing to spend it on.
  11. Pejot

    Information about developments at snowballing problem

    I dont think the game does a good job of reflecting the cost of raising, supplying, and keeping a large army in the field. An army shouldn't just cost influence. It should cost denars.

    In real life you have to keep an open supply line for an army. The army can't just re-supply itself.

    This game doesn't account for the time and money it takes to supply the army with equipment, food, horse feed, lodging, and the economic impact of a country losing the majority of its work force.....

    If you put a monetary cost on raising and keeping an army in the field, it would allow small defensive kingdoms to bank money while they aren't at war.

    If you made that cost smaller for countries defending than countries deep in enemy territory, since its easier for them to re-supply and find lodging, it would naturally reflect the expense and difficulty of rapid expansion.

    To me, armies are making too much money from war. Historically, armies at war bankrupted countries. In Bannerlord, its the easiest way to get rich aside from exploiting the broken smithing mechanic.

    Raising armies should cost denars and influence. The larger the army, the more it should cost. The deeper you are in enemy territory, the more it should cost.

    Right now the game tries to make up for the expense of raising armies by artificially inflating fief income and nerfing loot income. It isn't the loot or the fiefs that's the problem. The problem is armies aren't an expense, they're a limitless supply of money.

    I totally agree with that. And one more thing is that it's to easy both for player and NPC lords to raise an army. There is nothing that stops You from it except influence. Army should cost influence, money (for example the one raising it should cover the upkeep of all troops or some mechanic to split the cost between all the lords in the kingdom) and require something more like clan lvl/relation with king or the lords/tactics lvl and battle history or something.

    Edit: and also something that would be required from player to be able to join an army (invitation or something)
  12. Pejot

    Information about developments at snowballing problem

    @mexxico if You reduce loot income, increase fief income and disable cheat income to lords You will at least give the option to weaken big empires by raiding villages. This will cut off some money sources. Also how is the cav upgrade cos calculated for NPC? Do they pay additional cause of no need for horses cheat?

    One more thing that can slower bigger kingdoms would be giving additional influence cost multiplier for creating an army based on how many fiefs a kingdom has. So the bigger You grow the hard it is to create big armies. It would simulate NPC lords loosing interest in participating in wars cause of how much they already have. Smaller kingdoms could get positive multiplier for that so raising army would cost less influence for them.
  13. Pejot

    Campaign Map- Needs more interactive features?

    I'm pretty sure water makes you move more slowly but that's it. This is something that bothers me. An impassable river on the campaign map is an insignificant stream in battle. I haven't seen any of the new ones but if they are larger rivers that's good, though soldiers fighting and walking around underwater would make me try to avoid those maps completely.

    That's exactly what I've run to. I was fighting underwater.
  14. Pejot

    Campaign Map- Needs more interactive features?

    Indeed, I think it would be a shame not have a battle on a large bridge and possibly a Ford for flanking. Total War: Barbarian Invasion had some good ones- A bridges spanning deep water unpassable by most troops, fords and some of your lighter troops could swim. Newer Total Wars don't have that as everything is kowtowing to the AI.

    Judging by where things are right now I don't think they will do anything with it and even if they do it will be in far away future.
  15. Pejot

    Campaign Map- Needs more interactive features?

    Can garrison 25 troops in Gatehouse. Passing parties must pay toll to pass. Hostile parties must fight bridge battle to take it (an actual bridge battle, not the B.S ones we currently have). Gatehouse provides no protection.

    Unfortunately this one is impossible if they don't make changes to how water affects troops. In some of the newest maps You can fight underwater cause of how deep the river on the map goes in some places and cause it's not affecting possibility to move at all. There's no swimming etc.
Top Bottom