AgentRevolution – User talk

From Bohemia Interactive Community
Revision as of 13:16, 12 October 2014 by AgentRev (talk | contribs) (Reply to KK)
Jump to navigation Jump to search

Are you sure about locality of disableCollisionWith? Because it doesnt make sense for the effect to be local --KK

EDIT: corrected it.

My conclusion came from these observations: if an MH9 collides into a cargo parachute and both are local, the MH9 gets damaged and crashes. If I call "para disableCollisionWith mh9", the MH9 can freely pass through it. Now, if the MH9 is client-side and the parachute is server-side, and I call "para disableCollisionWith mh9" on the server, it has no effect on the client and the MH9 gets damaged. If the same command is called on the client only, then the parachute has no effect on the MH9, and it will bounce away like a balloon if the heli collides with it. If called on both the client and server, then the MH9 can freely pass through it without the parachute moving at all. Also, if both the parachute and MH9 are local to the server, the command is called on the server, a player gets in the MH9, and rams it into the parachute, the MH9 explodes.
In essence, the effect on the engine is always local, but what's being perceived globally down the line is how the collision actually takes place. --AgentRev 23:34, 11 October 2014 (CEST)
That is what I observed as well. This points to local argument requirement. In case of both arguments being local command works just fine, in case them being one local one remote, this is where it gets confusing. In case with the helli, once you got inside, you changed its locality, so you needed to run command locally too. --KK
In light of what I said, I think it would be most appropriate to remove the argument locality, since it can be a mix and match of local & global, and that the effect locality be changed back to local, as it only affects the computer where the command is called. --AgentRev 10:08, 12 October 2014 (CEST)
Argument locality indicates execution locality of the command, and with collision command this is exactly where the command should be executed, locally to one of the arguments. However, local to which argument is the question. In case with player and object, player is the main argument, AI and object, it is AI. A Note explaining weird behaviour will be sufficient IMO. As a rule of thumb it would not hurt to execute where each argument is local. --KK
When I see "arguments local" for a command, I interpret it as "every single object passed to the command must strictly be local otherwise it will irrevocably fail to achieve the desired effect", which doesn't quite match this command. When I see "effects global", I interpret it as "the effects of this command will be applied to all computers on the network and persist if the locality of the object changes", which is true for pretty much every command marked with "effects global" except disableCollisionWith. --AgentRev 13:16, 12 October 2014 (CEST)