Tutorial: How to Transfer HUGE files using RPC calls in C++ / Unreal Engine

  Рет қаралды 599

kirby561

kirby561

Күн бұрын

Пікірлер: 4
@llanowar90
@llanowar90 10 ай бұрын
thank you for the tutorial, this is very helpful. hope you do more
@paultorreiter2272
@paultorreiter2272 Ай бұрын
Hi- very helpful tutorial - any idea how I can increase the network speed tho? rn I can only get up to 1MB/s with this technique. I also cant really figure out what exactly is the bottleneck.. I tried increasing the network speed variables in the config, but that did not change how fast the reliable packets get delivered..maybe increase the network tick rate of the playercontroller ? LG Paul
@kirby561
@kirby561 Ай бұрын
Thanks. For pushing the limits of bandwidth, there are a lot of limits to look at. The basic params to adjust this are: DefaultEngine.ini [/Script/Engine.Player] ConfiguredInternetSpeed=100000 ConfiguredLanSpeed=100000 - These set UPlayer::ConfiguredInternetSpeed and UPlayer::ConfiguredLanSpeed in Player.h [/Script/OnlineSubsystemUtils.IpNetDriver] MaxClientRate=100000 MaxInternetClientRate=100000 MaxNetTickRate=99999 DefaultGame.ini [/Script/Engine.GameNetworkManager] TotalNetBandwidth=600000 MaxDynamicBandwidth=25000 MinDynamicBandwidth=12000 Unfortunately at the end of the day the network system is tied in with the tick rate for some reason and this makes it hard to maximize bandwidth in general. If you notice above, MaxNetTickRate (which defaults to 120) limits how many times per second UNetConnection will tick, which ends up being the bottleneck. Even if you change that to 99999 it will still be limited by how fast your game is ticking in general but I was able to get up to 5MB/s by turning that up. It's also probably a bad idea to do that in the config file because you probably don't always want that since a high framerate would flood the network for all the other network related things when you probably only want this to apply to a specific transfer. For my use case this doesn't matter but if you just want to send the file as fast as possible you may need to modify the engine net code to give yourself direct access to a side channel on the same socket from a background thread or something unless there's another method I missed. You could always open a whole separate socket and send data on that but you would need a second open port to the server and then you could always have issues where 1 connection is alive and the other isn't that you would need to handle.
@paultorreiter2272
@paultorreiter2272 Ай бұрын
@@kirby561 wow tx a lot for that thorough answer- I will give it a shot^^ yeah I also was playing around with setting up a tcp connection and reading out the ip addresses from the steam session, but I guess I will stick around with your solution for now.. Still have a lot to learn
Don't Use REST APIs in your Backend, Use gRPC
7:01
CompSciGuy
Рет қаралды 37 М.
Inside Out 2: BABY JOY VS SHIN SONIC 3
00:19
AnythingAlexia
Рет қаралды 6 МЛН
Новый уровень твоей сосиски
00:33
Кушать Хочу
Рет қаралды 4,5 МЛН
отомстил?
00:56
История одного вокалиста
Рет қаралды 7 МЛН
How to Sort a very large file | External Sorting technique
9:03
UEFI bootloader: graphics mode
36:46
Falcon Code
Рет қаралды 54
Reading a Large Data File in C++
23:59
Danny Hardin
Рет қаралды 6 М.
Watch Unix guru FIX 4 years old Syscall restart BUG affecting all SPARC GNU Glibc systems!
1:15:05
TCP/IP for Programmers
3:03:31
Eli the Computer Guy
Рет қаралды 114 М.
The True Size of an AI Niche - Why Saturation is a Myth
16:51
Liam Ottley
Рет қаралды 8 М.
How to Declare and Use Delegates in Unreal Engine 5
36:50
kirby561
Рет қаралды 1,2 М.
I regret doing this...
1:20:07
Tsoding Daily
Рет қаралды 73 М.
Inside Out 2: BABY JOY VS SHIN SONIC 3
00:19
AnythingAlexia
Рет қаралды 6 МЛН