Jump to content
genesis92x

Vcom AI V2.0 - AI Overhaul

Recommended Posts

On 1/25/2017 at 0:38 AM, genesis92x said:

I am curious...if you have time...can you do a simple hint format ["%1 --- %2",count allunits, count allgroups]; and tell me the numbers? I know all machines are different but I was able to get ~200 AI, in groups of 8, all in combat to have an FPS drop of ~10 and scheduler lag of about .5 seconds. I am just curious about other missions and etc and one of the biggest things I am finding is that missions with MORE groups (Even if they have less AI) perform far worse than missions with MORE AI but LESS groups. 

 

So yeah... I tested my mission with the amount of zones I typically like to run with and I got 326 units, 108 groups.... I think I'll try using ZBE_caching and see if that helps me. Otherwise I'll have to completely rework the way enemy units spawn.

Share this post


Link to post
Share on other sites
On 1/25/2017 at 2:38 PM, genesis92x said:

Yeah. I learned this valuable lesson in optimizing Vcom. There needs to be a fine balance. A very fine balance.

No problem! Unfortunately, advanced AI comes at a cost. If you are generating a mission with 250+ AI you are going to have a bad time. Keep in mind with ArmA (And especially Vcom AI) a lot of units with FEWER groups is better than a lot of units with MORE groups. Group leader AI is more demanding and will cause more scheduler lag. So if possible have your mission operate with bigger squads and fewer groups.

 

I am curious...if you have time...can you do a simple hint format ["%1 --- %2",count allunits, count allgroups]; and tell me the numbers? I know all machines are different but I was able to get ~200 AI, in groups of 8, all in combat to have an FPS drop of ~10 and scheduler lag of about .5 seconds. I am just curious about other missions and etc and one of the biggest things I am finding is that missions with MORE groups (Even if they have less AI) perform far worse than missions with MORE AI but LESS groups. 

One of the first things i came to notice with AI and FPS was this....Less groups = Less Lag.

I am running a mission,i am using 10 groups infantry blufor at 16 man a group,and same for opfor.This keeps performance nice and tidy.Genesis im highly suprised at how optimized this mod has become.

 

I usually run bcombat,i have 70% of its features disabled,i only use the important ones,find cover,suppression etc. I am using your full script with 30 AI to find nearest cover and up to 15 suppressed at once via the config,and your mod runs alot better.Its close to vanilla standards of performance...Infact,possibly better as your mod does not cause AI to clump up and fix on enemy,it makes them spread out and extend the engagement,giving the CPU breathing space in a manner of speaking.

 

I had a quick question...the Arma3 show/hide module,a great vanilla feature helps me to hide what assets are in the mission,until i need them called.How does Vcom "use" those hidden units? Is it possible to make Vcom ignore them until they are unhidden/shown in the mission? 

 

Also,My missions AO,is about a 3000 meter radius,if i set VCOM AI to respond to radio calls that distance,will it impact performance much?

 

Thanks for continuing work on the mod,its a beauty.

Share this post


Link to post
Share on other sites
On 1/26/2017 at 11:38 AM, jetset22a said:

 

So yeah... I tested my mission with the amount of zones I typically like to run with and I got 326 units, 108 groups.... I think I'll try using ZBE_caching and see if that helps me. Otherwise I'll have to completely rework the way enemy units spawn.

Yeah, Vcom is setup to support caching, so I hope that helps. Now I will admit that Vcom is about due for another pass of optimizations - so after my Dissension project I will be visiting Vcom again for just optimization improvements.

 

17 hours ago, redarmy said:

One of the first things i came to notice with AI and FPS was this....Less groups = Less Lag.

I am running a mission,i am using 10 groups infantry blufor at 16 man a group,and same for opfor.This keeps performance nice and tidy.Genesis im highly suprised at how optimized this mod has become.

 

I usually run bcombat,i have 70% of its features disabled,i only use the important ones,find cover,suppression etc. I am using your full script with 30 AI to find nearest cover and up to 15 suppressed at once via the config,and your mod runs alot better.Its close to vanilla standards of performance...Infact,possibly better as your mod does not cause AI to clump up and fix on enemy,it makes them spread out and extend the engagement,giving the CPU breathing space in a manner of speaking.

 

I had a quick question...the Arma3 show/hide module,a great vanilla feature helps me to hide what assets are in the mission,until i need them called.How does Vcom "use" those hidden units? Is it possible to make Vcom ignore them until they are unhidden/shown in the mission? 

 

Also,My missions AO,is about a 3000 meter radius,if i set VCOM AI to respond to radio calls that distance,will it impact performance much?

 

Thanks for continuing work on the mod,its a beauty.

Thank you for the nice report :) It runs MUCH better, and I am excited to take another look at it to optimize it further.

 

Regarding the show/hide module...I do not know much about that module, but I assume it might use hideobjectglobal or disablesimulation commands. AI with disabled simulation will also have their VcomAI FSM's frozen until they are shown/unfrozen again. They may take a few seconds to reconnect with the world again...

 

Setting AI to respond in a 3000 meter radius should not heavily impact performance. I do a simplified distance check to all friendly groups and just filter out the ones not inside the call radius. Larger distance just means more units responding at once. Now this has me thinking about having a max group responder limit in the config...

  • Like 2

Share this post


Link to post
Share on other sites

A max group responder limit would be good,sending reinforcements at a 3:1 ratio would use AI assets i a smarter way,and would keep performance more even more stable.

 

A smart player could exploit VCOM in its current state. Sending one group to attract VCOM groups to a position away from objective,and then sending more groups to the actual objective.If you keep some VCOM groups on standby so to speak,it would make things more random.

 

A few observations i made if i may...

 

1.Vanilla/VCOM squad leader following WP rather than sticking with the group,im not sure if you had noticed,but squad leaders are more concerned with WPs,splintering them off from group.I had noticed it in vanilla and even Bcombat,its frustrating especially when you use a system to track group,it chooses to track leader pos obviously,thus not giving you accurate info on where the team actually is.

 

2.WP refresh and combat mode...

Once VCOM has sent a group to its WPto reinforce,they idle in the area,in combat mode for a long time,and even if there is another group under enemy fire within radio distance,the first group dont generate WPs for quite some time.

 

3.The groups flanking to find "good positions" usually sends that group on WPs directly through the enemy groups pos to get to that cover,rather than circling around them.

 

I am not sure the changes to vehicle behaviour,but my tanks are not going epeleptic anymore when they spot enemy,they are staying still,and firing,is this VCOM?How did you change that behaviour,it runs very well now vehicle combat.

Share this post


Link to post
Share on other sites
On 1/22/2017 at 8:41 AM, SN M. Buchanan said:

{_x setvariable ["NOAI",true];_x setvariable ["VCOM_NOPATHING_Unit",true];} foreach (Crew this);

 

If I post this in an ALiVE support module, I get an error:

 8:27:13 Error in expression <_x setvariable ["VCOM_NOPATHING_Unit",tr>
 8:27:13   Error position: <_x setvariable ["VCOM_NOPATHING_Unit",tr>
 8:27:13   Error Undefined variable in expression: _x

Anyone able to reproduce this?

Share this post


Link to post
Share on other sites

Pretty sure if you take out the _x and replace it with this you'll fix your problem 

 

eg

 

{this setvariable ["NOAI",true];this setvariable ["VCOM_NOPATHING_Unit",true];} foreach (Crew this);

 

Share this post


Link to post
Share on other sites

My fix was to place the vehicle directly, as described in the ALiVE Wiki here.  Then I put that code in the vehicle's init.  Another option would be to put some minor adjusted code on the pilot/group leader, which also seems to work for me.  JD Wang's code is incorrect, as _x is used inside a forEach loop to reference the current item in the array. this is typically only used in an init field to reference the object being initialized.

 

I believe the issue is that the ALiVE Module places the code in the init of a group or unit, but not vehicle... and crew only works on a vehicle.  I mentioned it in a post on this thread a few weeks ago, I think.

  • Like 1

Share this post


Link to post
Share on other sites

Hi,

 

Could anybody tell me how to put the nopathing stuff in this script please?

 

params ["_AOPos"];

if ((!alive derp_airReinforcement) && {derp_lastAirReinforcementTime <= (time - derp_PARAM_airReinforcementTimer)}) then {
    _AOPos params ["_xPos", "_yPos"];

    derp_airReinforcement = createVehicle [(selectRandom AirReinforcementVehicleList), getMarkerPos "opforAirSpawn_marker1", ["opforAirSpawn_marker2", "opforAirSpawn_marker3", "opforAirSpawn_marker4"], 50, "FLY"];
    createVehicleCrew derp_airReinforcement;
    derp_airReinforcement lock 2;

    {_x addCuratorEditableObjects [[derp_airReinforcement], true]} forEach allCurators;

    private _wp = (group derp_airReinforcement) addWaypoint [[_xPos, _yPos, 1000], 0];
    _wp setWaypointType "SAD";

    derp_lastAirReinforcementTime = time;
};

 

Thanks a lot

 

Rizla

  • Like 1

Share this post


Link to post
Share on other sites

So I'm not sure if this is my fault or not, but my rpt-file keeps spouting this same error over and over again (like millions of times):

 


VCOM_Curren>
21:44:56   Error position: <VCOM_CurrentlyMovingLimit};

VCOM_Curren>
21:44:56   Error Undefined variable in expression: vcom_currentlymovinglimit
21:44:56 File VCOMAI\VCOMAI\Functions\VCOMAI_MoveToCover.sqf, line 5
21:44:56 Error in expression <t 0;

RPT File in question

I'm just curious as to what it might be, as it really clutters the log.

Edit: After looking a bit through this, might VCOM disable Zeus after a while? It appears to happen only when running this mod.

  • Like 1

Share this post


Link to post
Share on other sites

A few questions.

 

Does this mod have the VCOM AI driving script.  Does the driving script still work I don't really see AI improvments anymore when using the script AI still sucks ass lol.

 

Does this mod compatible with upmons and ups AI behavior Scripts. I use them mostly for AI movements in the AO.

  • Like 1

Share this post


Link to post
Share on other sites

@genesis92x :

I just saw that I was mentioned here regarding the CBA state machine stuff. I'm usually not active here on the BI forums, but I'm always online on the ACE3 slack, so if you need any help feel free to poke me over there.

  • Like 2

Share this post


Link to post
Share on other sites
On 1/30/2017 at 7:55 PM, JD Wang said:

Pretty sure if you take out the _x and replace it with this you'll fix your problem 

 

eg

 


{this setvariable ["NOAI",true];this setvariable ["VCOM_NOPATHING_Unit",true];} foreach (Crew this);

 

 

That doesn't make any sense. That would make the foreach quite useless.

@patpowercat Where are you using this snipet? 

As far as I can tell, there is/was/whatever a mixup with the variable type. here boolean, in the example Genesis gave it is a Number like here ( copied from the first page ) 

 this setVariable ["VCOM_NOPATHING_Unit",1,false]; 

 

If this information is valid, it should work.

 

On 2/5/2017 at 4:13 AM, RizlaUK said:

Hi,

 

Could anybody tell me how to put the nopathing stuff in this script please?

 


...

 

Thanks a lot

 

Rizla

Hey Rizla,  following code should do the Trick,  BUT only if my assumption as stated above is correct.

params ["_AOPos"];

if ((!alive derp_airReinforcement) && {derp_lastAirReinforcementTime <= (time - derp_PARAM_airReinforcementTimer)}) then {
    _AOPos params ["_xPos", "_yPos"];

    derp_airReinforcement = createVehicle [(selectRandom AirReinforcementVehicleList), getMarkerPos "opforAirSpawn_marker1", ["opforAirSpawn_marker2", "opforAirSpawn_marker3", "opforAirSpawn_marker4"], 50, "FLY"];
    createVehicleCrew derp_airReinforcement;
    derp_airReinforcement lock 2;
    // That should do the Trick,
	{ _x setvariable ["NOAI",true]; _x setvariable ["VCOM_NOPATHING_Unit",1, false];} foreach (crew derp_airReinforcement);
   
   {_x addCuratorEditableObjects [[derp_airReinforcement], true]} forEach allCurators;

    private _wp = (group derp_airReinforcement) addWaypoint [[_xPos, _yPos, 1000], 0];
    _wp setWaypointType "SAD";

    derp_lastAirReinforcementTime = time;
};

Regards

  • Like 1

Share this post


Link to post
Share on other sites

Hi genesis

 

to quote the config:

 

//VCOM_SideBasedMovement- Remove sides from the array below to force that specific AI side to not execute any advance movement code. (I.E. Moving to reinforce allies, being alerted by distant gunshots and etc). AI with this will still react normally in combat. DEFAULT = [WEST,EAST,CIVILIAN,RESISTANCE];
VCOM_SideBasedMovement = [];

 

As you see,i removed sides from the array,yet they are still getting move waypoints drawn for them.I have vcom AI folder in user config folder,and this .hpp file in the VCOM ai folder.

 

 

EDIT:

 

Apolagies,i had forgotten that i had disabled file patching,the config settings were ignored when i ad it disabled.

 

P.S making the AI move at a "configurable" speed,so they can move more quickly,is a stroke of genious,it makes so much difference in their effectiveness,and on my own ability to land a hit on them.Fantastic.

  • Like 1

Share this post


Link to post
Share on other sites
On ‎2‎/‎5‎/‎2017 at 3:12 PM, Berntsen said:

So I'm not sure if this is my fault or not, but my rpt-file keeps spouting this same error over and over again (like millions of times):

 


VCOM_Curren>
21:44:56   Error position: <VCOM_CurrentlyMovingLimit};

VCOM_Curren>
21:44:56   Error Undefined variable in expression: vcom_currentlymovinglimit
21:44:56 File VCOMAI\VCOMAI\Functions\VCOMAI_MoveToCover.sqf, line 5
21:44:56 Error in expression <t 0;

RPT File in question

I'm just curious as to what it might be, as it really clutters the log.

Edit: After looking a bit through this, might VCOM disable Zeus after a while? It appears to happen only when running this mod.

Hm, this looks like the config file did not get updated properly. Would you double check that you installed the userconfig from the most recent update? If you are running the script version check in the "VCOMAI_DefaultSettings.sqf" and look for the line "VCOM_CurrentlyMovingLimit" and make sure it is defined in there.

 

Vcom does not interact with Zeus directly anymore...however it does not mean that it isn't doing something. I have not noticed this yet, I will keep an eye on it. If you have a mission that makes it easy to reproduce it (Or have the steps to reproduce it) that would be extremely helpful.

 

Thank you!

 

On ‎2‎/‎6‎/‎2017 at 10:53 AM, AVIBIRD 1 said:

A few questions.

 

Does this mod have the VCOM AI driving script.  Does the driving script still work I don't really see AI improvments anymore when using the script AI still sucks ass lol.

 

Does this mod compatible with upmons and ups AI behavior Scripts. I use them mostly for AI movements in the AO.

This does NOT include the AI driving script. I have not updated the driving AI for months so it probably does not work any better. Bohemia apparently improved the driving AI since then so I am not sure how bad it exactly is. The only AI mod I would recommend using with Vcom would be ALIVE. The way to think about is...

 

Vcom AI really Micro's group/individual movement. So it does not go well with other mods that Micro manage the units.

Alive really focuses on Macro. So, deployment of troops and the virtualization of the battlefield but does not directly micro any of the AI.


So you can mix Micro/Macro mods, but NOT Micro/Micro.

 

 

On ‎2‎/‎7‎/‎2017 at 6:47 AM, baermitumlaut said:

@genesis92x :

I just saw that I was mentioned here regarding the CBA state machine stuff. I'm usually not active here on the BI forums, but I'm always online on the ACE3 slack, so if you need any help feel free to poke me over there.

I really appreciate that baermitumlaut! I would love to get help for that. It might take me a little while, but after I finish a few things I will be focusing on optimizing Vcom AI again.

 

 

 

1 hour ago, redarmy said:

Hi genesis

 

to quote the config:

 

//VCOM_SideBasedMovement- Remove sides from the array below to force that specific AI side to not execute any advance movement code. (I.E. Moving to reinforce allies, being alerted by distant gunshots and etc). AI with this will still react normally in combat. DEFAULT = [WEST,EAST,CIVILIAN,RESISTANCE];
VCOM_SideBasedMovement = [];

 

As you see,i removed sides from the array,yet they are still getting move waypoints drawn for them.I have vcom AI folder in user config folder,and this .hpp file in the VCOM ai folder.

 

 

EDIT:

 

Apolagies,i had forgotten that i had disabled file patching,the config settings were ignored when i ad it disabled.

 

P.S making the AI move at a "configurable" speed,so they can move more quickly,is a stroke of genious,it makes so much difference in their effectiveness,and on my own ability to land a hit on them.Fantastic.

Sorry that I did not respond sooner! I am glad you figured it out. I wish there was an easier way to do configs that did NOT require file-patching. And thank you, I try to think outside of the box from time to time. Sometimes it pays off!

  • Like 1

Share this post


Link to post
Share on other sites
11 minutes ago, genesis92x said:

Hm, this looks like the config file did not get updated properly. Would you double check that you installed the userconfig from the most recent update? If you are running the script version check in the "VCOMAI_DefaultSettings.sqf" and look for the line "VCOM_CurrentlyMovingLimit" and make sure it is defined in there.

 

Vcom does not interact with Zeus directly anymore...however it does not mean that it isn't doing something. I have not noticed this yet, I will keep an eye on it. If you have a mission that makes it easy to reproduce it (Or have the steps to reproduce it) that would be extremely helpful.

 

Thank you!

 

Huh. That worked. The userconfig I had was waaaaay old. No wonder it was spazzing out.
And the Zeus thing might have been because there was another hidden gamemaster module in the mission, with the exact same owner and settings. Haven't properly tested if removing one of them solved it yet though, so I'm not 100% sure yet. 

Anyway, thanks!

  • Like 1

Share this post


Link to post
Share on other sites
On 1/30/2017 at 5:04 PM, SN M. Buchanan said:

My fix was to place the vehicle directly, as described in the ALiVE Wiki here.  Then I put that code in the vehicle's init.  Another option would be to put some minor adjusted code on the pilot/group leader, which also seems to work for me.  JD Wang's code is incorrect, as _x is used inside a forEach loop to reference the current item in the array. this is typically only used in an init field to reference the object being initialized.

 

I believe the issue is that the ALiVE Module places the code in the init of a group or unit, but not vehicle... and crew only works on a vehicle.  I mentioned it in a post on this thread a few weeks ago, I think.

Well that is good to know. I will favorite this so I can remember this for later...

Share this post


Link to post
Share on other sites
On 08/02/2017 at 4:53 AM, crewt said:

 

That doesn't make any sense. That would make the foreach quite useless.

@patpowercat Where are you using this snipet? 

As far as I can tell, there is/was/whatever a mixup with the variable type. here boolean, in the example Genesis gave it is a Number like here ( copied from the first page ) 

 this setVariable ["VCOM_NOPATHING_Unit",1,false]; 

 

If this information is valid, it should work.

 

Hey Rizla,  following code should do the Trick,  BUT only if my assumption as stated above is correct.


params ["_AOPos"];

if ((!alive derp_airReinforcement) && {derp_lastAirReinforcementTime <= (time - derp_PARAM_airReinforcementTimer)}) then {
    _AOPos params ["_xPos", "_yPos"];

    derp_airReinforcement = createVehicle [(selectRandom AirReinforcementVehicleList), getMarkerPos "opforAirSpawn_marker1", ["opforAirSpawn_marker2", "opforAirSpawn_marker3", "opforAirSpawn_marker4"], 50, "FLY"];
    createVehicleCrew derp_airReinforcement;
    derp_airReinforcement lock 2;
    // That should do the Trick,
	{ _x setvariable ["NOAI",true]; _x setvariable ["VCOM_NOPATHING_Unit",1, false];} foreach (crew derp_airReinforcement);
   
   {_x addCuratorEditableObjects [[derp_airReinforcement], true]} forEach allCurators;

    private _wp = (group derp_airReinforcement) addWaypoint [[_xPos, _yPos, 1000], 0];
    _wp setWaypointType "SAD";

    derp_lastAirReinforcementTime = time;
};

Regards

 

I must be missing something then, the choppers after initially spawning and displaying "SAD" behaviour, stop and hover and very rarely change from this :(

 

  • Like 1

Share this post


Link to post
Share on other sites

I've been looking at the scripts, I'm at work so can't test VCOM at the moment.  I do have one question though, wouldn't this script benefit to compile them in actual functions CfgFunctions ?  Currently everything is still compiled the old fashioned way.

 

fe:

 

VCOMAI_VehicleHandleDanger = compile preprocessFileLineNumbers "VCOMAI\functions\DangerCauses\VCOMAI_VehicleHandle.sqf";

 

I know I'm nitpicking but well ... I have converted quite a few libs to functions in the past , shuko's position script, LV, and a few others.  I'm dreading having to do another one :D

  • Like 1

Share this post


Link to post
Share on other sites

This is by far the best AI mod i've ever tried..

Keep up the good work!

  • Like 1

Share this post


Link to post
Share on other sites

Great AI Genesis, I've found my go to mission making AI mod after a long time of testing. 

 

I think I've found a bug regarding night vision though. I like making night raid missions and having one side assault with NVGs but for some reason when I have VCOM enabled the soldiers don't put their NODs on. Also, spotting seems really wonky past 7 PM; even when it's dusk and I can still clearly make out soldiers, the AI are blind and can't see each other even from 50 meters away.

  • Like 2

Share this post


Link to post
Share on other sites

I'm running this with RHS and ALiVE, Chernarus, doing a "Red Dawn" style of fighting, free Chernarus from the Russian VDV, and I'm loving it!

 

The AI will flank you, pop smoke, and just like it says, if you stay in one spot for too long (maybe 10+ min) they start getting REALLY accurate....

Best AI experience for MP.

 

Keep up the awesome work guys!

  • Like 2

Share this post


Link to post
Share on other sites

I'm not sure if it's a Vcom issue or mission issue, but when playing Liberation with this mod, sometimes the AI freeze up and don't move. They'll spin in circles, change stances, and talk as if they're following orders, but they don't move from that spot. 

  • Like 1

Share this post


Link to post
Share on other sites

Hi,

 

We've added a paradrop script which we want VCOM not to run on, for the pilots, but to still run on the paratroopers after they've jumped.

 

    If !(_RandomNum isEqualTo 1) then
    {
        [_RandomSpawnPos] Spawn
        {
            Params ["_RandomSpawnPos"];
            Private ["_Dist"];
            _ASL = ASLTOATL _RandomSpawnPos; // Get ATL for sea level.
            _RandomSpawnPos = [_RandomSpawnPos select 0, _RandomSpawnPos select 1, ((_ASL select 2) - 50)];
            Sleep 2;
           
            _Helis = _RandomSpawnPos NearEntities [["HELICOPTER"],100];
            Sleep 10;
           
            {_x addCuratorEditableObjects [_Helis, true]} forEach allCurators;
           
            {
//              { _x setvariable ["NOAI",true]; _x setvariable ["VCOM_NOPATHING_Unit",1, false];} foreach (crew _x);
                (Driver _x) setvariable ["NOAI",true];
                (Driver _x) setvariable ["VCOM_NOPATHING_Unit",1, false];
            } forEach _Helis; // In case more than one heli in the array. Failsafe
        };
    };

 

We get the following RPT error though. Can anybody help with this please?

 

22:13:00 Error in expression <iable ["VCOM_NOPATHING_Unit",false];
if !(_NoFlanking2) then
{
_CheckStatus2 = >
22:13:00   Error position: <!(_NoFlanking2) then
{
_CheckStatus2 = >
22:13:00   Error !: Type Number, expected Bool
22:13:00 File mpmissions\__cur_mp.Altis\VCOMAI\Functions\VCOMAI_ClosestAllyWarn.sqf, line 81

 

Thanks a lot.

 

Regards

 

Rizla

 

 

  • Like 1

Share this post


Link to post
Share on other sites

A quick update for everyone,

 

I have been gone for the past several weeks due to important life stuff. I am going to be working on my Dissension project 'full-speed', and since it also includes Vcom AI, I will most likely be working on both projects. Which just means slower updates for Vcom. I appreciate everyone posting bugs and will be going back in the thread to add every bug/requested feature to a list.

 

Thank you!

 

On 2/16/2017 at 10:40 PM, EnvakeoLugaria said:

I'm running this with RHS and ALiVE, Chernarus, doing a "Red Dawn" style of fighting, free Chernarus from the Russian VDV, and I'm loving it!

 

The AI will flank you, pop smoke, and just like it says, if you stay in one spot for too long (maybe 10+ min) they start getting REALLY accurate....

Best AI experience for MP.

 

Keep up the awesome work guys!

Thank you Envakeo! Let me know if you have any further ideas or find any bugs.

 

On 2/16/2017 at 1:50 PM, sf135 said:

Great AI Genesis, I've found my go to mission making AI mod after a long time of testing. 

 

I think I've found a bug regarding night vision though. I like making night raid missions and having one side assault with NVGs but for some reason when I have VCOM enabled the soldiers don't put their NODs on. Also, spotting seems really wonky past 7 PM; even when it's dusk and I can still clearly make out soldiers, the AI are blind and can't see each other even from 50 meters away.

Oh wow! Thanks for the specific times, this is something I can test once I get back to it...In the mean time I would suggest double checking the server setting (Or you local computer's) difficulty settings and see what the AI skill is at. It may need to be bumped up. After that you can try messing with the VcomAI difficulty settings found in the userconfig folder - or the defaultsettings.sqf. I would give you the exact code but I am not at my desk to look into it... You may want to increase their spotting distance/spotting time and general skill level to see if that helps at all.

 

Keep in mind the mod and script versions will require slightly different filepaths to look into. If you are using the mod version, you NEED to enable file-patching if you want the userconfig settings to work (Otherwise it uses default settings).

 

On 2/16/2017 at 9:43 AM, fideco said:

This is by far the best AI mod i've ever tried..

Keep up the good work!

Thanks fideco! Let me know if you can come up with any interesting ideas, improvements, or find any bugs.

 

On 2/13/2017 at 0:38 AM, celludriel said:

I've been looking at the scripts, I'm at work so can't test VCOM at the moment.  I do have one question though, wouldn't this script benefit to compile them in actual functions CfgFunctions ?  Currently everything is still compiled the old fashioned way.

 

fe:

 

VCOMAI_VehicleHandleDanger = compile preprocessFileLineNumbers "VCOMAI\functions\DangerCauses\VCOMAI_VehicleHandle.sqf";

 

I know I'm nitpicking but well ... I have converted quite a few libs to functions in the past , shuko's position script, LV, and a few others.  I'm dreading having to do another one :D

What an interesting idea celludriel. Could you expand on this for me? Would this be mod specific only?

 

On 2/17/2017 at 4:05 PM, bolbies said:

I'm not sure if it's a Vcom issue or mission issue, but when playing Liberation with this mod, sometimes the AI freeze up and don't move. They'll spin in circles, change stances, and talk as if they're following orders, but they don't move from that spot. 

I have encountered this. I had this same issue with Vanilla AI as well. It has something to do with waypoints... Is this video below a similar issue?

I found out it had something to do with how waypoints were being generated and assigned to units. 

The below video is Vanilla AI, the exact bug is ~3:30 in I believe.

 

 

 

On 2/21/2017 at 3:34 PM, RizlaUK said:

Hi,

 

We've added a paradrop script which we want VCOM not to run on, for the pilots, but to still run on the paratroopers after they've jumped.

-SNIP-

Thanks a lot.

 

Regards

 

Rizla

 

 

Rizla, could you try changing

 

 

_x setvariable ["VCOM_NOPATHING_Unit",1, false];

to

_x setvariable ["VCOM_NOPATHING_Unit",false];

 

 

and

 

 (Driver _x) setvariable ["VCOM_NOPATHING_Unit",1, false];

to

 (Driver _x) setvariable ["VCOM_NOPATHING_Unit",false];

 

Let me know if that removes the error - I am not in a position to look directly at the code so I can NOT remember how I had that variable setup anymore :<

  • Like 2

Share this post


Link to post
Share on other sites

Well here are the benefits of having functions

 

Main benefits:

  1. Automatic compilation upon mission start into a global variable - no need to remember direct paths to files.
  2. Anti-hack protection using compileFinal (see Recompiling for more info)
  3. Listing in the Functions Viewer
  4. Advanced debugging options
  5. Optional immediate execution upon mission start, without need for manual call
  6. Potential performance improvements

 

full information is available here: https://community.bistudio.com/wiki/Functions_Library_(Arma_3)

 

Here is an example of one of mine CfgFunctions.hpp

 

class SlingableArmoryFunctions {
	tag = "SLA";

	class SLAInitialize {
		file = "custom\modules\SlingableArmoryModule\functions";

		class spawnSlingableArmory {};
		class addTransferCargoAction {};
		class vehicleCloseWithCargo {};
	};
};

all my functions are located in the "custom\modules\SlingableArmoryModule\functions" in following form:
 

fn_spawnSlingableArmory.sqf
fn_addTransfterCargoAction.sqf
fn_vehicleCloseWithCargo.sqf

For you it would mean to move all your scripts to a functions directory with fn_ in before and create a CfgFunctions.hpp.  To install it in your mission people will have to add it in their description.ext like this:

 

class CfgFunctions
{
	...
	#include "custom\modules\SlingableArmoryModule\CfgFunctions.hpp"
	...
};

For more information PM me, if I have some spare time maybe we can collaborate

  • Like 1

Share this post


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

×