Question about Udon bandwidth

Udon’s documentation states: “You can send out about 11kb per second” (Network Specs and Tips | VRChat Creation) but while stress testing the networking of a world idea I found the out limit was actually around 4KB/s.

The network activity in my testing world is being performed by an entity and its copies, all owned by the master. This entity has a synced Vector3 and int. Its sync mode is manual and is using a looping SendCustomEventDelayedSeconds to perform a RequestSerialization every second. The entities also slowly approach the master.

Using “Build & Test” and launching two clients, at 41 copies of the entity I am hitting an out of ~3.80KB/S and the network is performing fine (using “Debug Menu 6” to measure this). At 51 copies it starts fine for the first 10-20 seconds before the network enters a “suffering” state at ~4.11KB/S. For a heavy stress test of 201 entities, the networking instantly enters a “suffering” state while the out remains at ~4.11KB/S.

Can someone knowledgeable about Udon’s networking explain this gap between the 11kbs listed in the documentation and the 4kbs I am hitting? Is the documentation wrong? Is my implementation throttling the max potential output I could obtain? If so what things should I consider to avoid this throttling?

3 Likes

If you’re only sending a request every second, you’re not taking advantage of the per-tick limits. You’re being limited to the rate a single network sync tick allows, of which multiple can happen per-second.

You could perhaps split up your requests into 4 separate chunks over that second instead perhaps…

You may also have better luck by having the master object collect the information about it children, stored in an array, and synching that array. Then updating the children on other clients when their master receives that data.