Jump to content
theend3r

Dynamic Control of Simulation Manager?

Recommended Posts

I have a very large mission all over Tanoa (basically MGS 3 :D) with many procedural but also many manually placed units which make it nearly unplayable on my PC (albeit I have a very weak one, so it probably would run serviceably on a better one). The solution to this would be to use BIS' simulation manager module to freeze units further than x from player but this has a little caveat - the mission includes mortars and mortars don't work very well when your surroundings aren't simulated.

 

Any solution for this? Increasing the range of simulation in the module would be fine but I couldn't get it to work. Even better would be to just unfreeze the area of the expected impact location but that'd require a completely different approach, I think.

I can work out most of the scripting myself but if anyone knows how to modify BIS modules on the fly or knows of some script that solves large scale mission preformace, I'd gladly hear it.

 

Thanks

Share this post


Link to post
Share on other sites

Unless there's some variable to exclude certain units from the sim manager, I'd dig the FSM out of the pbo it lives in, edit it and then run it from the mission folder.

Share this post


Link to post
Share on other sites

Any object that has a vehicleVarName is automatically excluded from the simulation manager.
Any objects that are in the global variable BIS_persistent are excluded.
Any changes to BIS_persistent or setting BIS_fps_rescanNewObjects to true will reassess the simulationManagers hidden objects
 
Maybe you could put a fired EH on the mortar and add anything within its min-max range of the current firing mode of a in angle sector of it facing direction (just to limit amount of objects) and add them to the BIS_persistent.
Once the projectile becomes null (or shortly after) remove the listed men from persistent.

  • Like 2

Share this post


Link to post
Share on other sites

Any object that has a vehicleVarName is automatically excluded from the simulation manager.

Any objects that are in the global variable BIS_persistent are excluded.

Any changes to BIS_persistent or setting BIS_fps_rescanNewObjects to true will reassess the simulationManagers hidden objects

 

Maybe you could put a fired EH on the mortar and add anything within its min-max range of the current firing mode of a in angle sector of it facing direction (just to limit amount of objects) and add them to the BIS_persistent.

Once the projectile becomes null (or shortly after) remove the listed men from persistent.

Thanks, I'll try it.

Share this post


Link to post
Share on other sites

I am spawning units via an in-built function and respawning a new group when one is eliminated. So would the original spawned as well as the re-spawned AI be supported by this module??

I dont think I am using any global variable to spawn enemy units. My init.sqf has:

[.......] spawn JSHK_fnc_patrols;

and then the patrols function has the spawn codes with an underscore before the variables, hence no global?

 

Thanks

Share this post


Link to post
Share on other sites

I think you will need to set BIS_fps_rescanNewObjects to true after your call to JSHK_fnc_patrols to make sure the new units are added to the simulation managers to hide list.

  • Like 1

Share this post


Link to post
Share on other sites

I think you will need to set BIS_fps_rescanNewObjects to true after your call to JSHK_fnc_patrols to make sure the new units are added to the simulation managers to hide list.

Hey Larrow. :)

 

Well, after the call but how?? Like this?:

....
[.......] spawn JSHK_fnc_patrols;
BIS_fps_rescanNewObjects = TRUE; //

And finally, I hope that would prevent that vehicle exploding problem on some caching scripts when the vehicles respawn.. :)

 

I found this on a reddit page:

....
            _oldFPSStep = BIS_fps_simulSteps;
            while {TRUE} do {   // no need to test every frame, use Simulation Manager test loops instead
                waitUntil {BIS_fps_simulSteps > _oldFPSStep};
                if ({(_x distance _basePos) < (2000 + _rad) && (_x distance _basePos) >= (1000 + _rad) && !(vehicle _x isKindOf "Air")} count units BIS_grpMain > 0) exitWith {};
                _oldFPSStep = BIS_fps_simulSteps;
            };
.....

Can I add something like this for my mission? and if yes then how?? :P

 

Thanks you man, like always.

Share this post


Link to post
Share on other sites

If you know when you are spawning your units then all you need to do is place..

BIS_fpsrescanNewObjects = true;
on the next line after creating them, whether this is after a createUnit command or after some third party function you are using does not matter as long as the units have spawned they will be taken care of and the simulation manager will recheck all mission objects and add them to the list of stuff to hide if appropriate.
  • Like 1

Share this post


Link to post
Share on other sites

If you know when you are spawning your units then all you need to do is place..

BIS_fpsrescanNewObjects = true;
on the next line after creating them, whether this is after a createUnit command or after some third party function you are using does not matter as long as the units have spawned they will be taken care of and the simulation manager will recheck all mission objects and add them to the list of stuff to hide if appropriate.

Thank you Larrow.

In my spawn function, I have put a detect group members<1 line to respawn a group on the map. I think I'll have to 'spawn' this line "BIS_fpsrescanNewObjects = true;" and run it at intervals of like, 10 seconds to add the newly spawned units as well? I hope its not a performance hog script that way. Thanks

Share this post


Link to post
Share on other sites

Somebody know if its possible to use more than 1 simulation manager module ?

-For exemple i would like to use one with a 1500m activation distance and an other one with a higher activation distance like 3000, i try few thing like use it with a trigger or attach to a marker its not work

Share this post


Link to post
Share on other sites
42 minutes ago, damsous said:

Somebody know if its possible to use more than 1 simulation manager module ?

-For exemple i would like to use one with a 1500m activation distance and an other one with a higher activation distance like 3000, i try few thing like use it with a trigger or attach to a marker its not work

I dont think so, you can use multiple triggers to spawn AI in various areas, like one of the campaign missions, but not more than one module.

Share this post


Link to post
Share on other sites

Hey i got an other question about the simulation and this line

BIS_fpsrescanNewObjects = true;

 

Im editing a mission with the Ryan Zombies and Demons, i try to find a AI caching script but that not work for what i want to do, its look like simulation works really good for performance, and the deletion module(from Zombies and Demon) delete all the zombies and the spawner i don t want to delete the spawner.

I would like to use the simulation manager for the spawned Zombies

 

My question its possible to use the the simulation manager for all the spawned vehicle (zombies and other thing) in a simple way ? like use this BIS_fpsrescanNewObjects for everything...

 the simulation manager will cache the unit with a variable name? or the named unit will be not cache by the Sim. Manager ? cause i don't want to cache the named unit

sorry for my bad english

Share this post


Link to post
Share on other sites
9 hours ago, damsous said:

 the simulation manager will cache the unit with a variable name?

No, anything with a vehicle var name will not be handled by the simulation manager.

 

Maybe you will want to wait until the next patch ( some time next week if all goes well according to the latest BI sitrep ) as there is a whole new system being introduced that will be better for disabling/enabling units ( I believe it is in the next patch although I have not checked RC branch to confirm ).

You can read about it on the Wiki - Arma 3 Dynamic Simulation.

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

×