warkonaut

Dynamic Simulation Feedback

83 posts in this topic

A new system called Dynamic Simulation has been sitting on Dev-Branch for some time. In short: it's a tool that can be used to selectively control object and unit simulation based on player and enemy presence. Due to the nature of the system, it cannot be used everywhere on everything. Some scenarios might heavily profit from Dynamic Simulation, whereas some might not be able to use it at all.

 

The Dynamic Simulation is still in the testing and tuning stage. Its core functionality is done, along with the Eden Editor implementation. It is now being tested and tuned in real scenarios. To get more information about the system, how it works, how to set it up and how to properly use it, please refer to the documentation: HERE

 

We would gladly welcome constructive feedback, so please read the documentation, give it a try, and share your notes. If you can provide real use-cases of Dynamic Simulation (i.e. attaching a mission where you are trying to use it), it will greatly increase the overall feedback value.

 

Thanks,

Bohemia Interactive, Team Mike

17 people like this

Share this post


Link to post
Share on other sites

I'm guessing this is just a major improvement upon the already current 'Simulation Manage' module currently in the editor? Either looks great! 

1 person likes this

Share this post


Link to post
Share on other sites

I really hope an option is added to 'simulate' unit movement when disabled in the future. Considering that numerous unofficial caching scripts have already achieved this in some way or another, surely BIS can manage this too?

It would be incredibly helpful, as it would increase FPS in scenarios where AI don't have to be simulated at all times but still need to remain mobile.

4 people like this

Share this post


Link to post
Share on other sites

ok i have a few general questions after reading the doc:

 

1) is the disabling of the simulation equal to what happens using the script commands "enableSimulation" and "hideObject" or does it go deeper?

 

2) depending on 1) is the main benefit the grid system over a scripted solution? not saying this can be scripted but rather trying to sense how scripted it is vs engine side.

 

3) if distance is the only condition, will we get some type of hook to input additional ones? i was thinking that maybe in the future the system could get visibility check only checking with ray casts against the terrain mesh. i'm thinking that might be less expensive that a real full visibility check and make this very useful for hilly maps. for large even planes like deserts i think all the points under the "limitations" section would apply.

 

 

either way. amazng effort. i've been hoping for something like this forever. i feel like the scope of arma demands stuff like this to be part of the package.

1 person likes this

Share this post


Link to post
Share on other sites

Great work, the documentation is well written and the system looks like it should have massive performance improvements over scripted systems that used distance checks! Sure, lots of people will expect this to magically make their lag-fest, badly-scripted, 5-million-unit mission blazingly fast and will then be dissapointed   ;) but for those of us who've been using similar scripted systems this is an incredible improvement. Being part of the vanilla game and integrated with Eden should also make it easier for newer mission designers to use caching. Thanks to everybody involved! 

  

Note: Only player units can wake-up all entities. Non-player units can wake-up only enemy units.

I wouldn't want to clutter the UI with another toggle but could we get a script toggle (command or an object variable that we can set) that switches a non-player unit/group to the wake-up-all behavior that players have?

 

Possible use cases would be "support" units (tanks, aircraft) that players can send in to deal with threats:

Let's say I have west and east AI units fighting an ambient battle. All units are set to non-wake-up since we don't want that battle to waste resources when players aren't close enough to notice. We now allow the player to send a friendly AI support element (e.g. an armed vehicle) into that battle. We set the tank to "wake up units" since we want to allow stuff like the player sending an AI support unit ahead to clear an objective. This works as intended as long as the player is in range but as soon as he goes out of range the poor support unit is left all alone, waking up all his enemies but none of his friendlies....the poor support unit is now outgunned pretty badly. The alternative would be to keep the support unit in "non-wake-up" state, too, in which case the player wouldn't be able to use the support unit on objectives outside his current "wake up radius" which requires the player to be aware of the ranges. That just feels 'wrong', too.

 

Oh, one more question: What's the interaction with Zeus-controlled units? Are they treated according to the underlying AI unit or are they treated as a "player"?

Share this post


Link to post
Share on other sites

Since it doesn't feature movement simulation and line of sight checks it kinda defeats the purpose if you've already got your own unit caching going.

Seems like a nice feature for new mission makers though.

 

Cheers

Share this post


Link to post
Share on other sites

First of all, well done. The documentation is very detailed and well written, and the overall presentation of the new system looks neat.

 

Here's some feedback:

- Does this system replaces the Simulation Manager module? My guess is, that the scripted solution of the module is slower?

- There should be a button in the Global Settings which defaults all distances

- Dynamic simulation should be applied to all units by default. In most missions, there will be more objects it works for by default, than units where it needs to be disabled (At least in my missions). Enabling it one by one for each object defeats the purpose and makes it tedious

- In case DS is disabled. The object attributes should be grayed out in the same way it's done with the revive attribute

- Line of sight check is probably something you should consider since it would eliminate many situations where DS would fail otherwise.

 

I'll add more feedback when it's back on dev.

Share this post


Link to post
Share on other sites

First of all, well done. The documentation is very detailed and well written, and the overall presentation of the new system looks neat.

 

Here's some feedback:

[...]

- Dynamic simulation should be applied to all units by default. In most missions, there will be more objects it works for by default, than units where it needs to be disabled (At least in my missions). Enabling it one by one for each object defeats the purpose and makes it tedious

[...]

 

I'll add more feedback when it's back on dev.

 

Not sure I agree on that point - it will break a lot of missions IMO. Maybe one solution would be to automatically disable DS on groups with active or activated waypoints?

Share this post


Link to post
Share on other sites

Not sure I agree on that point - it will break a lot of missions IMO. Maybe one solution would be to automatically disable DS on groups with active or activated waypoints?

 

Mission published before the update won't be  affected, and mission which are WIP can be adjusted. I think BIS should find a middle way.

1 person likes this

Share this post


Link to post
Share on other sites

Hi, I can see the case to check "enable dynamic simulation" but I don't have any menu for global parameters in performance settings (just garbage collection at this time). v 1.66. did I miss something?

Share this post


Link to post
Share on other sites

Hi, I can see the case to check "enable dynamic simulation" but I don't have any menu for global parameters in performance settings (just garbage collection at this time). v 1.66. did I miss something?

Yea same. I can enable DS for each unit individually through their attributes menu but yea, I dont see the drop down menu > performance > ds

Share this post


Link to post
Share on other sites

Hi, I can see the case to check "enable dynamic simulation" but I don't have any menu for global parameters in performance settings (just garbage collection at this time). v 1.66. did I miss something?

 

 

Yea same. I can enable DS for each unit individually through their attributes menu but yea, I dont see the drop down menu > performance > ds

 

It's on dev branch.

Share this post


Link to post
Share on other sites

Can you get Dwarden to roll some of this tech out to Stable through his custom binaries? That would enable some of us with access to large numbers of players to test the system out and provide feedback.

 

 

As you can see we are excited to see this :)

 

Perhaps you can augment the system with a couple event handlers (will send cupcakes!)

addMissionEventHandler [
	'EntitySimulationChanged',
	{
		params ['_entity','_newState','_dynamic'];
		comment "my code to execute when an entity simulation state is changed";
		
	}
];


and/or 


<object> addEventHandler [
	'EntitySimulationChanged',
	{
		params ['_entity','_newState','_dynamic'];
		comment "my code to execute when an entity simulation state is changed";
	}
];

Also maybe a getter to return the grid of a position/object.

_grid = dynamicSimulationGrid (object/position);	// Grid [layer,grid number,X,Y,length,width,angle,isRectangular], empty array [] if invalid. Also be gettable from server.

I am thinking of the application for gamemodes like Insurgency which use triggers to activate and de-activate certain grids depending on proximity and other factors, it would be cool if they could simply piggyback on the dynamic simulation manager, but I think we'd need to know simulation grid data in order to pull that off.

 

Keep up the good work warka

 

https://community.bistudio.com/wiki/Arma_3_Dynamic_Simulation

1 person likes this

Share this post


Link to post
Share on other sites

Hi, I can see the case to check "enable dynamic simulation" but I don't have any menu for global parameters in performance settings (just garbage collection at this time). v 1.66. did I miss something?

 

 

Yea same. I can enable DS for each unit individually through their attributes menu but yea, I dont see the drop down menu > performance > ds

 

Don't know how they missed that.

 

It's on dev branch.

 

For me, it isn't. The performance tab only contains the garbage collector.

 

Share this post


Link to post
Share on other sites

Some stuff ended up in 1.66 ... probably not intentional ..

1 person likes this

Share this post


Link to post
Share on other sites

Could you make it simple Object compatible? I guess not but the fact is, if you chase the FPS, why not apply dynamic simul also on simple object?

NB: at this time, simpleObject in editor don't allow to hide object. I tried with no more success the command createSimpleObject and the functions bis_fnc_createSimpleObject and bis_fnc_adjustSimpleObject.

Each time, i lost the possibility to hide/unhide the simple object, and the doors/ladders animations.

 

It's a good time to improve also the custom compositions. At this time, it's a simple copy/paste of objects/units with a possibility to register this in editor. Compositions should be "spawnable" with createComposition my_var or call bis_fnc_spawnComposition. If not, at least make them dynamic simulated in one operation.

 

I think it's a good improvement as far as static objects are concerned. For mobile units, the freeze is not a good idea, breaking scenarios. At least all leaders should maintain the path of the formation. What ZBE_cache addon is doing well.

1 person likes this

Share this post


Link to post
Share on other sites

Hi guys, the problem with non-accessible settings in the Performance tab was fixed. You will get the fix with the new exe that should hit the dev today or tomorrow.

 

Thanks for the initial feedback. I will be answering your queries as well as I can in the following days (while actively working on it) - it is still being iterated on, we are doing internal testings and adjustments to it.

 

There might and probably are some issues, so brace yourself. ;)

4 people like this

Share this post


Link to post
Share on other sites

The Dynamic Simulation settings should now be available on dev (executable rev. 1.67.139561+).

2 people like this

Share this post


Link to post
Share on other sites

Is this using 

enableSimulationGlobal

.

 

I had a mission with ~500 units using this command with headless client and my client fps was ~ 30 with all the ai "cached".

Will dynamic simulation have a better impact than

enableSimulationGlobal

?

 

How big performance increases would there be with objects compared to simple objects ?

1 person likes this

Share this post


Link to post
Share on other sites

is this going to work with agents or only with units? i assume it will but wanted to be sure.

Share this post


Link to post
Share on other sites

It's a little bit off-topic, but i hope it's still o.k. to post this here.

 

Now with Dynamic Simulation shaping up quite nicely, is there a chance we can get a rework and unification of multiplayer view settings? I always suspected the view distance settings in MP only working with the forced "view distance" command, had to do with netcode being dependent on object viewdistance.

Wouldn't it be possible to link the Dynamic Simulation settings with netcode settings and give more freedom to clients concering view distance? Maybe mission designer could choose to force min/max view distance for terrain and objects seperately.

 

I think. it's a pity, that in SP you can have the expanded terrain view distance with the landmark-buildings being rendered at great distances, while in MP you either have the low default visibility, or you have object and terrain distance forced on you. I think it should work, that in MP you have your personal terrain viewdistance with the landmark buildings being rendered, while AI netcoding and general PvP engagement ranges for the netcode would be set by the mission designer with the Dynamic Simulations manager or a seperate netcode setting.

 

I hope that makes sense:)

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