Visa ämne
Anrop » ArmA 3 » Editing
 Skriv ut ämne
AI-tråd
Kanske det mest frustrerande med att göra missions i Arma är att få AI:n att bete sig som man vill. Tänkte ha denna tråden att posta tips, idéer eller frågor om olika sätt att få AI:n att bete sig lite vettigare i olika situationer.

Kommer börja med att beskriva ett sätt för att få AI:n att röra sig lite mer aggressivt när man t ex vill att den ska storma ett anfallsmål.


Gjorde denna video för att visa hur man kan få till ett något mer aggressivt beteende. AI:n tenderar annars att stanna upp och lägga sig ner och skjuta sporadiskt så fort den upptäcker en fiende någonstans.

Del 1 av videon ovan visar hur det ser ut om man inte modifierar AI:ns beteende utan bara kör helt vanliga waypoints med Open fire, keep formation; Aware; Wedge och Full speed, samt synkar dem sinsemellan så att grupperna turas om att röra sig. AI:n stannar upp så fort fienden spawnar in och står sedan kvar och väntar ett tag efter att fienden dör. Efter 6 minuter har de inte ens kommit fram till banänden.

Del 2 visar hur det blir om man använder diverse disableAI-kommandon. Gruppen som förflyttar sig stannar inte utan struntar i fienden och tar sig till sin nästa waypoint, medan täckgruppen beskjuter fienden; sedan växlar grupperna roll. Det går betydligt bättre för AI:n att ta sig snabbt framåt, de är framme vid banänden efter ca 4 minuter.

Dock har AI:n betydligt sämre accuracy i del 2, varför vet jag inte riktigt än.

***

I init-fälten för units sätter man:
this disableAI "FSM"; this disableAI "AUTOCOMBAT";
(kan också göras under Disable AI Features i Eden)

För vardera gruppen sätter man 3 st waypoints tätt ihop, med följande i On Activation-fälten:
1) this setbehaviour "COMBAT"; { _x enableai "FSM"; } forEach units group this;
2) this setbehaviour "AWARE"
3) { _x disableai "FSM"; } forEach units group this;

waypoint 2 för ena gruppen synkas växelvis med waypoint 1 för andra gruppen.

Detta tvingar AI:n att växla mellan att sluta skjuta och börja springa, samt sitta still och börja skjuta. Det funkar genom att disableAI/enableAI "FSM" stänger av och sätter på diverse scripts som styr AI:ns beteende. I princip gör det dem hjärndöda så länge FSM är disabled - men då springer de också mot målet istället för att stanna och söka skydd.

Waypointen med setbehaviour "AWARE" finns eftersom det verkar som om det inte går att enabla/disablea FSM så länge AI:n är i Combat mode, då pajar AI:n och vägrar röra sig.
PS. Tror att " { _x disableai "FSM"; } forEach thisList; " funkar lika bra
Nu i söndags hade jag ställt alla AIs på lägsta möjliga skill-nivå i editorn, men vissa siktade ändå som gudar, eftersom deras skill automatiskt höjs av svårighetsgraden. Därför tänkte jag peta in en custom difficulty-setting på servern (med hjälp av Dahlgren), inför operationen på onsdag.

Settings blir exakt som Veteran, förutom att kill messages försvinner samt att AI:n får Skill 0.8 och Precision 0.45 (default för Veteran är 0.8 respektive 0.7). Då får man en AI som beter sig "smart" (med Arma-mått) men inte siktar så djävulskt bra som den gör på Veteran, dvs man slipper bli omedelbart snajpad av någon nisse med en AK 500 meter bort när man sticker upp huvudet.

Anledningen till att jag informerar är att om någon till äventyrs vill ha en egen custom difficulty på servern så måste man gå in och ändra i serverns config, det går inte att ha flera olika custom samtidigt. Tror iofs inte att det kommer behövas, vi spelar väl aldrig med crosshair etc. Och vill man istället öka svårighetsgraden på ett visst op så är det bara att man väljer vanliga Veteran, så får man fiender som siktar väldigt bra.

Urklippt ur config-filen (server.Arma3profile - tror jag?):


class DifficultyPresets
{
class CustomDifficulty
{
class Options
{
groupIndicators=0;
friendlyTags=0;
enemyTags=0;
detectedMines=0;
commands=1;
waypoints=0;
weaponInfo=1;
stanceIndicator=1;
reducedDamage=0;
staminaBar=0;
weaponCrosshair=1;
visionAid=0;
thirdPersonView=0;
cameraShake=1;
scoreTable=1;
deathMessages=0;
vonID=1;
mapContent=0;
autoReport=0;
multipleSaves=0;
};
aiLevelPreset=3;
};
class CustomAILevel
{
skillAI=0.80000001;
precisionAI=0.45000001;
};
};
Redigerat av Alekanderu den 2016-09-06 23:56
Jag brukar ha aim 0.2 på mina op och då träffar ai ändå ganska duktigt tycker jag.

Så mitt tips är att 0.45 is still too high.
något som vore önskvärt vore att få bort deras x-ray ögon, dom ser ju fan en genom 500 meter djungel på Tanoa.
Playing Diablo 3 is for losers! Boting Diablo 3 is for winners!

Citera

Granquist skrev:

Jag brukar ha aim 0.2 på mina op och då träffar ai ändå ganska duktigt tycker jag.

Så mitt tips är att 0.45 is still too high.

Tänkte göra tester vid tillfälle och se hur pricksäker ain blir under identiska förutsättningar men olika precisionAI, dock hinns det inte innan imorrn så det får bli senare. Plus att jag tror det beror på vapen också. Ai med vapen med kikarsikte verkar bli extremt pricksäkra även på lägsta skill level.

Citera

Megadeth skrev:

något som vore önskvärt vore att få bort deras x-ray ögon, dom ser ju fan en genom 500 meter djungel på Tanoa.

vad jag läst och även sett själv så ser AIn inte igenom träd eller buskar ( dock gräs), MEN om så ens halva foten sticker fram bakom busken så kan AIn se dig på 500 meter. Sen fortsätter AIn ofta att skjuta mot där den tror att du är, om du t ex springer in bakom skyl kommer ain fortsätta skjuta ett tag mot där du "borde" vara om du fortsatte i samma riktning och hastighet. Så i kombination med att ain kan se ditt lillfinger 1 km bort känns det ibland som att de ser rätt igenom allt.

Sen kan det förstås vara så att objekt är buggade så att ain ser igenom dem ändå men det är en annan sak.

Som jag fattat det så skickar varje AI ut raycasts med jämna mellanrum från sig själv i en ganska smal kon framåt (AIn har dålig perifer syn). Om dessa raycasts träffar en annan unit kommer AIn att få mer och mer "knowledge" om denna unit tills den kommer upp i så hög knowledge (värdet kan fås genom knowsAbout) att den kan börja skjuta. Beroende på ains skill level tar det olika lång tid. Det är därför man ofta ser den typiska Arma-grejen där man börjar skjuta mot en AI långt bort som då typ rycker till och låååångsamt vrider runt och scannar av horisonten tills den vänt sig åt rätt håll och då plötsligt prickar en mitt mellan ögonen.

Sen kan AIn dessutom bli aware genom att den hör ljud men tror det bara är till en viss nivå, den börjar inte skjuta bara för att den hör dig bakom busken, däremot kommer den söka efter dig i en allt smalare "kon" tills den hittar dig med synen.

Överlag har AIn jävligt bra synskärpa men dålig perifer syn och väldigt dålig hörsel jämfört med en spelare.

AIn får också knowledge från andra AIs, dvs om en AI i en grupp får knowledge om dig kommer detta spridas till resten av gruppen. Tror även det sprids till andra grupper på samma sida men är inte säker.

Det finns också maxavstånd, har för mig att det är omöjligt för AIn att se infanteri längre bort än typ 1km, däremot kan den se fordon på längre avstånd. Tror inte den hör ljud längre bort än några hundra meter.

Om AIn har varit medveten om dig och du sedan försvinner ur sikt så kommer dess knowledge om dig sjunka undan för undan. Zoomar man in på en sådan ai så brukar man kunna se hur den börjar svaja i siktet i större och större cirklar medan den scannar mot platsen där du försvann och försöker hitta dig igen. Om AIn inte sett eller hört dig alls på ca 2 min (tror jag) så glömmer den bort dig. Ett undantag dock: om du dör kommer alla AI omedelbart veta att du är död, oavsett om de såg ditt lik eller ej. I det fallet har alltså AIn faktiskt röntgensyn.

Ett sätt att testa detta själv är att spawna en unit i editorn, döp variabeln till Shooter. Placera ut en fiende-unit som du gör till hidden (modellen visas inte) samt disablar alla ai-funktioner (så att den står still). Döp denna unit till Target. Gör en trigger som du triggar med t ex radio alpha, i On Activation skriver du ' Shooter reveal [Target, 4] '. Detta gör Shooter medveten om Target på maxnivå (knowledge sätts till 4 av 4) när du aktiverat radio-triggern. Men eftersom Target är osynlig kommer Shooter att direkt börja tappa knowledge undan för undan och kommer börja scanna av ett allt större område i ett försök att hitta Target (vapnet börjar svaja i större cirklar, Shooter börjar vända sig åt andra håll etc), tills knowledge-värdet har gått ner till 0 och Target är då bortglömd.
Redigerat av Alekanderu den 2016-09-06 10:56