Jump to content
Sign in to follow this  
fabrizio_t

[WIP] bCombat infantry AI Mod [SP]

How do you rate your first bCombat experience  

55 members have voted

  1. 1. How do you rate your first bCombat experience

    • Very disappointing
      2
    • Mediocre
      4
    • Average
      2
    • Good
      16
    • Very good
      31


Recommended Posts

Interesting indeed... and it is also coincide with my own attempts at with the AI... maybe I can share some of my codes...

Share this post


Link to post
Share on other sites

Morale based, fire and movement and AI awareness. Sounds good.

Seeing as you have been working on it for quite some time (from the time of Flexi AI even?) is it much different to what we have seen out there thus far?

Share this post


Link to post
Share on other sites

If you are still looking for testers, I'm happy to help.

Share this post


Link to post
Share on other sites

Any members of MustangDelta group are considered accepted.

Deadline reached, I think we are enough to move on.

First post updated, including basic features list for the upcoming v0.11 bCombat release (which is a testing release).

---------- Post added at 15:12 ---------- Previous post was at 14:59 ----------

If you are still looking for testers, I'm happy to help.

You're in, thanks.

---------- Post added at 15:17 ---------- Previous post was at 15:12 ----------

Morale based, fire and movement and AI awareness. Sounds good.

Seeing as you have been working on it for quite some time (from the time of Flexi AI even?) is it much different to what we have seen out there thus far?

When i first worked on FlexAI, which was a mod focusing on on macro-tactics, i encoutered quite some problems, mostly related to the need to micromanage AI.

So i developed a smaller scope mod, devoted to lessening the need for such micromanaging and working around some vanilla AI issues with fire, suppression, movement.

This mod originated a ballistic framework (which later became bDetect) and now bCombat.

bCombat is supposed to address some AI tactical problems and limitations, not doing any decision-making.

Depending on bCombat outcome, i may decide to further proceed on the work done on FlexAI (bCommand?)

---------- Post added at 15:19 ---------- Previous post was at 15:17 ----------

Interesting indeed... and it is also coincide with my own attempts at with the AI... maybe I can share some of my codes...

It would be interesting to share any experience and codebase.

Edited by fabrizio_T

Share this post


Link to post
Share on other sites
bCombat and bCommand .... I'm moist with anticipation !!!

As i wrote above, please don't hype this ;)

Take it as just-another-ai-mod, which is what actually is.

Nothing groundbreaking, something to test and balance ...

Share this post


Link to post
Share on other sites

fabrizio I m really glad you are working on AI again.

One thing that makes me really sad is..in A3 i m getting the impression IMPORTANT community modders got separated from larger groups

and working on their own-yet in similar fields (i.e. AI behavior)

Maybe my POV is wrong but..i would have been really happy seeing 'those' guys coming with ONE-Uber-full suite.

i know this can be difficult sometimes-but i can see (at least) some mods trying -both ways- to cooperate flawlessly between them.

Anyway..I really wish you good luck with your experiments-and i still hope to see "That" ONE suite ..someday

Either way or another..player gets the benefit in the end. :)

Share this post


Link to post
Share on other sites

The idea of decision making is a good one, that KAI boasts that the AI have 'knowledge' of their life, so to speak, and move accordingly to preserve that life, I am curious if such decision making is in the works with this mod, of course, I shall see down the track either way. As per, 'just another ai mod' perhaps with another modder behind the wheel, however I have great faith in your works you certainly have a keen mind and eye for these areas.

Share this post


Link to post
Share on other sites
The idea of decision making is a good one, that KAI boasts that the AI have 'knowledge' of their life, so to speak, and move accordingly to preserve that life, I am curious if such decision making is in the works with this mod, of course, I shall see down the track either way. As per, 'just another ai mod' perhaps with another modder behind the wheel, however I have great faith in your works you certainly have a keen mind and eye for these areas.

As i wrote before, decision-making is out of the scope of bCombat.

That was the objective of FlexAI, but it did just work to some extents: the problem, i discovered, is not giving AI some rules, it's making it apply them effectively.

Please consider that bCombat was originally thought as an answer to that problem: a workaround to lessen some rather big AI issues making decision useless, namely:

* High firing accuracy + ineffective stance handling making tactical movement uneffective (luckily in ArmA3 accuracy has been tweaked);

* Inconsistent response to commands while in danger mode ( still a BIG issue, within ArmA3)

* No (measurable) effects for suppressive fire ( still a issue, within ArmA3)

* Unability to properly withdraw or flee ( still a BIG issue, within ArmA3)

* Poor CQB performance (tweaked in ArmA3, but CQB is still cluncky)

When i write "lessen" i really mean "lessen", i still have to see somebody being able to successfully subvert an AI behaviour without side-effects (BIS excluded).

Hence my approach was to work on-top of AI, not against it.

I don't know about KAI (source?), but i'm pretty sure that any AI mod will have to fight the same issues, let's see the outcome.

Edited by fabrizio_T

Share this post


Link to post
Share on other sites
KAI:

http://www.youtube.com/watch?v=3nDt3tIV-k8

Chris B is extensively testing it, lots of his footage on his page. Looks good, they WERE making it for A3, but have withdrawn to focus on A2 for now. Thanks for the reply amico.

Look at this:

It was FlexAI + ArmA2, back in 2009.

Don't you think this video resembles the kind of movement seen in KAI video?

It was relatively easy to achieve good looking movement in ArmA2.

However i can't really judge, finger crossed it will be a successful mod.

By the way, who is involved into KAI?

Share this post


Link to post
Share on other sites

Flexi AI does look very good, and it was the one mod i anticipated the most! And as such I must quote myself:

As per, 'just another ai mod' perhaps with another modder behind the wheel, however I have great faith in your works you certainly have a keen mind and eye for these areas.

:D

EDIT:

Video looks very promising, I like the movement, very neat and tidy, I like how to appear to be actively moving toward their goals instead of getting bogged down when there is no real need to. The way they flowed through the narrow ruins and then took up firing positions was also a nice thing to see. I look forward to testing this mod out! I guess for testing purposes using it with UPSMON would give inaccurate results, right?

Edited by RAINF
Saw the video

Share this post


Link to post
Share on other sites

While i'm currently at work, i'd like to share some insight on bCombat internals.

This way you'll be able to better understand how it's working.

So, let's talk about bCombat and events:

[b]EVENTS[/b]

bCombat is mostly event driven. 
It deals with two kind of events:


[b]SCRIPTED AI events[/b]

These events are generated by bCombat itself.
At the moment the only event of this type is the "suppression" event, raised whenever a unit gets under enemy fire.

[b]CORE AI events[/b]

While many core infantry AI mechanics are buried deep into engine, some events are exposed into a special .fsm file, named danger.fsm, which kicks in in danger mode.
It exposes events for:

* enemy contact
* firing visible
* unit being hit
* close enemy detected
* close explosion
* dead body detected (friendly or enemy)
* unit screaming in pain
* unit "can fire" on enemy

Each event comes with its own priority level. 
However, when i originally dealt with default danger.fsm, i spotted these sensible problems:

* Some event priorities look messed up (e.g. "can fire" priority too low)
* It's taking care of the topmost priority event only, discarding others
* The topmost priority is however unhandled, except for the "can fire" event

Speaking of the "can fire" event (which basically means enemy unit detected and in line of sight), the triggering unit is scripted to stop (forcespeed=0) from 4 to 8 seconds (random). 
That stopping is sometimes undesirable to me, since:

* it may cause drag into group movement, penalizing overall movement speed
* it is not a good all-around solution, failing in many situations (e.g. it slows units which are flanking)

So i decided to tweak the original default danger.fsm this way:

* reworking event priorities
* taking always care of ALL raised events, not only topmost priority, then cumulating them in form of effects on "morale"
* rewriting "can fire" event handling

[b]EVENTS HANDLING[/b]

Within bCombat all the collected  events, whatever their type or origin, are pipelined into a custom scripted .fsm file (suppression.fsm).
This .fsm file takes care of applying morale effects, in term of applying penalization or recovery.
It is continually fed with newly originated events and it keeps running till unit death or full morale recovery.

This way we get some real time, dynamic morale handling.
I will tell about morale later, since it diffusely affects AI units behaviour.

Edited by fabrizio_T

Share this post


Link to post
Share on other sites

Quite comprehensive indeed Fab. So you are overriding danger.fsm with a new fsm, to give the desired effects? If that forcespeed is removed completely how does the combat look? In real combat the troops would fire off a few rapid snap shots in roughly the right direction, taking one second, the dash to cover.

With bCombat, will there be rules for appropriate engagement? For instance a squad comes across ( or even sees ) an armoured vehicle, but have no AT - they therefore go to ground until it passes and do not attempt to engage it with small arms.

Sounds really good. Can't wait to see what you have created.

Edited by Kremator

Share this post


Link to post
Share on other sites
Quite comprehensive indeed Fab. So you are overriding danger.fsm with a new fsm, to give the desired effects? If that forcespeed is removed completely how does the combat look? In real combat the troops would fire off a few rapid snap shots in roughly the right direction, taking one second, the dash to cover.

Sounds really good. Can't wait to see what you have created.

Yes danger.fsm is overriden, but for infantry only.

No, forcespeed is not completely removed since that will cause for sure combat uneffectiveness, especially in CQB.

The reason is that for ArmA3 AI units to open fire quickly, they need to be stopped.

bCombat takes care to better evaluate whether to stop, depending on criteria such as current command, speed, angle and distance from enemy.

Also it does not stop for 4 to 8 seconds ... it gives the unit a couple seconds of time to fire and if it does not shoot, it moves on.

However this matter is about Fire&Movement and tasks, i'll hopefully write about them later.

Now it's time to tell something about stance:

[b]STANCE HANDLING[/b]

By default, stance handling in ArmA 3 uses quite a bit of randomization.
This is clunky, as well as ineffective in pitched combat.

How is bCombat making it better?

You know the drill: basically any unit is made aware of being under fire, so it goes prone as needed.
However that's not enough. There's plenty of other situations to be handled, if you think a moment about it.

For instance, you may consider there should be a relation between speed of movement and stance:

* a unit should be always allowed to stand up in order to be briefly able to sprint, as needed. Good for assaulting, or evading enemy.
* a unit should prefer staying low when not moving and in danger, for example when returning fire

Then, you may consider there should also be a relation between stance and distance from enemy:

* a unit should prefer crouching to going prone, in CQB
* when being fired upon from distance while moving, it may be useless going prone as well, since that would slow down movement

By default bCombat implements the above basic concepts.
It closely cohoperates with vanilla stance handling, taking control in fighting situations.


bCombat stance handling kicks in due to triggered events and acts this way:

* Depending on triggered event type, it binds stance handling to 3 different progressive timeouts (e.g. 5 seconds, 30 seconds, 60 seconds):

* 1st timeout = Critical danger (usually a few seconds from last event)

	* Unit is ordered to keep down till timeout expire.
	* Unit may switch to crouch when crawling fast enough, in order to allow for faster evading.
	* Unit should go prone when idle (=not moving), preferring to crouch in CQB 
  	* This timeout is non-zero just for some special event types, for instance the "suppression" event, meaning unit is just under fire

* 2nd timeout = High danger:  (usually up to tenths of seconds from last event)

  	* Unit is ordered to keep low (crouch), till timeout expire.
	* Unit may stand up briefly to sprint, in order to allow for faster evading.
	* Unit should go prone when idle (=not moving), preferring to crouch in CQB 

* 3rd timeout = Moderate danger:  (usually up to tenths of seconds from last event)

  	* Default ArmA3 stance handling kicks in again


* Newly triggered events manipulate existing timeouts, stance handling is updated accordingly

---------- Post added at 10:57 ---------- Previous post was at 10:51 ----------

With bCombat, will there be rules for appropriate engagement? For instance a squad comes across ( or even sees ) an armoured vehicle, but have no AT - they therefore go to ground until it passes and do not attempt to engage it with small arms.

This is out of the scope of bCombat.

It was FlexAI meat, chance is it will come with bCommand.

That unless bCombat will fail to deliver proper tactical enhancements.

Edited by fabrizio_T

Share this post


Link to post
Share on other sites

Your daily pill, waiting for our private testing release, later this week ...


[b]FIRE & MOVEMENT[/b]

Regarding Fire & Movement, here is bCombat approach:

* As per ArmA3 default behaviour, fire has usually priority over movement.
* Whenever a MOVE order is issued to a unit being NOT under fire, movement is prioritized over firing (a single notable exception is CQB).
* Whenever under fire, shooting MAY take priority on movement, given all these criteria:

* Target is known
* Target is in line of sight
* Distance is compatible with weapon range
* Unit skill and morale are high enough
* Unit is not moving, or moving slowly, or movement direction is not much divergent with line of fire


[b]FIRE & MOVEMENT vs. MORALE & SKILL [/b]

Morale and base unit Skill do intersecate Fire & Movement behaviour:

* Low base skill or low morale limit unit probability to return fire, so they end up prioritizing movement (escape) against fire


[b]FIRE HANDLING[/b]

After one of these events is triggered:

* CORE AI "Can Fire" event
* SCRIPTED AI "Suppression" event

A unit will evaluate whether opening fire, depending on the concepts explained above.
Whenever shooting is cosidered the best viable solution, a fire task is issued to the unit.
So let's talk about tasks.


[b]TASKS[/b]

Tasks are scripts spawned at runtime, taking care of making custom actions.
They normally live just a handful of seconds.

Here is the task logic:

* A Task gets a type and a priority level.
* A a single unit can run just ONE task at once.
* A higher priority task will override and terminate a currently active lower priority task.
* A Lower priority task activation is refused whenever a higher priority task is active.

The only task type currently implemented in bCombat is the "Fire" task.
More task types may be declared and plugged in.


[b]FIRE TASK[/b]

Whenever a unit is required to shoot on a target, a fire task is issued:

* Unit is ordered to stop
* Unit is ordered to open fire

if unit does shoot, as expected, task remains active till either:

* unit dead
* target dead
* up to 2 seconds after last bullet fired or max timeout (about 10 seconds)
* higher priority task overriding

if unit fails opening fire within an opportunity window of about 2 seconds, task is dropped and unit is un-stopped.

It's important to notice that a fire task may be issued with different priorities:

* shooting a target of opportunity is a medium priority
* returning fire is a higher priority

This ensures the unit will be able instantly to stop firing at a target of opportunity whenever threatened.

Share this post


Link to post
Share on other sites

Sounds excellent Fabrizio!! Testing this along with ALiVE will make for an interesting weekend for me :p

Share this post


Link to post
Share on other sites

Wow, sounds really good Fabrizio, do you have any speculation or inkling of what other tasks you may want to implement in the future?

Savage, what is ALiVE?

Share this post


Link to post
Share on other sites
Wow, sounds really good Fabrizio, do you have any speculation or inkling of what other tasks you may want to implement in the future?

Savage, what is ALiVE?

Probably something along the line of ARMA Light Infantry Virtual Experience... something like that... I think I saw in someones sig around here somewhere

Share this post


Link to post
Share on other sites

Yeah if I told you I'd have to kill you :p

Mr. C is correct it is Multi-Session Operations (MSO) for Arma 3. I cannot say much other than it is a mod now and it is AWESOME

(sorry for off-topic, fabrizio)

Share this post


Link to post
Share on other sites
Sounds excellent Fabrizio!! Testing this along with ALiVE will make for an interesting weekend for me :p

my Only response is that bCombat is to be tested by itself..

Edited by Lordprimate

Share this post


Link to post
Share on other sites

Yesterday i've done some extensive testing and highlighted a few issues (i'd say annoyiong, but minor) to be ironed out.

Our schedule does not change. I'd like to distribute the testing package tomorrow, or friday at last.

Testers will be PM'ed a link to package.

NOTICE: Always keep in mind that it's a testing release, not something production ready.

Many things will work, many other will break. That's the reasons testers are way important, in this phase.

Now, daily pill.

[b]MORALE[/b]

"Events" are senses, morale is "nerves".
Morale is the residual combat efficiency of the soldier, afters some penalty is applied.
This penalty is a weighted effect of events.

[b]MORALE PENALTIES[/b]

Each and every event type may convey morale penalty. 
Some examples:

* enemy contact, being hit or a dead squaddie all cause, to varying degree, a sensible morale hit.
* Being under fire or enemy in sight both convey a mild morale hit, which further varies depending on:

* knowledge of the shooter: fire from an unknown source (e.g. sniper fire) will add to the morale penalty
* angle of fire: being fired from flank or back (e.g. ambush) adds to morale penalty

Morale penalties are not evenly applied, they're mitigated by skill: the higher the skill, the lower is the penalty (and viceversa).

[b]MORALE RECOVERY[/b]

Units whose morale was penalized progressively recover it, as long as no further events hit them.
Morale recovery rate is proportional to skill: so it's faster for highly skilled units (and viceversa).
However all wounded units suffer a relented morale recovery rate.

[b]MORALE EFFECTS ON AI BEHAVIOUR[/b]

As long as morale is full, any unit takes advantage from bCombat enhancements, roughly in proportion to its skill.
The more an unit is exposed to enemy event, the less it's able to use abilities:

* light morale penalty (STRESS), 0% up to 25% penalty

	* unit moves slower, trying to stay low
	* unit engages targets of opportunity
	* unit spends time to return fire
	* unit suffers light penalty in firing accuracy, courage and spotting distance

* medium morale penalty (FEAR), 25% up to 50% penalty

	* unit moves slower, trying to stay low
	* unit still engages targets of opportunity
	* unit spends less time to return fire, trying getting into cover instead
	* unit suffers medium penalty in firing accuracy, courage and spotting distance

* high morale penalty (PANIC), 50% up to 75% penalty

	* unit moves slower, trying to stay low
	* unit still engages some targets of opportunity
	* unit seldomly returns fire, trying getting into cover instead
	* unit suffers medium penalty in firing accuracy and spotting distance

* critical morale penalty (SHOCKED / BROKEN), 75% up to 100% penalty

	* unit may stick (pinned) or move around blindly
	* unit ignores most targets and usually avoids returning fire
	* unit suffers high penalty in firing accuracy, courage and spotting distance
	* unit may flee
	* unit may surrender if fired upon from close distance [ALPHA feature]

Edited by fabrizio_T

Share this post


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

×