x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

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:

hats 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?

Product Version: UE 4.21
Tags:
more ▼

asked May 08 '19 at 06:28 PM in C++ Programming

avatar image

denton85
11 1 4 5

avatar image denton85 May 09 '19 at 11:04 AM

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

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

2 answers: sort voted first

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
more ▼

answered May 09 '19 at 01:55 PM

avatar image

denton85
11 1 4 5

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

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

more ▼

answered May 08 '19 at 10:14 PM

avatar image

henryLiu
31 3 3

avatar image denton85 May 09 '19 at 04:26 AM

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.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question