Jump to content

Recommended Posts

14 hours ago, redarmy said:

Glad i stick with vanilla AI i can see this breaking every AI mod to date

How do you mean? New commands were added, old commands were NOT altered. 

Share this post


Link to post
Share on other sites
5 minutes ago, killzone_kid said:

How do you mean? New commands were added, old commands were NOT altered. 

i would assume  these new commands if implimented in user missions for example on Ai might not play well with someone whos running an AI mod at the same time.AI mods themeselves should still be fine

Share this post


Link to post
Share on other sites
8 hours ago, redarmy said:

i would assume  these new commands if implimented in user missions for example on Ai might not play well with someone whos running an AI mod at the same time.AI mods themeselves should still be fine

you can break someone's mod with old commands as well

Share this post


Link to post
Share on other sites

thanks for the "getAttackTarget" command , really helps some combat scripts.

 

feasibility of an "AttackTargetChanged" event handler? I want to adjust AI behaviour based on what their target is and this would alleviate the need for a monitor thread

 

  • Like 3

Share this post


Link to post
Share on other sites

Hello everyone,
 

Today I made a discovery about AI skills that is... rather confusing to me...
I couldn't find any relevant answer on the forums, so I'm posting this here, hoping that someone will be able to explain it.

I'm talking about the AI difficulty level ''Coefficients'' and how they affect the final skills of AI.

I was testing stuff with AI to balance a mission, and in the skillFinal command's description it says :

Quote

''Returns final, recalculated sub skill value of given unit. (with regard to AI Level coefficient (Difficulty settings)).''

So I wondered, ''How does AI level coefficient in difficulty settings interact with the subskills values ?''.
I couldn't find an answer anywhere so I ran a test.
 

I set AI Skill and Precision levels in the Game Difficulty Settings at various values. And for each of these values I changed the ''general'' subskill value of a unit from 0 to 1 (using 0.1 increments).
Then, I used skillFinal to obtain the true subSkill value, that is calculated by taking the AI level coefficient into account.
I noted the results returned by skillFinal in this graph :

Arma-Skill-Coef-Graph.jpg


So, if that's not clear, here's what this graph shows :

  • If you look at the blue line, it shows the final skill you get on a unit when using the setSkill commands, when AI Skill is set to 1 in the Game Settings.
    • For exemple, if you set the AI skill to 1 in your game settings, and then set any subskill of an AI to 0.2 in your mission, it's true subSkill value will be set to 0.6 instead. If you set a subskill to 0.6, it's true value will be set to 0.8.
  • If you look at the red line, it shows the results when AI skill is set to 0.5 in game settings.  
    • In this case, if you set any subskill to 1 in your mission, the resulting subskill value will be 0.9. You can't get a subskill of 1 in these conditions.
    • The most disturbing thing with this line is that, if you put AI skill on 0.5 in your game settings, and an AI subskill at 0.5 in your mission, it's true subskill will be 0.4625, not 0.5 ! And this just feels... wrong...
  • The green line shows what you get when you set AI skill to 0 : You can't get a subskill above 0.8. And any value of 0.2 or less results in a subskill of 0.

I have to precise several things :

  • Those result are not caused by the interpolation settings you can configure in the cfgAIskill. They are only dependant of the AI level coefficients set in game settings.
  • I get the same results in singleplayer, player hosted multiplayer and dedicated hosted multiplayer.
  • I get the same results for any subskill, except for aimingSpeed, which is capped at a 0.5 minimum because of the interpolation settings in cfgAIskill.

So, the way this works poses several problems (to me) :

  • First, it's highly confusing.
    • The AI Skill sliders in the Game Settings menu makes you think that AI skill settings are linear. But they're not. And there is no way to understand how these settings affect the inGame experience, except by testing them, again and again and again, in multiple situations, with a lot of people. Which takes a lot of time and is highly inefficient because results you get are highly subjective and hard to quantify.
    • The AI Skill sliders are told to work as coefficient for the final AI skill, but how does this coefficient apply ? A skill setting of 0.5 won't multiply all the subskills you set by 0.5. Instead it gives you a skill distribution following an affine function that's like y = 0.9*x... Where is the 0.5 coefficient in that ???
    • I've read forum posts dating from when those settings were implemented and explaining how they were supposed to make AI difficulty tweaking easier for players and mission makers... Well, I don't find this easy.
  • Second, it makes precise Testing and balancing of AI nearly impossible because no matter the value you set for a subSkill, it's true value will never be the same. You don't get what you set (Except if it's 1 or 0).
    • What's the point of having a setter if the values you get at the end does not correspond to what you set in the first place ???
    • Even when putting everything at 0.5, the skillFinal you obtain is 0.4625. That hurts my brain. It seems that in Arma, 1 does not equals to 1. And 0.5 does not equals to 0.5. I guess 1+1=2 is a rule for dummies too (just kidding).
  • I like it when AI skill is set to 1. The way it behaves is good to simulate conventional forces. But the only way to get an AI with suskills at 1.0 is to set the AI skill at 1 in difficulty settings. But if you do that, you get an AI with superhuman targetting abilities. Because even if you set it's aiming subskills low, first the aimingSpeed is capped to 0.5 minimum, and second the aimingAcuracy will grow really fast. So even with aimingAccuracy levels of 0.1, AI will still be pretty accurate. (this is compensated by the fact that endurance, suppression and other stuff affects AI precision but still, it's not convenient).
  • If you want AI subskill settings that are linear and kinda ''intuitive'', you have to set the AI game settings skills at 0.5. But then you can't get any AI with subskills at 1. They're all capped at 0.9. Which is a shame because the AI is at it's best when it's skill is set to 1. But with this system, you can't have AI that have average human accuracy, and a satisfying skill. You have to choose between OK accuracy but lower competence, or Good competence but over the top accuracy.
  • Capping the AI skill level at 0.2 in the Attributes, to prevent them from being too dumb, seems to be an irrelevant limitation. Because depending on how you set the AI skill level in your game settings, you can still get an AI with a skill of 0 if you set it low. And you will instantanously get an AI with superhuman skills if you set it high.


Maybe this is just me, and if I'm wrong, please correct me and explain me how all this system is supposed to work. But I feel it's just excessively convoluted and doesn't provide a good control over the AI skills.
I'm not going to discuss why things are like that and what game design decisions lead to this system (except if someone is willing to discuss it).
All I want is the possibility to have an AI that truly gets 0.5 subskills when I set them to 0.5, and 1 when I set them to 1, etc... I have a dream... I dream of a world where 1 = 1 and things are simple and straightforward (yes, I'm getting dramatic).
Or at least I'd like to understand how AI level coefficients work. What is the equation behind it ? Is it possible to modify the way they work ? (And please don't say it's magic like I've seen in some posts).

I've tried searching answer to those questions on internet, and in config files and scripts in the game, but couldn't find anything (yet).


So, does anyone have a clear understanding of how this system works, or a solution that would allow to make AI skill setting linear and simple ? (I'm not affraid to create an addon for this, but I'm not seeing how to do it right now).

  • Like 2

Share this post


Link to post
Share on other sites

I’ll respond more later at this excellent post that really highlights the frustrations of trying to make an AI with noticeable disparity.

 

in short in my own mod I try and make basic soldiers like accuracy 0.005

 

people have been complacent and fooled too long into thinking a simple .2 AI skill settings will make them tangibly worse than a 1.0 when it’s not true at all

  • Like 2

Share this post


Link to post
Share on other sites

Why in dev branch?

It seems to me this topic already exists (with the same graphs).

 

Share this post


Link to post
Share on other sites
17 hours ago, pierremgi said:

Why in dev branch?

It seems to me this topic already exists (with the same graphs).

 

Hah not to disparage my good friend madrussians thread but there is an even deeeper magic… the AI DEV once had a stickied thread JUST for this reason - to better determine AI Subskills. Seems the initial plan was to at first work with community feedback but seems they eventually said “F dat”

  • Like 1

Share this post


Link to post
Share on other sites
On 7/18/2022 at 6:49 AM, pierremgi said:

Why in dev branch?

It seems to me this topic already exists (with the same graphs).

  

Thank you pierremgi, I couldn't find that when I search.
As ImperialAlex already posted graphs on that subject in this thread, I suppose my graph have it's place there too.

  • Thanks 1

Share this post


Link to post
Share on other sites

SO, after some work, here are the answers to my previous questions, and the conclusions about Arma 3 AI that they bring to light.

And that will take us waaaaay further than what you woud expect.
 

Quote

Question : ''Is it possible to have an AI that truly gets a 0.5 subSkill when you set it to 0. 5 , and 1 when you set it to 1, etc ... ''


Answer : NO ! There is no simple solution for that.
If you are a mission or addon creator, read this attentively : no matter where you set the skill of an AI, it's final true skill will be different from what you've set. And often by quite a margin !  
There are some exceptions to this, like when you use setSkill 0 or setSkill 1 which often results in skillFinal 0 or skillFinal 1 (not always though).  
But except in some rare cases, no matter how you try to tweak the AI level settings, the interpolation arrays or other stuff, the skillFinal value will always be different of the setSkill value.  

This makes the setSkill command completely unusable because you never get what you set and most of the time you don't even know what you get in the end.  
The closest you can get to a 1:1 ratio between setSkill and skillFinal is by putting the AI skill and precision levels to 0.5 in you game settings, and using this interpolation array {0, 0, 0.9, 1} on every subskill in cfgAISkill. Which requires creating an addon. And the results are far from perfect.


Arma-Meme.jpg

The only way to give an AI exactly the skillFinal you want is by creating a setSkillFinal dedicated function.

A setSkillFinal command has already been requested but it has been answered here that it would not be possible :

 

So, MadRussian made it's own here.

I recommend using it if you want to tweak the AI skills in you mission, and for any test you run with the AI (warning, there might be copy-paste issues with the functions madrussian posted, they may require some cleaning if you want them to work).

 

NEXT QUESTION :

 

Quote

Question : ''I'd like to understand how AI level coefficients work. What is the equation behind it ? Is it possible to modify the way they work ?''


Answer : Just for fun, here is the equation I've found that calculates the skillFinal value of any subskill.

I doubt you will be able to use it for anything, but here it is. The True SkillFinal Equation.

It takes into account Difficulty Coefficients and Interpolation arrays.

skillFinal = ((S - 0.2) * ((-0.6) * D + 1) / 0.8 * (z - x) / (y - w) + (0.8 * D - 0.2 - w) * (z - x) / (y - w) + x) * ceil(0.2 * floor(S / 0.2) / S) - ((S * (4 * D - 1) - w) * (z - x) / (y - w) + x) * ceil(0.2 * floor(S / 0.2) / S) + ((S * (4 * D - 1) - w) * (z - x) / (y - w) + x);

In this equation :
- S = the skill value you put in the setSkill command.
- D = the difficulty coefficient you've set in your game settings. Either the skill level or the precision level value, depending on what subskill you are trying to set.
- w, x, y, z : the values in the interpolation array {w, x, y, z} relevant to the subskill you're trying to set.

 

I bet you have a few questions in mind seeing this :

- WTF is this monster ?

- Does it really work ?

 

Yes, it works, apart from some exceptions (I'm gonna explain).

Why is this equation so complex ? Because it is, in fact, a function composition unifying two linear functions, both calculated using six different parameters.

If you are interested in how it works, here are some explanations. If not, you can skip to the next part.
Look at the blue curve in the following graph. It represents the skillFinal values you get (on the Y axis) for different setSkill values (on the X axis), when the AI level coefficients are set to 1 in the game parameters.
Arma-Equation.jpg
As you can see, putting all those values on a graph creates a ''curve'' that could be expressed as an equation.
But you may have noticed that this curve has something strange. It doesn't look like your usual linear function, or even square or cubic or logarithmic or anything else-ic function.
As a matter of fact, it seems broken (which is a good metaphor for this entire system).

 

This is what's called a Corner function.

To obtain one of these, you have to use some tricks.
If you look at it, you will see that this graph is composed of two straight lines : One that goes from x = 0 to x = 0.2, and the other that goes from x = 0.2 to x = 1.

Those two lines can be expressed as two ''simple" linear functions like that : y = a * x (the first one could be y=3*x and the second one is y=(1/2)*x+5).

I say ''simple'' because in Arma 3, those linear functions are far from simple, and in truth, their equation are way more complex than y = a * x
That's because they are the result of (weird) interactions between setSkill value, the Ai Level Coefficient, and each of the four values contained in the Interpolation Array of the respective subskill.
So those are not simple at all, even if in the end... they just draw a line.
Once you've found the two linear functions separately, if you want to create the corner function you are seeing, you have to take those two overcomplicated functions, and assemble them into a single function using a technique that's called Function Composition.
And that's not simple either.

Once it's done :

Congratulations Frankenstein, you are smart and you created a monster !

 

If you want to use this equation to create a setSkillFinal script, you need to extract the ''S'' value from it, and express it as a function of skillFinal.
And now I think you understand why BI devs never bothered to create a setSkillFinal command.
That's way too f****** complicated, and as Oukej said '' I'm afraid this is something that would require many exceptions''
And many exceptions there are. Indeed, this equation works most of the time, but it starts losing precision with Difficulty Coefficients <= 0.25.
That's not because the equation is wrong, but due to the way some exceptions have been handled to calculate skillFinal.
For example, in some cases this equation will lead to zero divisor errors. To account for it, the expressions causing the issue were set to a value approximating 0, like 0.00999999, or 1.17549*exp(-38) depending on the case.
That's one exemple, but the Interpolation arrays used in the subskills system add a whole lot of situations where exceptions can occur. And these exceptions need to be handled, resulting in a lot of small adjustments.
All these small adjustments causes variations in the results given by the skillFinal command, that an equation can't replicate on its own.

That's why this equation is useless. And in order to create a setSkillFinal function, the way to go is to take a more procedural approach, as MadRussian did in its own functions.

Now here are some remarks :
The whole AI difficulty system was originally meant to be easy and user friendly, so everyone can get a better experience.

 

Quote
  • DEFINE how individual AI config params affect AI behaviour, document and refine these settings 
  • PROVIDE the player more meaningful control over the difficulty of the AI (global configuration) 
  • ENABLE mission designers more useful control over AI configuration (per-unit configuration) 


Instead, we have a system where players, addon makers and mission creators can all tweak AI difficulty in their own convoluted ways, interfering with what the others are trying to do, while having no idea of what they're doing.

  • Addon makers tweak Interpolation Arrays, imposing their limits to the other two. They can also break balance with a whole lot of other stuff they don't even know can influence AI, like some weapons and terrain parameters. But that's an other topic.
  • Mission creators tweak subskills using the setSkill command, which is almost random at this point and will never give the results it's supposed to give.
    • They gained control over AI configuration, as originally intended. But these controls are more deceptive than useful, they are not true controls...
  • In the end, it's the players that adjust EVERYTHING with two sliders, and have no clue of what they are actually doing. Those sliders look like they are linear,  but in fact their results are absolutely not. This results in the players always being frustrated and complaining about the AI being too much of This and not enough of That... and then trying to tweak it using the custom AI Skill and Precision settings, which don't do what they seem, and interacts in unpredictable ways with what the mission creators and addon makers designed.

Of the three participants, it's the player that can do the most dramatic changes to the AI. Whereas it's him that has the less understanding of what's going on, and the less precision on what he can adjust.

These changes are indeed very important, but in no way meaningful as the player doesn't understand what he is doing when he changes the difficulty settings.

In the end, Everyone is confused about how this whole system work.

 

Now that I think about it, I've been in four big Arma 3 teams in the last 4 years. In all those teams, every week, every mission, at every debrief, someone has something to say about the AI.
Despite the best efforts of 7000+ hours players, trying to propose the best experience they can, using complex AI mods and scripts they've tested and tweaked for several years, it just doesn't work.
There's always something that doesn't feel right.

 

Now, Let me explain SIMPLY how the AI difficulty system works in Arma 3 (and why it is broken) :

In order to do that, I need to explain how difficulty systems work in most other games first.

Note : This is AI related, but it is also difficulty related, which is a broader level. I post it here anyway, This post can always be moved somewhere else if it is required.


Every video games worth it's name has what's called a difficulty curve.

The difficulty curve represents how difficulty evolves as the player progress into the game.
It's one of the most important part of game design, because its goal is to keep the player interested in the game.

  • If the difficulty curve is too steep, challenges are too hard to overcome and the player will be discouraged and will stop playing.
  • If the difficulty curve is too shallow, the game is quickly going to become easy and repetitive, and the player will be bored.

Game designers try to keep the player "In the flow". That means, immersed and enjoying its time on the game. To achieve this, they have to strike the right balance with the difficulty curve of the game : Not too hard, but not too easy.
That's where a big problem arises : Players have a wide range of skills and what may seem too hard for one may also seem too easy for another.

To overcome this, games use what we could call Difficulty Profiles. They allow the player to choose between several broad options : Easy, medium, hard, etc...

 

This kind of system is probably very familiar to you, but I have to say, in Modern game design this is considered as bad design. Here's why :

  • You ask the player to choose himself the difficulty, whereas he haven't played yet and don't know what to expect.
  • As a game designer, you are the one that knows how the game inner mechanics work. And yet, you ask someone that has zero knowledge about them to choose some of the most important parameters that will affect the gameplay.
  • The difficulty profiles system is often a symptome of the fear, the inaptitude, or the lack of will of the developement team to design a game with a smart and well tailored difficulty curve.
  • There are also more technical reasons that I don't need to detail here.

I say that considering difficulty profiles as a bad thing is a modern point of view, but in truth, it dates back to a while. In fact, Shigeru Miyamoto himself told that he voluntarily put hard levels, hard bosses and hard enigmas in Mario and Zelda games he designed, so that gamers would go out, meet and talk to each other, to help one another overcome the game challenges. Try to picture a Mario or a Zelda game where you would have Easy, Medium or Hard difficulty options. Well, that game would be absolutely anecdotic and would never have encountered any success. That's because allowing the player to avoid the challenges of the game does not make the game better !
You have to understand that games are not just about having fun, they are also about overcoming challenges. And that should always be kept in mind when designing a game, especially when designing its difficulty system.

And if the AI is what's meant to bring the game challenges, then these considerations must influence the way the AI is designed.

 

Once that's said, it's totally possible to design great games using difficulty profiles, as long as it is done Well (mark my words).

 

So, How do you design difficulty profiles in a good way ? Well First, you have to understand what your game is about.

For example :

  • Civilization games are about racing against the AI (they're not really about building civilizations, I know, that's sad). So the different difficulty profiles of the game give bonuses to the AI, helping them to achieve victory faster.
  • Mario kart games are about quick reactions and quick thinking. So when you go up in difficulty, you drive faster cars that challenge these skills.
  • Minecraft is about survival. So higher difficulty levels make monsters hit harder, but they also reduce or suppress your regen, add hunger, make poison more deadly, spawn more monsters, etc...
  • Call Of Duty games are about violent and dangerous firefights. (At least they used to be) So higher difficulty levels make AI more aggressive and increases damage. Now they even start adding realistic features like removing the crosshair.
  • Flight Simulator games are about flying planes. So most difficulty options give you more chances to crash and make flying harder.
  • Etc...

This seems rather simple. Until you try to answer this basic question : "What is Arma 3 about ?"
Is it a military sandbox ? Is it a tactical shooter ? Is it a military simulation ? Is it an anti-war education software ? Is it even a game ?

 

Maybe you're like : "Well that's easy, Arma 3 is a tactical shooter, as it's always been advertised !"

Well that's not so simple, but for now let's say Arma 3 is a tactical shooter.

According to this, most people will think : "Arma 3 is about tactics and shooting, so these AI difficulty sliders I've been given must increase AI's tactical and shooting abilities".

 

And here we have several problems arising :

  • AI Coefficient sliders mostly increase the AI shooting abilities, but barely affects its tactical abilities. That's counterintuitive because Arma 3 is not "a shooter with tactical elements", it is "a Tactical Shooter". Tactical abilities should be prioritized in the way AI difficulty scales up, but they're not.
  • AI level coefficients and AI subskills doesn't really change AI tactical abilities. Instead, they change AI individual performances. Things like reaction times, how far they can see, how fast they reload, etc... Although all these things may help them being more efficient on the battlefield, they don't teach them smart tactics. Increasing AI skill doesn't make them perform proper room clearing, ambushes, or combined armed assault. It doesn't even make them do basic stuff like communicating from group to group, pulling 360 security, adapting their formation to the terrain or using successive bound (well, they do it a little when skill is set to 1, that's a start but that's far from being done in a proper and efficient way).
  • There are ways to influence some of these tactical behaviours. For example disabling FSM makes AI less organised. Disabling their radio protocols makes them more reactive as they act without waiting that their leader finishes speaking. Using triggers, waypoints and logics allows to set up ambushes, QRF and other tactial organisation stuff. But those settings and behaviours are out of reach for the player. They are not influenced by difficulty coefficients the player can adjust. And they are not easy to pull of for mission creators either so they're quite rare and usually badly executed.
  • Moreover, the way AI subskills work is far from intuitive. For example, here is the description of the commanding subskill : "Affects how quickly recognized targets are shared with the group". But no matter on what value you set it, as soon as an AI has spotted you, every other AI in the group knows instantly and precisely where you are and is able to target you through terrain and objects... But at the same time, if two AI are in different groups, you can kill one in front of the other and it won't react....

That's why the AI and the difficulty system in Arma 3 are so frustrating to the players and generate so many complaints. When players crank Up the AI skill, they think they're gonna have to deal with flanking manoeuvers, encirclements, and other vicious moves for epic moments. But instead, they just get plucked out from nowhere by autistic demi-gods...

 

That explains how things are broken on the "tactical shooter" side of Arma 3 but wait, there's more ! Because saying that Arma 3 is just a tactical shooter is quite reductive.

 

Here is how Arma 3 is described in Wikipedia :

Quote

Arma 3 is an open-world, realism-based, military tactical shooter video game

 

This is how Arma 3 is described on the official website :

Quote

Experience true combat gameplay in a massive military sandbox. Authentic, diverse, open - Arma 3 sends you to war.

 

This is how Arma 3 is described on it's english steam page :

Quote

Experience true combat gameplay in a massive military sandbox.

 

As you can see, there are a lot of words to describe what Arma 3 is about. But here comes the most interesting part.
This is how Arma 3 is described on it's french steam page :

Quote

Experience an open-world military simulation. With over 20 vehicles, 40 weapons and an unlimited editor for your creations, this military simulation is the best on PC, in solo or multiplayer.

 

Yes ! You read it ! A simulation ! Arma 3 is actually advertised as a simulator in some countries !

And even if some people have tried to talk about Arma 3 as nothing more than a tactical shooter. Even if Arma 3 have tried not to be a simulator, well... Most people refer to it as a simulator. Even veteran players having played Arma 2 and OFP refer to Arma 3 as a simulator, press refers to Arma 3 as a simulator, every noob and its mother refers to arma 3 as a simulator. And you don't design a simulator as you would design any other game.

 

So, is Arma 3 a simulator ?

As a milsim player that spends most of it's time on this game trying to turn it into a simulator worth its name, I would say No, obviously it is not.

BUT !

We need to remember that Arma 3 has its roots deep into simulation. Arma 2 and OFP were advertised as simulators, and all those games are derived from VBS which is... well... a simulator sold to the military for training purposes.

Why is this important ? Because that means you can't take Arma 3 and treat it like it's an Arcade Game.

Putting difficulty profiles on it won't work correctly. Because in the end, Arma 3 is just not compatible with that kind of design.

 

Let me put it in another way :

  • BI devs tried to put difficulty profiles on Arma 3 AI to ease things for casual players and to make them feel more at home.
  • Now, try, for one second, to picture this : Flight Simulator devs trying to put difficulty sliders on their game so that it feels more like Ace Combat.

Can you see how that's not gonna work ???

 

This leads us to several, very important notions :

  • Players complaining about the game being too difficult doesn't mean that you will correct the problem by allowing them to reduce the AI performances. There are other ways to ease the difficulty curve than adding dumb sliders. Here are some examples :
    • If players can't get the game to work in a satisfying way with the three default profiles (recruit, regular, veteran), maybe that's because those profiles are unbalanced. Editing them may bring better balance to the game and more enjoyment for players.
    • Just making a better AI would help. I'm talking about an AI that doesn't walk through walls, see at 320° around her just by turning slightly its head, or use telepathy to gain knowledge on your exact position and target you through the walls, etc... this could help. Creating a human-like AI is not so hard. You just need to stop thinking as a developer, and to start thinking as a human being. Examples :
      • "Hey ! Someone's been killed in front of me, what should I do ?! Bah, he was not even in my group. Let's just ignore that."
      • "Oh, I heard some footsteps behind me. Maybe I should turn my head to look back, so I can see what it is ? NO, these are the footsteps of an enemy ! I could recognize them among a thousands ! Now don't panic, and remember your training : First, raise your weapon in an aggressive way. And then slowly rotates towards him in the most unatural manner possible. Let's see how this b****** will deal with that."
      • "Oh, you spotted an enemy 300 meters on our left ? Hmm... I can't see him from here. I definitely don't know where he is and have no way to know it. Don't pay attention to my gun barrel automatically pointing to its exact position, it does that on it's own I can't control it."
      • "Is this a building ? Oh boy, I heard they are haunted. If the enemy is in there his soul will soon rest in peace. Let's not go in there... Ever... Even if we're fifteen and he is alone."
      • "Great ! Someone gave us a waypoint to this place ! Now what ? What are we supposed to do here ? Why are we here ? How many allies do we have ? where are they, what are they doing ? What goal do they seek to achieve ? Do we know about enemies in this area ? From where are they supposed to come from ? Weeeeeell I have no clue and I will never have. These questions are useless to me. I just have to wait here. Aaaaah What a beautiful spot... Oh, a butterfly ! I know, I'm just a beautiful butterfly ! Standing here in the open... Enjoying the sun... butterfly stuff yay ! *proceeds to get mowed down by an enemy machine gunner*"
    • Most campaign missions are designed in a bad way. In most solo missions, you have to take on overwhelming enemy forces, better equipped than you, and with a more efficient organisation. Whereas all you have are 4 to 6 allies, badly equipped, badly protected and underskilled. And they won't do anything by themselves. You have to micromanage them with very poor and cumbersome controls. It's so bad that most players just give their allies the order to stay in a corner and then try to take on the mission alone. In these conditions, even if the AI is set to easy, the game is still difficult and frustrating for newcomers.
    • The truth is that even if AI have almost no tactical abilities, most players are even worse than them. So actually teaching players efficient tactics and how to behave on a battlefield will make them a lot more successful and will ease the difficulty curve.
  • Giving players the ability to downgrade difficulty and challenges won't help them to enjoy the game more (most of the time). Franchises like DarkSouls and their derivatives, or even Final Fantasy gained insane popularity just on the gimmick that their bosses are hard !
  • Simulations are usually considered hard, but that's what makes them interesting : You need to acquire useful knowledges in order to succeed in a simulation. Hell, I spent several days learning about corner functions and equation composition just to write this post. And I don't see that as a loss of time. I gained a lot of knowledge thanks to Arma 3, on subjects that most people would consider as completely unrelated to video games. That's the beauty of it !

And finally, the most important point of this post. We've stated that, even though Arma 3 is not a simulator, it has its roots deep into the simulation genre. Now read this attentively :

ONE OF THE WORST ERRORS YOU CAN MAKE WHEN DESIGNING A GAME IS TO TURN YOUR BACK ON ITS ROOTS !
This is important not only for video games but for any series of art work. How many video games or books or movie series have disappointed you because at one point, they took a turn that changed the way they felt ?

And you look at them and you're like "I prefered the first one... It was better before... They completely destroyed it... I wish they had just done the same game but with better graphics, that's all they had to do. It was so simple how did they messed this up ?"

Do you see what I mean ?

 

Here's the point : Maybe Arma 3 is not a simulator, but maybe it should have been... Maybe that's what it wants to be and maybe that's what people want it to be. This whole "AI is dumb and difficulty is off" thing is caused by Arma 3 not knowing where to sit between its Simulation Roots and its Arcady Wishes.

 

As a matter of fact, you can't take smart and constructive game design decisions if your game is a weird middle ground between two opposing philosophies. You can't satisfy everyone, and you have to pick a side.

And in case you don't know what side you should pick, well, the answer is GO BACK TO YOUR ROOTS. GO BACK TO YOUR INTENDED AUDIENCE. RESPECT THE PEOPLE AND THE RULES THAT MADE YOU GREAT IN THE FIRST PLACE.

 

The roots of Arma 3 is simulation. That's not a heritage you can easily forget. As such, its AI difficulty settings would probably be way more relevant if they were organised like they would be in a true simulator. They should allow you to tweak your experience by adding different layers of complexity to the game. Not by giving AI superpowers or making them completely dumb. AI in a military simulator should be seen as a tool for the players to simulate diverse military scenarios. And as such, they should be designed with simulation standards in mind. And it doesn't matter if it is complicated. Nothing is too complicated when it's explained correctly. As long as it makes sense.

 

So remember : if you have a great series of video games that gained success over the years thanks to the unique possibilities they offer to their player base, stay true to your roots.

As Arma 4 is in developement and Arma Reforger seems to have rather poor success, I hope this note will be read by the relevant people.

People don't buy Arma games to play a cumbersome versions of Squad or Battlefield. They buy Arma games because they are the closest thing to a Military Simulator available on the market.

Any attempt to create an Arma game that does not match this philosophy will fail (Hello Project Argo)

Steam-Chart.jpg

 


But let's go back to Arma 3, and it's AI difficulty system.

Let's disregard all we've said until now, and let's imagine that adding difficulty profiles to Arma 3 is a GREAT idea and that it is the way to go !
Let's see how most game does it.

 

Most games have 3 to 5 difficulty profiles because it is considered as the sweet spot : Not giving too many options to the player, but giving them enough so they can find what suits their tastes the best.
And those difficulty profiles are usually just flat bonuses or maluses, increasing difficulty in a linear way.

 

For exemple, let's imagine a game where the base difficulty curve looks like this :

Difficulty-Curve.jpg
If you add easy, medium and hard difficulty profiles, then the difficulty curve will probably look like this :

Difficulty-Profiles.jpg

 

Simple, right ?

Well, that's not how it goes in Arma 3.
Instead, in Arma 3, difficulty profiles shape the difficulty curve like this :

Arma-Skill-Coef-Graph.jpg

Changing the AI skill and precision levels in your game settings does not just crank up AI skill and precision in a linear way. What it does is changing the shape of the difficulty profile curve. Which is used to calculate AI final skill according to the setSkill values that the mission creator have used.


At first glance, this doesn't seem to terrible. Let's study it more in detail :

As you can see, a 0.5 difficulty creates a nearly linear difficulty curve (the red one). It's not perfectly linear though, as the max skill possible is 0.9 where it should be 1.

A difficulty of 0 also create some kind of linear curve, but crushed down on the x axis as it can't be negative.

But a difficulty of 1 creates a corner curve that grows really fast for x values <0.2 and then progresses really slowly for x > 0.2, because it's already high.

 

You can also notice that the difficulty curves are joined together at X = 0. But they are not joined together at X = 1. So, at any given AI level setting, if you set an AI subskill at 0, the result will always be 0. But if you set it at 1, the result won't always be 1.


Now I'd like you to take note that the spacing between the curves is not linear either.

One would think that, as 1 = 2 times 0.5, values returned when difficulty is set to 1 should be two times the value returned when it's set to 0.5. Well that's not the case.

 

For exemple, look at the values of the 0.5 difficulty curve (the red one) when x = 0.2. It gives Y = 0.2. Now look at what the 1 difficulty curve (the blue one) gives when x = 0.2. It gives Y = 0.6 ! 3 times more.

 

You may think "Ok, no problem, setting difficulty to 1 makes the game 3 times harder than setting it to 0.5. It's weird but I can cope with it." Well.... Now repeat the same experiment for X = 0.6.

For X = 0.6, the 0.5 difficulty curve gives Y = 0.55. And the 1.0 difficulty curve gives Y = 0.8. Thats 1.45 times more. not 3 times more as it was before...

 

Now, let's say you'd like to put the difficulty under 0.5. Let's say you want it at 0. One would logically think, "0.5 is half way between 1 and zero. So the red curve should sit hal way between the blue curve and the green one. So if I set the difficulty to 0, and AI subSkills to 0.6, I should get a skillFinal of 0.3." Well... no, you get 0.4...

 

If you don't understand everything, that's alright. The point is that this entire difficulty system is completely unpredictable for the average player. And also for Mission Editors. And also for Addon Creators. And probably also for BI Game Developers.

 

As if that was not convoluted enough, Interpolation arrays can change drastically the shape of these difficulty curves. Difficulty won't go up in the same way if you tweak interpolation arrays. And there's one for every subskill.

 

As a result of all this, The only case where you know that the skill of an AI in your game will match the difficulty or subskill values you've set, is when you set them to 0. Every other intermediate value will result in a mostly random difficulty on the player's end.


For the player, the same AI level coefficient can produce very different AI performances from mission to mission, depending on how the mission creator thought it was good to set its AI subSkills.

And for the mission creator, the same subskill settings can produce very different AI performances from player to player, depending on how they think they should set their difficulty parameters to enjoy the game.

 

This would already be a headache with three different difficulty profiles. Like Recruit, Regular and Veteran. But in Arma 3 the player have access to the custom difficulty sliders.

 

Remember when I said that 3 to 5 difficulty profiles were the sweet spot ?
Well in Arma 3, you can change AI difficulty with two sliders, each one having eleven positions, which gives a total of 121 unique difficulty profiles. For each of the 8 subskills existing. And that's without taking interpolation arrays into account.

 

Quote

Question : In these conditions, how can Mission Creators, Addon Makers and Game Developers design good and convincing AI ?

Answer : Well, at first glance, they can't. At this point, giving every AI completely random sets of subskill values would probably bring more fun to everybody than trying to balance them so that they offer interesting and realistic gameplay.

 

For all these reasons, Arma 3 AI and its difficulty settings are absolutely BROKEN !
 

I just said that trying to balance AI in arma 3 is a lost cause and that making it completely random would give better results.

To be honest, I'm not really That pessimistic.

 

In fact, I think there is a way to design good AI in Arma 3. And in any Tactical Shooter or Military Simulator for that matter :

1. Override this whole difficulty system. Do not use difficulty profiles to try and balance your game.

2. Create AI that has equivalent performances to real people in real life. This will allow to create AIs with above or below-average performances, in order to get easier or more difficult AI.

3. Pit players against those AI and see how they fare. What is considered easy ? What is considered difficult ? How many average AI an average player can kill ? etc...

4. Using all those data, design different unique types of AI. Those AI types should have different performances and behaviours, in order to replicate their IRL counterparts. Having diverse unique AI types will offer varied options to Mission Creators, and various unique challenges to the Players. Examples of different AI types : Gangster, Taliban, Recruit, Special Forces, etc... All those different people fight in a different manner, with different performances, having different strengths and weaknesses. Those should be transcribed in-game, and the player should be able to witness it, to feel the difference, and to get the upper hand on its opponents by obtaining knowledge about them and by adapting its tactics to theirs.

 

That's how I'm gonna try to do it. And I hope that's what AI Addon Makers and BI Developers will try to achieve in their next productions. Thank you for reading me.

 

  • Like 6
  • Thanks 2

Share this post


Link to post
Share on other sites

Okay, good part of analysis...

I don't how often you play to arma but it seems to me you're focusing on figures and percentages of...  what? some skills/behaviors like aiming speed... or endurance... or courage...

because, on the contrary of real world, you need to gauge that by a figure for your CPU. I'm sure most of readers here can't say what _finalBoss setSkill ["aimingSpeed", 0.33]; does really mean and how it's treated by engine.

 

If I read you, you would like to see a wider range for an AI 3 times harder to kill / 3 times smarter for killing you, instead of 1.45,... without a clear idea on what is done by engine.
For example, reloading a weapon X3 faster (realistic?), running 3 times faster or longer, aiming at 3 times the distance, with 3 times better accuracy and 3 times faster... will do this trick?

In other words, why should we care for the difficulty coef which multiply figures by 1.45 instead of 3, if I don't know how engine works in reality?

Note: Anyway, not sure you will easily survive against a difficulty set to max and AIs skilled at max.

 

Arma has a fantastic amount of possibilities, for plenty of maps and scenarios. You can just try/test different versions of custom difficulty and AI skill. Or go deeper:

You can even mod your own units without forgetting these points:

1 - whatever the difficulty and skill settings could be, the realism is limited by the treatment for AIs' lines of sight, stances, and multiple factors like (not exhaustive):
for a BLUFOR rifleman "B-soldier_F" class:
 

Spoiler

 

aiBrainType = "DefaultSoldierBrain";

airCapacity = 10;

audible = 0.05;

camouflage = 1.4;

crouchProbabilityCombat = 0.4;

crouchProbabilityEngage = 0.75;

crouchProbabilityHiding = 0.8;

detectSkill = 12;

fsmDanger = "-";

fsmFormation = "Formation";

impactDamageMultiplier = 0.5;

impactEffectSpeedLimit = 8;

lyingLimitSpeedCombat = 1.8;

lyingLimitSpeedHiding = 0.8;

lyingLimitSpeedStealth = 2;

maxDetectRange = 20;

maxSpeed = 24;

 

 

Some coef may change with the type of the unit (not saying vehicles), but there is few difference here between this rifleman and a sniper. Roughly:

camouflage = 0.6; // for a sniper;

camouflage = 1.4; // rifleman (bigger means easier to see)

accuracy = 3.5; // sniper

accuracy = 1000; // soldier

So, yes, you could be a little bit disappointed when trying to compare a sniper and a rifleman, with or without the same weapon (weapons have also their profiles).

If you want more details, watch for your existing units in config viewer (right click on it). and also read this link.

 

2 - Maps, vegetation, paths, objects, quality of houses... are dramatically impacting the final result, no matter the skill. (AIs passing thru walls or unable to cross a rice paddy, seeing players across bushes, or not...)

 

3 - the more complex scenario, the best way to make AIs dumber and dumber. Just because there is just one poor "brain", say engine and its scheduler, for managing multiple AIs' behaviors. Each time you load the bark with hundreds of units, don't wait for their reactivities. See performance settings and dynamic simulation.

 

I script for years scenarios which have a central theme (tasks generally) but multiple patrol areas or group attacks widely randomized in number, nature, skill of units / vehicles. Skill is not the keystone of the encountered danger. Of course, nature of units, groups and vehicles can evolve during game for progressivity.

 

Enjoy with Arma.

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, pierremgi said:

I don't how often you play to arma

Here is my steam profile. Although I may have left the launcher open in the last few days lol.
profile.jpg
I'm also the author of "Enhanced Map", "Enhanced GPS" and "True breaching Alpha release", which are quite popular.
I still have a lot of things to learn obviously. But still I know one or two things about Arma 3.
 

 

1 hour ago, pierremgi said:

If I read you, you would like to see a wider range for an AI 3 times harder to kill / 3 times smarter for killing you, instead of 1.45

Not at All. My point here was that, with the way the difficulty and AI skill system is done currently, you can't get consistant and predictable results with it. Put your difficulty levels to 1, and AI may get 3 times better performances than if you put it on 0.5. Or maybe they will only get 1.45 times the performances, or even 1.11 times the performances. You never know. You have no way to know. You think you've doubled their performances by doubling their skill coefficients, but in truth that's not the case. At all. And from one mission to another, with the same difficulty settings, the AI may be on a completely different skill level.
 

1 hour ago, pierremgi said:
  • ... without a clear idea on what is done by engine.
  • why should we care for the difficulty coef [...], if I don't know how engine works in reality?

You seem to know how the engine work, contrary to me. So go ahead, explain... I've posted here in the first place because I want to understand this whole system. So if you know its inner workings and can explain how they work, please do it. And if you don't really know how it works, please don't use that as an argument to contradict me just for the sake of it.

 

1 hour ago, pierremgi said:

You can just try/test different versions of custom difficulty and AI skill.

Not really, because there are 121 different combinations of custom difficulty, and you don't know which one the players are going to use. And a difficulty coef of 0.7 and a difficulty coef of 0.8 can land very different results in an unpredictable manner, due to the sheer amount of variables intervening in the equation.

I agree on the rest and as I stated, I know there are a lot of external factors that influence the AI. But in the end, it's the players who have the most influencial control over it, while having the least knowledge and the less precision with those controls.

6 hours ago, H O P L I T E said:

Addon makers tweak Interpolation Arrays, imposing their limits to the other two. They can also break balance with a whole lot of other stuff they don't even know can influence AI, like some weapons and terrain parameters. But that's an other topic. 

 

 

 

1 hour ago, pierremgi said:

I script for years scenarios which have a central theme (tasks generally) but multiple patrol areas or group attacks widely randomized in number, nature, skill of units / vehicles. Skill is not the keystone of the encountered danger. Of course, nature of units, groups and vehicles can evolve during game for progressivity. 

I know that skill is not the only factor in the difficulty and dangerosity of the AI. But it's the only one players have access to. And on the mission creator side, even if you can balance difficulty by other means, that don't make AI smart, or enjoyable, or diversified. In a mission, a FIA soldier will act in exactly the same way as a CTRG soldier, even though one is an underskilled insurrection guy and the other is an overtrained special forces operator. In arma 3, no matter the factions you fight, no matter their equipement, you always feel as you're fighting the same enemy with different skins. Sometimes they have more menacing assets, like armour, sometimes they have more health or better equipement, like the RHS russians who have insane amount of body armor. But in the end, they all feel dumb and not realistic.
Mission creator and Addon makers can do something for it, but that's no simple task and at the moment, nobody have done it. Or at least nobody have got it quite right as far as I know.

But even though skill is not the only factor in the difficulty of the game / encountered danger, it's still one of the most important. If you believe that it just allows for minor adjustments, you're wrong and here are some datas to prove it.
With identical equipement, face to face on completely open terrain with no cover (virtual reality), in vanilla.
- I'm able to kill 3 units having all their skills maxed out (and with difficulty set to 1.0 everywhere) when I'm alone.

- I'm able to kill hundreds of units having all their skills on 0. So much that I can't give a precise number, because running this test was taking me too much time so I had to stop. But we are above the 200.
- Against 0.8/0.7 AI on an H&M mission, I can consistantly kill 25 of them by myself, and my personal best is 75 without dying (I was only stopped because the admin needed to restart the server)

 

So, yeah. Skill levels can do an enormous difference. At least a 60 times difference in the number of AI one can kill alone. That's why they matter, and that's why the way we can control them is important, and that's why the fact that they don't do what they should creates a ton of problems for everyone.

  • Like 1

Share this post


Link to post
Share on other sites

@H O P L I T E I would just say I get you man but you're on a pretty lost cause here .I used to try and be vocal as hell about the inconsistencies and problems with the AI, their subSKills and how they play out and the Devs simply dont want to hear it. There used to be a point in which you could reliably create Bad Ai, reliably create moderate ability AI, and the ability to make very good 'abilitied AI' -but that point was lost some where in the world of the "interlocution graphs, charts and maths". I spent a good part time career's worth of just test AI and trying to get them reliable because lets face it Arma would be the BEST game ever had it had the trajectory level and expected from Operation Flashpoint made over 20 years ago. Did they put in 20 years worth of AI progress likened to that trajectory? Ill keep my peace on that and just stay hopeful that they have either rededicated their AI staff or hired some new fired up AI programmers for Reforger and the future of this series.

  • Like 4

Share this post


Link to post
Share on other sites

@froggyluv Yeah, I don't hope anything from the devs, as correcting this would require deep changes and make a lot of missions unplayable. And they're probably busy on Reforger or Arma 4 right now, but at least maybe that will help them to avoid some mistakes. I made this post mainly for mission creators and addon makers.

Share this post


Link to post
Share on other sites
On 7/24/2022 at 9:12 PM, pierremgi said:

Maps, vegetation, paths, objects, quality of houses... are dramatically impacting the final result, no matter the skill. (AIs passing thru walls or unable to cross a rice paddy, seeing players across bushes, or not...)

 

Are you saying that the reason the AI goes through walls is because the quality of the houses is not enough? I often see this on Stratis and Altis, are the houses on these base maps really of poor quality? Doesn't look like the truth, because these are the oldest and exemplary quality maps from Arma3 developers.

 

Throughout the life of Arma3, I have been worried about the problem of AI being able to pass through fences and walls of buildings. I still can't imagine why this shame is still present in Arma3? I don't think it's a problem of the lack of super ai-intelligence. The question arising before me - why is the Collision Mesh model unable to block their physical passage through, as it does with players?

Yes, I've already heard that BIS gets rid of cases, where the AI would get stuck inside the building, but I would rather this option than the option where the enemy AI goes through the walls and shoots me in the back. In addition, AI still has a chance to get stuck in buildings, passing through walls and whistling in a swimmer's pose, which looks even more stupid, if AI just stayed indoors.


Questions:

* is it really so difficult to prescribe predefined paths for AI inside any buildings, so that they do not deviate from their paths and could not pass through the walls?

* how can user explain the passage through the fences? There is no chance for the AI to get stuck forever, but the AI will still not have impact from fence Collision Mesh models.

 

Сonclusion:

I have not seen a single mod that can solve the problem of AI passing through physical barriers.

Moreover, I use LAMBS Danger mod. It's a great mod, but I think it exacerbates the problem of AI going through walls. It happens more often.

All this upsets me and I'm already losing faith, that someday in Arma3 AI will stop passing through walls.

 

@pierremgi I would like to know what you think about it? 

Share this post


Link to post
Share on other sites
3 hours ago, mickeymen said:

@pierremgi I would like to know what you think about it? 

 

I'm not a map or units modder so I'm not the right man for deep explanation. I hope someone will take over from me here.

I don't link "quality of houses" and the fact units can pass the walls.

Quality of houses, as referred above, was rather the way interiors were created. Some houses have none (Tanoa is a pity for that). Some others have positions but no paths, and the best ones have positions and due paths/ladders (and enough room to let AIs walk: some balconies are just traps for them, unable to u-turn). Some positions are not really placed on floor but, for a reason I don't know, seem to float above or under floor (hotel Tanoa is an ugly example). Imho, You can't do anything practical for that (but see this interesting post), except modding your own houses/map?!

 

What I guess is that there is not so much units passing thru wall if edited. Problem probably arises more frequently  with spawned units... I didn't find clear explanation about this problem.

Terrain slope and vector up for walls / houses? sync between server and client(s)? No clue.

Some modded maps are great for game (Takistan) but it's hard to spawn units on due interior position. They prefer spawning under floor (on ground) especially when the slope is significant (and I didn't find an universal and light workaround for that). Generally, these units also pass thru walls... from exterior to interior, not really by the other way.

On the other hand, some (fence, house) models are just inherited of a common one, no matter the fact it's a destroyed or shabby one. Best example is that player can pass thru ruined fence by a hole, but AIs can't make difference with the same complete one. Engine calculates paths with a wide detour instead of following a player (test on fences north of main airport in Tanoa).

 

I gave up attempting to script for AIs' paths. The fact is it's probably resource consuming trying to find solutions for stuck AIs, bad end of ladders, no paths between positions... No way thru walls... and as cherry on the cake, AIs can suicide, jumping from the top of stairs as soon as they "fall" in combat mode (you know the behaviour for which they don't follow paths) Tested with a simple vanilla military cargo tower, Ais are quite OK descending stairs in aware mode, suicide in combat mode.

Each time you want to modify some AIs behavior, you have to cope with native FSMs (I think Lambs (danger) mod adds some, but I'm not sure it overrides the whole stuff). And that's above my head.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
On 8/3/2022 at 2:03 PM, mickeymen said:

Are you saying that the reason the AI goes through walls is because the quality of the houses is not enough?

 

As stated here :

On 5/26/2019 at 11:21 PM, Gunter Severloh said:

AI will walk through walls or other solid obstacles, if an other path cannot be found - TRUE


The main reason why AI goes through walls is because they can't find a way out (although bad model design can be a reason too).

 

I think this has been implemented as a workaround for some glitches. For exemple, some years ago, each time I tried to command friendly AI there was inevitably a moment where some of them got stuck inside a rock and unable to move anywhere. Disabling their collisions in these cases solves this issue. But obviously it creates a lot more.

 

  • Thanks 1

Share this post


Link to post
Share on other sites
19 hours ago, H O P L I T E said:

For exemple, some years ago, each time I tried to command friendly AI there was inevitably a moment where some of them got stuck inside a rock and unable to move anywhere.

AI still can get stuck in rock even now (v2.08). I run into this problem all the time if I carelessly place AI units on the map. If one of the units will placed over the rock, then it will be spawned on the ground surface, under rock and stays there forever.

19 hours ago, H O P L I T E said:

Disabling their collisions in these cases solves this issue

Yet it seems to me very strange to me that BIS does not turn off the collision mesh for big stone, in which the AI can get stuck forever, but disable the collision mesh for houses and fences, which ai has a big chance to be passed.

It would be great if someone from the modding community could turn on the collision mesh, blocking them from passing through wall/fence and create a some code, where the stuck AI could switched to special mode/path and could be abble move to the rescue markers, inside any building (for example near door portals).

  • Like 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×