Jump to content
Sign in to follow this  
tpw

TPWC AI suppression system

Recommended Posts

Not in the version that TPW released today...

I meant you are correct, it should be fixed.

Share this post


Link to post
Share on other sites
instead of soldiers going prone after x nearby shots, might it be better to handle suppression probabilistically? I wot not how much overhead that would introduce, but it would make the behavior that much more realistic.

Not really statiscally, but for sure easier to implement could be the following approach:

Right now every time a bullet is detected, in 'tpwcas_fnc_supstate' the enemy bulletcount is increased with +1:

line 28:

_enemybulletcount = _enemybulletcount + 1; 

based on a specific enemybulletcount threshold value (bullets counted) it's determined the soldier should go prone.

Instead of increasing bullet count by 1, we could randomize this value with e.g.

_bulletIncr = [1,1,2,4,2,1,1] call BIS_fnc_selectRandom; 

Or using: (untested!):

_bulletIncr = [1,1,1,2,2,3,4] select (round(random 6)); 

It would be possible to make this skill dependent. E.g:

if skill high then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 3));
if skill medium then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 5));
if skill low then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 6));

Other approach could be to base the 'random x' on the current bulletcount number, which would allow to increase the 'probabilistically'.

e.g.

_bulletIncr = [1,1,1,2,2,3,4] select (round(random _enemybulletcount)); 

Share this post


Link to post
Share on other sites

This sounds awesome! It's always been a pain trying to work around the fact that suppressing fire doesn't work on these guys. I can't wait to give it a try!

Share this post


Link to post
Share on other sites
Talk about glacial pace of development, we haven't released a new version in 3 weeks....

TPWCAS 3.02: http://filesonly.com/download.php?file=367TPWC_AI_SUPPRESS_302.zip

I confirm there are some bugs in this release: both in script version and the pbo version.

so please ignore this version and wait for updated fixed version.

For those who can't wait: I'm able to provide a fixed interim script version if you send me a PM.

Updtaed official version will be released by tpw soon. Stay tuned..

Share this post


Link to post
Share on other sites

Many thanks to Ollem for bugfixing and additional stance modification stuff. And thanks to our testers too - your cheques are in the mail.

TPWCAS 3.03: http://filesonly.com/download.php?file=348TPWC_AI_SUPPRESS_303.zip

Changelog:

  • Correct bDetect call in script version
  • Correct wait for bDetect initialisation
  • Cleanup of config variables in addon version
  • Changes to stance modification code to make it CBA independent
  • bDetect 0.73

I won't frontpage this until you can confirm it bug free.

And to all those complaining about filesonly: yes I know it sucks, most file hosters do. But at least these guys don't arbitrarily remove files. As soon as the release is confirmed stable then we'll provide an armaholic mirror (thanks Foxhound).

Share this post


Link to post
Share on other sites

Could you not just put it onto a Dropbox ? Would be SOOOOO much better.

Share this post


Link to post
Share on other sites
Not really statiscally, but for sure easier to implement could be the following approach:

Right now every time a bullet is detected, in 'tpwcas_fnc_supstate' the enemy bulletcount is increased with +1:

line 28:

_enemybulletcount = _enemybulletcount + 1; 

based on a specific enemybulletcount threshold value (bullets counted) it's determined the soldier should go prone.

Instead of increasing bullet count by 1, we could randomize this value with e.g.

_bulletIncr = [1,1,2,4,2,1,1] call BIS_fnc_selectRandom; 

Or using: (untested!):

_bulletIncr = [1,1,1,2,2,3,4] select (round(random 6)); 

It would be possible to make this skill dependent. E.g:

if skill high then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 3));
if skill medium then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 5));
if skill low then _bulletIncr = [1,1,1,2,2,3,4] select (round(random 6));

Other approach could be to base the 'random x' on the current bulletcount number, which would allow to increase the 'probabilistically'.

e.g.

_bulletIncr = [1,1,1,2,2,3,4] select (round(random _enemybulletcount)); 

Some nice ideas there.

I actually had a go at implementing count_roland's success = 1 - (f^n) formula.

Let's say a given enemy bullet has a 20% chance of causing suppression. f = 0.8.

suppression_threshold = 1 - ( 0.8 ^ enemybulletcount )

1 bullet = 0.2

2 bullets = 0.36

3 bullets = 0.49

...

10 bullets = 0.89

20 bullets = 0.99

if (random 1 < suppression_threshold) then {suppression etc....};

On paper this should work nicely. However, when I implement it into tpwcas_supstate and try shooting at a group of enemy, it usually takes 1 or 2 bullets and they're nearly all fully "red ball" suppressed. I need to set f = 0.97 or 0.98 in order for it to take more than 5 bullets to suppress them, and even then it's unreliable. I get the feeling that the random command might be the problem.

On another point, I don't think suppression should be skill linked. A properly trained and skilled unit should still hit the deck if shot at. If anything an untrained religious fanatic might even be less inclined to go prone. Just my thoughts.

Share this post


Link to post
Share on other sites

My original thought was just a fixed percent chance of suppression per bullet, no formula required. (The formula I gave was just the statistical odds of the occurrence of at least one event of a given probability in a given number of repeated independent trials.) But yes, I don't think random is as random as they say, though I found it out from the other direction. Using the snippet I posted earlier, with a 15% chance per round, the average was a little over 5, but the right tail of the distribution had way too many extreme outliers (meaning enemybulletcount > 20, which was at least 3 standard deviations from mean) to be normal.

Not sure what to do. Ollem's solution is by far the simplest, if there's no reason why enemybulletcount needs to reflect the actual number of bullets.

Share this post


Link to post
Share on other sites
On another point, I don't think suppression should be skill linked. A properly trained and skilled unit should still hit the deck if shot at. If anything an untrained religious fanatic might even be less inclined to go prone. Just my thoughts.

Well, I should say that suppression itself should not be skill linked as you said, in fact I would say that a skilled soldier would hit the deck sooner. But, the effects of suppression should be skill linked. So maybe there's a sort of inverse effect to think about: skilled soldiers go prone sooner but retain their skills, whereas less skilled soldiers remain upright longer but lose their skills.

Share this post


Link to post
Share on other sites

I would say trained soldiers could recover from suppression and move on a bit earlier than someone who is not trained. Suppression is just what it is but its not somekind of magic skill leak/bonus.

Share this post


Link to post
Share on other sites
I would say trained soldiers could recover from suppression and move on a bit earlier than someone who is not trained. Suppression is just what it is but its not somekind of magic skill leak/bonus.

Well suppression has to manifest somehow, and ingame that is most effectively done by reducing the skills of the suppressed soldier. You have to imagine the purpose of suppression - it's not to make the opposition hide, that's more of a downside :) the purpose is to reduce the effectiveness of incoming fire.

Share this post


Link to post
Share on other sites

The reduced effectiveness of incoming fire is because of opposition hiding.

Share this post


Link to post
Share on other sites

Well, skills suppression is already dependent on the initial skill and courage of each unit. A more skilled unit is affected less by suppression.

Recovery time at present is just a random number between 8-13 seconds.

I should say at this point that -Coulum- has just rewritten the whole skill suppression core and once I get a few attoseconds free I'll look to incorporating it into the existing framework.

Share this post


Link to post
Share on other sites

On another point, I don't think suppression should be skill linked. A properly trained and skilled unit should still hit the deck if shot at. If anything an untrained religious fanatic might even be less inclined to go prone. Just my thoughts.

I fully agree. The accuracy of a suppressed unit should drop gradually, but the more skilled you are, the more proficient you are in dropping quickly and finding hard cover.

Share this post


Link to post
Share on other sites
And to all those complaining about filesonly: yes I know it sucks, most file hosters do. But at least these guys don't arbitrarily remove files. As soon as the release is confirmed stable then we'll provide an armaholic mirror (thanks Foxhound).

Mediafire doesn't have that asinine capcha or waiting time and it doesn't remove files. The only "downside" is that you have register to upload (not to download).

Share this post


Link to post
Share on other sites

Thanks for all the file hosting suggestions. Ollem has posted a mirror, please use that. Hopefully his server can be the default download location.

Ollem and count_roland:

Setting the tpwcas_st (shot threshold) from 10 down to to 5 and replacing

_enemybulletcount = _enemybulletcount + 1;

with

_enemybulletcount = _enemybulletcount + (random 1);

gives a nicer random feel to suppression, but keeps the computation in tpwcas_supstate reasonable.

If you wanted to make it skill dependent (which I don't), then you could always use

_enemybulletcount = _enemybulletcount + (random (1 - skill _unit));

Edited by tpw

Share this post


Link to post
Share on other sites
The reduced effectiveness of incoming fire is because of opposition hiding.

I think DMarkwick meant incoming fire in the sense of return fire. I don't entirely agree that their hiding is a downside, the big upside is that they cannot observe you so readily - especially flanking movements.

Share this post


Link to post
Share on other sites
I think DMarkwick meant incoming fire in the sense of return fire. I don't entirely agree that their hiding is a downside, the big upside is that they cannot observe you so readily - especially flanking movements.

As long as the enemy don't have 'spider sense' (as can happen with AI :) )

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×