Server RPC call rate?

Hi.
I have a listen server and 1 client.
I have a client controlled Pawn. Pawn has

UPROPERTY(Replicated,BlueprintReadWrite)
TArray<FTransform> Bones

Anim Node calls to Pawn with bones every frame and Pawn every frame calls UpdateBones(bones) what is

UFUNCTION(Server, WithValidation, Unreliable)
void UpdateBones(const TArray<FTransform>&  aBones);

Server updates the Bones with aBones and as it is replicated, all clients has an updated bones what is good.

Problem I have is UpdateBones_Implementation called three times per second only.

Client/server runs on same machine, so there is no network lag at all.
I do run server in PIE, and client starts in separate window.

Thanks for the help


###Added:

It has nothing with RPC eventually.
I do update variable, array of bones on my actor within AnimNode::Evaluate_AnyThread, and I do call RPC at UpdateBones on Actor Tick.
So, I do not call RPC from AnimNode. But, if I remove Anim Node from my AnimBP, there is no any delay on server. RPC received instantly.

I’m not sure what could be a reason for it. Next I would try to update variable on AnimBP, and pass variable from AnimBP to ActorBP via AnimBP’s Event Graph


###Added 2:

Im not sure what is happening and how it works.
I did add to my actor one more

TArray<FTransform> LastBones;

From AnimNode I do copy bones to this array:

Output.Pose.CopyBonesTo(ownerActor->LastBones);

Actor’s Tick Looks like

Super::Tick(DeltaTime);
UpdateBones(Bones);

so… AnimNode put data to LatestBones. Tick Updates with Bones

UpdateBones_Implementation called straight away. No problems here.
As soon as I change UpdateBones(Bones) to UpdateBones(LatestBones) I start to have same issue. UpdateBones_Implementation called with 0.3s delay.


Added:

Thats Funny… I decreased number of Transformations in Array and delay decreased as well. Now I send half of all transforms (30 instead of 60) and my delay halved.

Is there any buffer size or long serialization/deserialization process?

Unreliable calls you used will dropped while the network traffic goes heavy. And duplicate bones per frame may cause your network saturated.

I understand It could be dropped, it’s totaly ok in my context. next ms should came a next one. I did proof of concept within another empty project and calls to server received instantly. Im not sure what could specify some rate in my project. Going to move some classes from project to POC, and POC to the project to find the reason.

I believe I’m facing some sort of throttling from client → server rpc.
I have changed TArray → USTRUCT with TArray inside.
First it come to server as expected. every frame, but TArray was empty on server side.
Then I add UPROPERTY() to array to have it come to server and it start to come with 0.3s delay to server. I believe it’s all because of data

Actual problem was a cap on network speed. It was not enough to send all data in one go.
I had to increase the values in .ini files for

[/Script/Engine.Player]
ConfiguredInternetSpeed=100000
ConfiguredLanSpeed=150000

[/Script/OnlineSubsystemUtils.IpNetDriver]
MaxClientRate=80000
MaxInternetClientRate=80000

[/Script/Engine.GameNetworkManager]
TotalNetBandwidth=6000000
MaxDynamicBandwidth=800000
MinDynamicBandwidth=4000

Shouldn’t the below configuration be in the DefaultGame.ini and NOT the DefaultEngine.ini?

 [/Script/Engine.GameNetworkManager]
 TotalNetBandwidth=6000000
 MaxDynamicBandwidth=800000
 MinDynamicBandwidth=4000