Page MenuHomeFeedback Tracker

publicVariableClient propagates to all clients, thus not having expected behavior
Closed, ResolvedPublic

Description

publicVariableClient has been stated multiple times to limit traffic based on only sending the data to a single client. This is incorrect. publicVariableClient event handlers only fire on the target client, and the data is only updated on the target client.

HOWEVER, the network packet is still sent to all clients, and then received and processed by all clients. With large public variables, this causes frame stutters on all clients when a publicVariableClient is updated.

Expected Behavior:
publicVariableClient should only send an actual network message to the target client, and not affect all other clients. {F25583} {F25584}

Details

Legacy ID
3411142235
Severity
None
Resolution
Fixed
Reproducibility
Always
Category
Multiplayer
Steps To Reproduce
  1. Have two clients join a server
  2. Send a large publicVariableClient to a target client

This can be created with:
_testData = [];
for [{_i=0}, {_i<10000}, {_i=_i+1}] do {
_testData pushBack format["%1", _i];
};
_target publicVariableClient _testData;

  1. Game will stutter on *both* clients
Additional Information

This was found during my series of MP client FPS loss testing. Attached is the master mission I was utilizing for testing. This performance is exhibited with PublicVariable and publicVariableClient.

Event Timeline

jaynus edited Steps To Reproduce. (Show Details)Feb 12 2015, 6:00 PM
jaynus edited Additional Information. (Show Details)
jaynus set Category to Multiplayer.
jaynus set Reproducibility to Always.
jaynus set Severity to None.
jaynus set Resolution to Fixed.
jaynus set Legacy ID to 3411142235.May 7 2016, 8:16 PM
jaynus edited a custom field.

It is not working on the current attached test mission. Please provide 100% steps to reproduce and correct test mission. Thank you

Bohemia added a subscriber: Bohemia.May 7 2016, 8:16 PM

Maybe this is due to the fact that if you use publicVariableClient (on the Server), the Server has to send the BIG public variable to the client.

In this case is the Server that is suffering band problems and propagating these to all clients connected...

Nou added a subscriber: Nou.May 7 2016, 8:16 PM
Nou added a comment.Feb 26 2015, 7:53 PM

Even if this is not reproducible in this test, this is how the code performs. Please look at the code and see if it is doing what is described.

hladas added a subscriber: hladas.May 7 2016, 8:16 PM

Unable to reproduce.

  1. How did you get target ID?
  2. It is send to all clients only if ID is 0.

jaynus: the details you gave to Dwarden - it was from client, not server

jaynus added a subscriber: jaynus.May 7 2016, 8:16 PM

No repro on latest dev.

zx64 added a subscriber: zx64.May 7 2016, 8:16 PM
zx64 added a comment.Mar 20 2015, 7:48 AM

Tried to make a repro (attached with OA and A3 versions) but I can't seem to reproduce the issue even in OA 1.63.

You can observe when the test switches from using publicVariable to the more specialised versions with the network tab in resource monitor: http://i.gyazo.com/73f19b35e340902863a93e1c03da3270.png (orange line is filtering for my Arma client)

Will mark it fixed (probably by overall code improvements) for now. Please follow up, if it needs to be re-opened.