Archers and Crossbowmen performance insanely good in 1.5.5

Users who are viewing this thread

After modifying and testing some parameters, I think that it is pretty simple to improve a lot the game experiencie by just changing some few numbers. This is what I have changed:

** Method: SetAiReleatedProperties

From this:
agentDrivenProperties.AiRaiseShieldDelayTimeBase = -0.75f + 0.5f * num;
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 0.1f;

To this:
agentDrivenProperties.AiRaiseShieldDelayTimeBase = 2f + 0.5f * num; <--- Makes AI able to block projectiles much better while in regular formation.
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 1f; <--- Increase just the AI vertical chance to miss when firing from long distance. The horizontal chance to miss is not a good idea to modify IMO because it does not change much when a unit fire to a big mass.


** Method: ComputeRawDamageNew

From this:
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.33f); change this to a higher number against pierce attacks(all sorts)
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.5f); change this to a higher number against cut attacks(all sorts)

To this:
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.6f); change this to a higher number against pierce attacks(all sorts)
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.8f); change this to a higher number against cut attacks(all sorts)

With these changes archers are still pretty damn good (it is frustrating how OP ranged units are, they are still OP after every thin I try to nerf them), while armored units perform MUCH better as you can see in these videos:


** Vanilla:




Modded Game:



(just check how much better cavalry units performed with better armor effectiveness. I tested Bannerknights in other battles and they do not become immortal with these changes at all)

Conclusions:

- Improving Infantry AI helps but it is not enough.
- Improving armor effectiveness helps but it is not enough (it is great for elite cavalry and infantry though).
- Decreasing Ranged units accuracy (to a decent level to do not make them totally useless in 1v1) helps but it is not enough.
- The AI putting its archers in front is not a good idea when AI archers are outnumbered because the player archers are able to massacred AI archers in seconds.

Suggestions:

- The Shildwall speed nerfs seems like is a pretty bad things in terms of Ranged units OP performance.
- I need to lear how to reduce Archers and Crossbowmen reloading speed, this will help a lot for sure.
 
Last edited:
After modifying and testing some parameters, I think that it is pretty simple to improve a lot the game experiencie by just changing some few numbers. This is what I have changed:

** Method: SetAiReleatedProperties

From this:
agentDrivenProperties.AiRaiseShieldDelayTimeBase = -0.75f + 0.5f * num;
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 0.1f;

To this:
agentDrivenProperties.AiRaiseShieldDelayTimeBase = 2f + 0.5f * num; <--- Makes AI able to block projectiles much better while in regular formation.
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 1f; <--- Increase just the AI vertical chance to miss when firing from long distance. The horizontal chance to miss is not a good idea to modify IMO because it does not change much when a unit fire to a big mass.


** Method: ComputeRawDamageNew

From this:
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.33f); change this to a higher number against pierce attacks(all sorts)
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.5f); change this to a higher number against cut attacks(all sorts)

To this:
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.6f); change this to a higher number against pierce attacks(all sorts)
num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.8f); change this to a higher number against cut attacks(all sorts)

With these changes archers are still pretty damn good (it is frustrating how OP ranged units are, they are still OP after every thin I try to nerf them), while armored units perform MUCH better as you can see in these videos:


** Vanilla:




Modded Game:



(just check how much better cavalry units performed with better armor effectiveness. I tested Bannerknights in other battles and they do not become immortal with these changes at all)

Conclusions:

- Improving Infantry AI helps but it is not enough.
- Improving armor effectiveness helps but it is not enough.
- Decreasing Ranged units accuracy (to a decent level to do not make them totally useless in 1v1) helps but it is not enough.
- The AI putting its archers in front is not a good idea when AI archers are outnumbered because the player archers are able to massacred AI archers in seconds.

Suggestions:

- The Shildwall speed nerfs seems like is a pretty bad things in terms of Ranged units OP performance.
- I need to lear how to reduce Archers and Crossbowmen reloading speed, this will help a lot for sure.

I would change this:
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));

Be aware there are two of them in the same Method. But also consider Thrown Weapon(I don´t really know if the mentioned calc will affect them).

Explanation:
agent._propertyModifiers.resetAiWaitBeforeShootFactor = condition(true/false)
if true = 0f
if false = (1f - 0.5f * num2)

(agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));
 
I am just speculating. I have the feeling that SP battles would be like x3 better and more balanced if Captain Mode would not exist. For example, archers are OP again because Captain Mode players complained a lot about Archers and now they are too good again.

Not saying that Captain Mode should disappear xD, of course not, just that it should be balanced separately. Concerning the AI, why the hell would you like to dumb down infantry AI to not be able to block anything without shieldwall then? Devs want the AI to be horrible for some hidden conspirancy inside TW maybe? As you can see, I can make the AI to block projectiles pretty good just by changing a number.
As a captain mode player, I would love to see any improvements to the AI, including better use of shields by bots themselves.
 
I would change this:
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));

Be aware there are two of them in the same Method. But also consider Thrown Weapon(I don´t really know if the mentioned calc will affect them).

Explanation:
agent._propertyModifiers.resetAiWaitBeforeShootFactor = condition(true/false)
if true = 0f
if false = (1f - 0.5f * num2)

(agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));

Can you please help me to find this code? I am searching in dsSpy but I cannot find it :'-(

I am looking inside AiWaitBeforeShootFactor but I cannot see the code you mention.
 
As a captain mode player, I would love to see any improvements to the AI, including better use of shields by bots themselves.

Well, the thing is that if the AI is able to block projectiles pretty good by itself, why would players bother to use shield wall formation?
 
Thanks, I was checking in a wrong place. I have tried to change both parameter but without success, not much seems to change if I modify parameters with random numbers.

Ok, maybe that than:
agentDrivenProperties.AiShootFreq = 0.3f + 0.7f * num2;

If Im right Freq=Frequency
If Im right reducing the numbers will eventually do something esp. the 0.7f
 
It is in the same Method : SetAiReleatedProperties

Is this a .dll or a .xml file? I don't like .dll because I cannot change it. :wink: What program are you guys using for changing .dlls?

Currently I have, in my primitive xml way, improved all metal armor and made bows and crossbows a bit worse by lowering accuracy and reload speed (-20 speed and accuracy for bows, -40 speed and -10 accuracy for crossbows). I still let the damage at "Pierce" because the murder of low level units is too high when set to "Cut", and factions with many high armor units are benefitted too much. As usual I also changed body_bones for a more meaningful locational damage.

I'm curious how it will play out in 1.5.5, but I don't have high expectations.
 
Ok, maybe that than:
agentDrivenProperties.AiShootFreq = 0.3f + 0.7f * num2;

If Im right Freq=Frequency
If Im right reducing the numbers will eventually do something esp. the 0.7f
Ok I have to correcture myself. I changed the numbers to a 0.000001 for testing. The Result was that my Battanian Heros haven´t even fired one single arrow on the approaching infantry. Zero, nada, null. XD


So just that you know what AiShootFreq do. @Dabos37
 
Guys I'm following your conversation with great interest; however, watch out for the double posting (I know I'm not a moderator, a friend tells you :wink:) Edit please
 
Ok I have to correcture myself. I changed the numbers to a 0.000001 for testing. The Result was that my Battanian Heros haven´t even fired one single arrow on the approaching infantry. Zero, nada, null. XD


So just that you know what AiShootFreq do. @Dabos37

Thanks for that mate. I have tried to find a good number to reduce it but what happens at some point is that ranged units get stucked for some seconds without doing anything :sad:.

If I reduced it to:

agentDrivenProperties.AiShootFreq = 0.1f + 0.2f * num2;

Almost anything changes or at least I cannot notice anything.

If I reduce it to:

agentDrivenProperties.AiShootFreq = 0.05f + 0.1f * num2;

I can notice something but units get stuck eventually for 2 or 3 seconds. Anyway, it works for me until we get a proper fix (if we get any). Muchas gracias :wink:


Guys I'm following your conversation with great interest; however, watch out for the double posting (I know I'm not a moderator, a friend tells you :wink:) Edit please

Yes, sorry for that.
 
Shouldn't the frequency be tied to the weapon speed?

Reloading speed is bound to animation as far I know, but you can reduce part of the animation increasing the thrust speed in the weapons.xml. What we are trying to increase is the aiming time (the time that archers hold aiming before releasing the arrow).

To reduce reloading speed, the most effective thing I have found is reducing thrust speed in weapons.xml but it does not work well for Crossbowmen.
 
Reloading speed is bound to animation as far I know, but you can reduce part of the animation increasing the thrust speed in the weapons.xml. What we are trying to increase is the aiming time (the time that archers hold aiming before releasing the arrow).

To reduce reloading speed, the most effective thing I have found is reducing thrust speed in weapons.xml but it does not work well for Crossbowmen.

Ok, but this means that the whole skill shebang used for the player is completely ignored for the NPCs. They do not get any thing from any perks as far as I can see and the skill level is just used to calculate the damage and the accuracy.
 
@Dabos37

I carried out some tests by setting the "thrust speed" parameter. In the image I have separated the different bows by typology and I have catalogued them inside a plausible and realistic thrust_speed ratio. In the video, I have compared the same bow with different value of thrust_speed (Native=90 / Modified=35) classifying this type of bow as " the slower ones". With this test you can get an idea of the variations of pulling the bowstring speed (the AI performs it exactly the same)

yPq3g.jpg


What do you think of this?
---

After some tests with the crossbows; the numerical values are totally exorbitant.
We found "thrust_speed" which as an average is in the 90; this is practically instantaneous. In my opinion, I would frame ALL the crossbows between a thrust_speed of 30 and 50.
Then, the projectile launch speed (all in the average of 100), is also high; in my opinion considering that practically all of them have an average accuracy of 100, I would reduce the missile_speed value drastically to the half (ranges between 30 and 50).

Where there must be a differentiation between a low level crossbow and a high level one is in the reload time and accuracy.
 
Last edited:
@Dabos37

I carried out some tests by setting the "thrust speed" parameter. In the image I have separated the different bows by typology and I have catalogued them inside a plausible and realistic thrust_speed ratio. In the video, I have compared the same bow with different value of thrust_speed (Native=90 / Modified=35) classifying this type of bow as " the slower ones". With this test you can get an idea of the variations of pulling the bowstring speed (the AI performs it exactly the same)

yPq3g.jpg


What do you think of this?
---

After some tests with the crossbows; the numerical values are totally exorbitant.
We found "thrust_speed" which as an average is in the 90; this is practically instantaneous. In my opinion, I would frame ALL the crossbows between a thrust_speed of 30 and 50.
Then, the projectile launch speed (all in the average of 100), is also high; in my opinion considering that practically all of them have an average accuracy of 100, I would reduce the missile_speed value drastically to the half (ranges between 30 and 50).

Where there must be a differentiation between a low level crossbow and a high level one is in the reload time and accuracy.


Yes, thrust speed is the better way to nerf reloading speed for archers but the last time I tested, Crossbowmen effect was not great after modifying that parameter. Are you getting good results if modifying thrust speed for Crossbowmen?

The bad thing is that it is time consuming and changing it for all weapons after every patch could be a pain but, it would do it without problems if it would also work for crossbows but when I testedsome time ago, it was not a good for this weapon.

Nice video by the way :smile:, and yes, the current numbers and firing speed for ranged units are totally insane.
 
Yes, thrust speed is the better way to nerf reloading speed for archers but the last time I tested, Crossbowmen effect was not great after modifying that parameter. Are you getting good results if modifying thrust speed for Crossbowmen?

The bad thing is that it is time consuming and changing it for all weapons after every patch could be a pain but, it would do it without problems if it would also work for crossbows but when I testedsome time ago, it was not a good for this weapon.

Nice video by the way :smile:, and yes, the current numbers and firing speed for ranged units are totally insane.
For crossbow troops the determining factor is the reload time and this does not appear in the xml, but it should be possible to modify it by code c#.
 
Back
Top Bottom