Insurgency: Sandstorm

Insurgency: Sandstorm

View Stats:
*TEK*Toni Jun 18, 2019 @ 12:44pm
CooP / AI Skill Settings Config VS Console
Hello Fellas,

this post is about finding out, how to config AI Skills. I tried Wolfis Github, but Im not really sure those settings work. I got the impression that most skills are kinda hardcoded. On the other hand, I dont have soo much time to keep testing, but still, modification doesnt seem to do much...

So far I was using the AI Skill slider through the debug console to influence behaviour, but Im looking for a "scripted" or config solution.

Btw, Maxtreshold, between 1 to 99, is that equivalent to the skill slider (0.1 to 1.0)???

And if yes, do settings in the .ini overrule default server settings?



[/script/engine.gamesession]
MaxPlayers=10
MaxSpectators=0

[/script/aimodule.aisystem]
bAllowStrafing=False
bAcceptPartialPaths=true
bEnableBTAITasks=False
bFinishMoveOnGoalOverlap=False

[/script/aimodule.aicontroller]
bAllowStrafe=false
bLOSflag=true
bSkipExtraLOSChecks=False
bWantsPlayerState=true
bAdvancedTactics=true
bSetControlRotationFromPawnOrientation=true

[/script/aimodule.aiperceptioncomponent]
HearingRange=50
SightRadius=80
LoseSightRadius=10
LoSHearingRange=10
PeripheralVisionAngle=85

[/script/aimodule.aisenseconfig_hearing]
HearingRange=50
LoSHearingRange=10

[/script/aimodule.aisenseconfig_sight]
SightRadius=80
LoseSightRadius=10
PeripheralVisionAngleDegrees=70
AutoSuccessRangeFromLastSeenLocation=5

[/script/insurgency.inscoopmode]
bUseVehicleInsertion=false
FriendlyBotQuota=4
MinimumEnemies=8
MaximumEnemies=30
MaxThreshold=20
AlarmDuration=20
MaxPlayersToScaleEnemyCount=7


Those are my AI related settings in the .ini...

Basically, what Im looking for is the one setting equivalent to the debug ai skill slider..., any ideas folks???

Cheers for reading this...
< >
Showing 1-15 of 18 comments
=TAC= Stuermer Jun 18, 2019 @ 1:53pm 
It's mainly AIsense and AIperception.
Treshhold, as Circleus stated, is some sort of aggressiveness, but you can't control AI very detailed with this. With those values above, your bots should be really dumb though ;)

But something like the slider doesn't exist, it's a mixture of all those values (sense and perception) above. You have to tinker a lot.

What does influence difficulty most is perhaps "PeripheralVisionAngleDegrees" and "peripheralVisionAngle", because bots can't spot you very well if those values are low. But then it really depends on your players stomping around or sneaking a lot too.

And yes, game.ini entries overwrite the vanilla game values.
Last edited by =TAC= Stuermer; Jun 18, 2019 @ 1:54pm
*TEK*Toni Jun 18, 2019 @ 2:25pm 
Originally posted by =TAC= Stuermer:
It's mainly AIsense and AIperception.
Treshhold, as Circleus stated, is some sort of aggressiveness, but you can't control AI very detailed with this. With those values above, your bots should be really dumb though ;)

But something like the slider doesn't exist, it's a mixture of all those values (sense and perception) above. You have to tinker a lot.

What does influence difficulty most is perhaps "PeripheralVisionAngleDegrees" and "peripheralVisionAngle", because bots can't spot you very well if those values are low. But then it really depends on your players stomping around or sneaking a lot too.

And yes, game.ini entries overwrite the vanilla game values.

Thanks for answering...

Yep, looking at those values and comparing them to default settings, it looks like Bots shoult be fairly dump, but they re not... Its also hard to tell the difference, since our server style is super slow, the complete opposite of the typical run´n´gun style you find on public servers...

I would be happy to share our complete .ini and hope for some feedback, but this might remain wishful thinking...

Anyway, thanks again!
=TAC= Stuermer Jun 18, 2019 @ 2:37pm 
Hmm, that's strange.
We have way higher values and the bots are hard but beatable.
With your values, you shouldn't have problems at all.

Just for testing, take Circleus game.ini and leave all values as is and try it again.

- check path: Insurgency/Saved/Config/LinuxServer/game.ini (or WindowsServer)
- set your game.ini to 444 (writeProtection)
- restart the server

You should see a difference.
=TAC= Stuermer Jun 18, 2019 @ 2:48pm 
Or try with these, bots should be much tougher:

[/script/aimodule.aiperceptioncomponent] HearingRange=480 SightRadius=1200 LoseSightRadius=1600 LoSHearingRange=1000 PeripheralVisionAngle=270 [/script/aimodule.aisenseconfig_hearing] HearingRange=480 LoSHearingRange=1000 [/script/aimodule.aisenseconfig_sight] SightRadius=1200 LoseSightRadius=1600 PeripheralVisionAngleDegrees=270
*TEK*Toni Jun 18, 2019 @ 4:28pm 
Originally posted by =TAC= Stuermer:
Hmm, that's strange.
We have way higher values and the bots are hard but beatable.
With your values, you shouldn't have problems at all.

Just for testing, take Circleus game.ini and leave all values as is and try it again.

- check path: Insurgency/Saved/Config/LinuxServer/game.ini (or WindowsServer)
- set your game.ini to 444 (writeProtection)
- restart the server

You should see a difference.


- path is right, actually we´re renting a linux game server...
- set game.ini to write protection sounds like something i should really try, gonna contact server provider tomorrow

We started off with default settings or the ones from Cirleus, but Bots actually knew all the time, where exactly we were, even when we kept moving in cover, not visible for them...

Aim was to achieve a more "realistic" feeling, sneaky approach and so on..., also to reduce the aimbot-like behaviour, instakilling you with an mp5 single shot from quite a distance away...


My low sense-settings are also in test-state, still trying to find a nice balance..., thats why I started the search for AI Skill settings...

Cant wait for the Modding Tools to appear!!!
Last edited by *TEK*Toni; Jun 18, 2019 @ 4:29pm
=TAC= Stuermer Jun 19, 2019 @ 4:18am 
Yeah, I exactly know what you’re talking about. Those instakills are annoying, but I think this is a serious AI problem.

Sometimes they react absolutely realistic (watching a certain direction, then seeing you, turning their weapon, then shooting), sometimes they instakill you with one shot from far away within ms.

That won’t change though, even not with your config - unfortunately.

We also like to play slowly and tactically, but got those 1-flickers from time to time.

One thing really helping is: Don’t lie down on the floor. Never. You will always get shot in the head = instakill and bots seem to have some extra interest in people on the ground, specially with MG, so you will get shot more.

All other tactics won’t help. It’s helpful not to make noises, for sure, but it won’t help against instakills. The problem with the AI is, the slower you are the more deadly bots become. They can’t cope with fast movements (to the sides) but they really love slow tactical players cautiously peeking from cover ;)
*TEK*Toni Jun 19, 2019 @ 8:24am 
Originally posted by =TAC= Stuermer:

One thing really helping is: Don’t lie down on the floor. Never. You will always get shot in the head = instakill and bots seem to have some extra interest in people on the ground, specially with MG, so you will get shot more.

That´s funny, I often like play the Gunner with Bipod ;)



Originally posted by =TAC= Stuermer:
It’s helpful not to make noises, for sure, but it won’t help against instakills.

Its nice to be sneaky sometimes..., I wonder if there is way to disable my AI from talking and anouncing things like "Mag-change" and so on...
=TAC= Stuermer Jun 19, 2019 @ 8:43am 
Originally posted by *TEK*Toni:
That´s funny, I often like play the Gunner with Bipod ;)

Yeah, me too. Yesterday, I throw myself on the ground with the MG to cover a road, as I touched the ground, bot shot me from 200 m out with one shot, headshot, dead. It's insane. They forgot imo to reduce spotting time and accuracy for players on the ground (chance to recognize proning enemies is 1/8 compared to standing targets if not in plain sight), so it's suicide to lie down. Hopefully they try to fix it in the future.

Originally posted by *TEK*Toni:
Its nice to be sneaky sometimes..., I wonder if there is way to disable my AI from talking and anouncing things like "Mag-change" and so on...

Unfortunatly not at the moment. Perhaps with the modkit. It's funny sometimes, you sneak near the objective, slow as a snail, trying not to make any noises, your nerves are tense as steel and suddenly ...

"I A M R E L O A D I N G !"

lol, everybody staining their pants ;)

On official servers it's hilarious too, if everybody is securing a sector while defending and suddenly behind you a teammate kicks in a door, "B R E A C H I N G !", getting killed by 3 teammates on full-auto losing their nerves ;)
Mamba Jun 19, 2019 @ 10:33am 
Originally posted by =TAC= Stuermer:
On official servers it's hilarious too, if everybody is securing a sector while defending and suddenly behind you a teammate kicks in a door, "B R E A C H I N G !", getting killed by 3 teammates on full-auto losing their nerves ;)

Yup. Really need an option to turn OFF the vocal announcements. IRL yes you might use some of them via private commo to your team but....
Badsyntax Jul 9, 2019 @ 9:24pm 
Originally posted by *TEK*Toni:
Originally posted by =TAC= Stuermer:
It's mainly AIsense and AIperception.
Treshhold, as Circleus stated, is some sort of aggressiveness, but you can't control AI very detailed with this. With those values above, your bots should be really dumb though ;)

But something like the slider doesn't exist, it's a mixture of all those values (sense and perception) above. You have to tinker a lot.

What does influence difficulty most is perhaps "PeripheralVisionAngleDegrees" and "peripheralVisionAngle", because bots can't spot you very well if those values are low. But then it really depends on your players stomping around or sneaking a lot too.

And yes, game.ini entries overwrite the vanilla game values.

Thanks for answering...

Yep, looking at those values and comparing them to default settings, it looks like Bots shoult be fairly dump, but they re not... Its also hard to tell the difference, since our server style is super slow, the complete opposite of the typical run´n´gun style you find on public servers...

I would be happy to share our complete .ini and hope for some feedback, but this might remain wishful thinking...

Anyway, thanks again!

How are you comparing your config with the default settings? Where are the default settings located?
=TAC= Stuermer Jul 10, 2019 @ 5:11am 
Default settings are an empty game.ini - but you don't see them anywhere explicitly. At least not that I'm aware of.
Destinate Jul 16, 2019 @ 8:38am 
I can tell u that they have 2 different AI system. The one come with UE4 and the one they made it themselves to tweak the bot a bit more.

I don't think Maxtreshold is working. It probably for something else. I don't remember why i put it in there for bot difficulty relate. I should remove it off from my github config.


For the UE4 AI system u can find it in UE api and document. You can tweak it around a bit.
I'm going to give u a list for the UE AI system config, you can tweak it around as much as you want.

[/script/aimodule.aisystem]
https://api.unrealengine.com/INT/API/Runtime/AIModule/UAISystem/index.html

[/script/aimodule.aicontroller]
https://api.unrealengine.com/INT/API/Runtime/AIModule/AAIController/index.html

[/script/aimodule.aisenseconfig_hearing]
https://api.unrealengine.com/INT/API/Runtime/AIModule/Perception/UAISenseConfig_Hearing/index.html

[/script/aimodule.aisenseconfig_sight]
https://api.unrealengine.com/INT/API/Runtime/AIModule/Perception/UAISenseConfig_Sight/index.html


And these are the hardcoded in the Insurgency class that you can't change with just game.ini
Class Insurgency.BotBehavior Class Insurgency.BotHandler Class Insurgency.BotBehaviorHandler Class Insurgency.BotBehavior_Ambush Class Insurgency.BotBehavior_AttackMelee Class Insurgency.BotBehavior_AttackRanged Class Insurgency.BotBlinkConfig Class Insurgency.BotBehavior_Blink Class Insurgency.BotBehavior_DestroyObjective Class Insurgency.BotBehavior_FireRocket Class Insurgency.BotBehavior_FleeGrenade Class Insurgency.BotBehavior_FlushTarget Class Insurgency.BotBehavior_FollowSquadLeader Class Insurgency.BotBehavior_Investigate Class Insurgency.BotBehavior_MoveToObjective Class Insurgency.BotBehavior_MoveToSeat Class Insurgency.BotBehavior_Pursue Class Insurgency.BotBehavior_RequestFireSupport Class Insurgency.BotBehavior_Retreat Class Insurgency.BotSuicideBomberConfig Class Insurgency.BotBehavior_SuicideBomb Class Insurgency.BotBehavior_SuppressTarget Class Insurgency.BotBehavior_ThrowBackGrenade Class Insurgency.BotBehavior_ThrowGrenade Class Insurgency.BotBehavior_ThrowGrenadeAtWindows Class Insurgency.BotBehavior_ThrowSmokeGrenade Class Insurgency.BotBehavior_UseSmartActor Class Insurgency.BotBehavior_Vehicle Class Insurgency.BotBehavior_Wander Class Insurgency.BotSkillConfig Class Insurgency.BotCombatHandler Class Insurgency.BotInteractComponent Class Insurgency.BotKnownTargetMemory Class Insurgency.BotMemoryHandler Class Insurgency.BotMoodHandler Class Insurgency.BotObjectiveHandler Class Insurgency.BotInvestigation enum class EObjectiveBotSpawnMethod : uint8_t { EObjectiveBotSpawnMethod__Default = 0, EObjectiveBotSpawnMethod__ClosestToPlayerSpawn = 1, EObjectiveBotSpawnMethod__ClosestToObjective = 2, EObjectiveBotSpawnMethod__FurthestFromObjective = 3, EObjectiveBotSpawnMethod__Random = 4, EObjectiveBotSpawnMethod__EObjectiveBotSpawnMethod_MAX = 5 }; enum class EBotBehaviorPriority : uint8_t { EBotBehaviorPriority__NONE = 0, EBotBehaviorPriority__BASE = 1, EBotBehaviorPriority__IDLE_LOW = 2, EBotBehaviorPriority__IDLE_MEDIUM = 3, EBotBehaviorPriority__IDLE_HIGH = 4, EBotBehaviorPriority__ALERT = 5, EBotBehaviorPriority__COMBAT_LOW = 6, EBotBehaviorPriority__COMBAT_LOW_ELEVATED = 7, EBotBehaviorPriority__COMBAT_MEDIUM = 8, EBotBehaviorPriority__COMBAT_HIGH = 9, EBotBehaviorPriority__UTILITY = 10, EBotBehaviorPriority__EBotBehaviorPriority_MAX = 11 }; enum class EBotAIMood : uint8_t { EBotAIMood__MOOD_CALM = 0, EBotAIMood__MOOD_NERVOUS = 1, EBotAIMood__MOOD_COWERING = 2, EBotAIMood__MOOD_PANICKING = 3, EBotAIMood__MAX_STATES = 4, EBotAIMood__EBotAIMood_MAX = 5 }; enum class EBotInvestigationPriority : uint8_t { EBotInvestigationPriority__INVESTIGATION_TYPE_NONE = 0, EBotInvestigationPriority__INVESTIGATION_TYPE_CURIOSITY = 1, EBotInvestigationPriority__INVESTIGATION_TYPE_CP = 2, EBotInvestigationPriority__INVESTIGATION_TYPE_THREAT = 3, EBotInvestigationPriority__INVESTIGATION_TYPE_MAX = 4 }; enum class EBotCoverSearchPriority : uint8_t { EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_SEARCHORIGIN = 0, EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_FRONTLINE = 1, EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_SEARCHORIGIN = 2, EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_FRONTLINE = 3, EBotCoverSearchPriority__COVER_PRIORITY_MAX = 4 }; enum class EBotCoverSearchOrientation : uint8_t { EBotCoverSearchOrientation__COVER_AHEAD = 0, EBotCoverSearchOrientation__COVER_AHEAD_AND_TO_SIDES = 1, EBotCoverSearchOrientation__COVER_BEHIND = 2, EBotCoverSearchOrientation__COVER_ANY = 3, EBotCoverSearchOrientation__COVER_MAX = 4 }; ScriptStruct Insurgency.BotGrenadeCheckResult ScriptStruct Insurgency.BotGrenadeTarget


To answer your question "Basically, what Im looking for is the one setting equivalent to the debug ai skill slider..., any ideas folks?"
That doesn't exist for game.ini
Not that I know of
It probably part of the BotSkillConfig in hardcoded
Last edited by Destinate; Jul 16, 2019 @ 8:45am
tarAn-OD Jul 16, 2019 @ 8:57am 
so do the numbers mean order of priority

{
EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_SEARCHORIGIN = 0,
EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_FRONTLINE = 1,
EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_SEARCHORIGIN = 2,
EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_FRONTLINE = 3,
EBotCoverSearchPriority__COVER_PRIORITY_MAX = 4
};

so search origin is first priority?
*TEK*Toni Jul 16, 2019 @ 3:28pm 
Originally posted by Circleus:
I can tell u that they have 2 different AI system. The one come with UE4 and the one they made it themselves to tweak the bot a bit more.

I don't think Maxtreshold is working. It probably for something else. I don't remember why i put it in there for bot difficulty relate. I should remove it off from my github config.


For the UE4 AI system u can find it in UE api and document. You can tweak it around a bit.
I'm going to give u a list for the UE AI system config, you can tweak it around as much as you want.[/script/aimodule.aisystem]
https://api.unrealengine.com/INT/API/Runtime/AIModule/UAISystem/index.html[/script/aimodule.aicontroller]
https://api.unrealengine.com/INT/API/Runtime/AIModule/AAIController/index.html[/script/aimodule.aisenseconfig_hearing]
https://api.unrealengine.com/INT/API/Runtime/AIModule/Perception/UAISenseConfig_Hearing/index.html[/script/aimodule.aisenseconfig_sight]
https://api.unrealengine.com/INT/API/Runtime/AIModule/Perception/UAISenseConfig_Sight/index.html


To answer your question "Basically, what Im looking for is the one setting equivalent to the debug ai skill slider..., any ideas folks?"
That doesn't exist for game.ini
Not that I know of
It probably part of the BotSkillConfig in hardcoded


Hi Circleus,

thanks a lot for your anwer and support!


[57th] Ferret Jul 16, 2019 @ 3:38pm 
Originally posted by tarAn:
so do the numbers mean order of priority

{
EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_SEARCHORIGIN = 0,
EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_FRONTLINE = 1,
EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_SEARCHORIGIN = 2,
EBotCoverSearchPriority__COVER_PRIORITY_FURTHEST_FROM_FRONTLINE = 3,
EBotCoverSearchPriority__COVER_PRIORITY_MAX = 4
};

so search origin is first priority?


This is just an enum (enumeration) of the search priorities. It allows developers to make a list out of simple integers and use them later, e.g. (pseudocode):

bot.searchPriority = EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_SEARCHORIGIN; // bot.searchPriority is now 0, as this costs less to store in memory than a string // later on, compare the integers and branch based on that if (bot.searchPriority == EBotCoverSearchPriority__COVER_PRIORITY_CLOSEST_TO_SEARCHORIGIN) { doSomething(); } else { doSomethingElse(); }

The numbers have no gameplay meaning unless the developer decided to order them to reduce code complexity when using them, but we can't really tell from just looking at this particular enum.
< >
Showing 1-15 of 18 comments
Per page: 1530 50

Date Posted: Jun 18, 2019 @ 12:44pm
Posts: 18