UDP like networking

Since we have this new FilteringEnabled, it has inspired me to make one of my game completely client/server separated, and recently, I have been thinking about the sheer amount of networking my game will consume with regular networking, setting up a packet send, then verifying it for something that runs once a second on a lot of data. it would be nice if we had some feature to send data to the client/server where there was no verification made that the packet was received, perhaps a property of a RemoteConnection? since I don’t really care that tweening data is sent to the client every game step, I would rather save the bandwidth, and be able to increase the game step, and just interpolate when it misses data.

1 Like

I’m confused. What is the problem and what are you suggesting that would solve it?

Well, typical networking takes up a ton of bandwidth, because it has to check itself that all of the packet got through, a straight networking type option, perhaps a setting in RemoteConnections, could just send the data, without checking if it went through at all.

my problem will be the huge amount of networking that my game will require, the solution is UDP

You don’t want this, there’s something that you’re forgetting:

If you get rid of guaranteed delivery, you also get rid of guaranteed order at the receiving end. Of the two problems, lack of guaranteed order is much harder to work under than lack of guaranteed delivery, and you would find out that it’s very hard to do things correctly taking into account out of order packets.

Just take your slightly heavier networking cost and work with it. Trust me, it’s worth it.

This is a really good article on game networking: The Internet Sucks: Or, What I Learned Coding X-Wing vs. TIE Fighter

TL;DR: Don’t use TCP or UDP. The best solution is usually a modified version of UDP that can account for packet loss while not clogging the network for one missing packet.

I’d love to be able to use replication in a more controlled way (ReplicatedTypeValue or so would suffice for me, allowing changes from a single/multiple/all clients…).
Replication is a really handy technology, as long as it’s controlled.

ROBLOX already uses a UDP-like system, because they use RakNet - which is built on top of the UDP layer, I believe.

What I would like is a way to say what sort of data is replicated from client to server and vice-versa.

some data I would like guaranteed, but for game step data, it could be out of order, or not ship at all and I would be fine with it, as I can always interpolate, and I send a timestamp with my packets anyway, as I already have a case where data can be out of order to the client

RakNet is UDP based/modified, thankyou for the notice, and it would also explain why roblox is running as well as it is under the load I give it, although pure UDP would be nice anyway, as a setting to the RemoteEvents/ RemoteFunctions

I doubt that it would be particularly nice; ROBLOX would probably have to open up a different port (because I’m pretty sure that RakNet doesn’t let you send raw data through the UDP socket) and end up sending/receiving more data, which is the exact opposite of optimisation.