Page MenuHomeFeedback Tracker

AI initial synchronization causes FPS "Stutter" on all clients as large initial spawn packet is deserialized
Need More Info, WishlistPublic

Description

Following in my series of multiplayer performance tickets; AI spawning synchronization was re-prioritized in recent networking engine changes. This priority change has caused the spawning of AI's to become client-render blocking.

When an AI is spawned on the server, network and object propagation occurs to all clients. These network packets cause FPS loss on all clients on immediate reception of the object. This is due to object deserialization over the network blocking the render frame.

Recommendation:
Investigate internally queueing and throttling network updates, or processing and deserializing updates in a separate thread prior to being handled by the simulation/render thread.

Details

Legacy ID
3051395814
Severity
None
Resolution
Open
Reproducibility
Always
Category
Performance
Steps To Reproduce
  1. Join a server
  2. Spawn an AI Tank

Watch the render frame on reception of the object synchronization take upwards of 50-100ms to process the object.

Event Timeline

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

Please provide more specific repro on this issue. Im unable to reproduce it.

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

Run the below provided code with more than 15 clients connected to a dedicated server:

if(isServer) then {
repro001_delay = diag_tickTime + 10;

repro001_function = {

		if(diag_tickTime > repro001_delay) then {
			_group1 = createGroup west;
			"B_APC_Wheeled_01_cannon_F" createUnit [[0,0,0], _group1, ""];
			[repro001_handle, "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
		};

};

repro001_handle = ["repro001", "onEachFrame", repro001_function] call BIS_fnc_addStackedEventHandler;
};