You can just look at the decrypt function code. Why do you need this?
Short answer: You don’t. This is only going to make perf worse.
Long answer: Encryption like this does actually prevent malicious actors from man-in-the-middle attacks for something like a client-server login method, which does have its uses. But you should never be doing it for every single remote- that’s just going to inflate data sizes and take up processing power.
Another interesting thing is :ListenToServerClose() when game:BindToClose() exists.
That code is useless without a key, which cannot be obtained easily. To obtain the key, you would need to go through the local script’s memory.
Even then, it won’t help much, because once the remote fires it’ll immediately be desynced.
Data sizes are low and processing power is minimal.
cc @ffrostfall
The difference between the two is that ListenToServerClose
can be stacked/connected multiple times, while BindToClose
cannot.
" local script’s memory." which, FYI, exploiters can do extremely easily. It’s a single line to save the entire game, and 3 clicks to save all the scripts for the game.
The data size is additive- if you have 60 players in a server, and this compression algorithm is adding 5 bytes per remote call, that’s 5*60 = 300 bytes per :FireAllClients(). This is, ironically enough, a huge deal when you consider the bytes to bits conversion. 300 bytes is 2400 bits, which is 2.4 kilobits, which is a big deal considering this is a single :FireAllClients().
If you scale this up to be, e.g, per every other frame, 30*2.4 = 72, which is 72 wasted kilobits per second.
Lower bandwidth results in smaller frame times, which results in lower ping. It also means that packet loss is less likely to occur, because if the route the packets are taking ends up being congested it may result in packets being dropped.
Lower bandwidth also means players with worse connections can play the game smoothly- if your internet connection isn’t good enough it can result in bottlenecks. 100 kilobytes (100*8 = 800 kilobits), is about 1 megabit per second- which if you’re trying to target mobile players, means that your connection can be straight up dropped. You should realize a lot of kids are playing Roblox on mobile data.
All this for literally no gain. plus, the encryption is probably larger than 5 bytes.
Would it be possible implement BridgeNet into Yucon? Then you still have the security benefits, while also saving bandwidth. Would be nice if we could disable encryption easily too.
The network usage is more than doubled when using Yucon:
Standard remotes:
while task.wait() do
for i = 1, 30 do
game.ReplicatedStorage.BasicRemote:FireAllClients("Received: Fire", "Test", "Test2")
end
end
Yucon
while task.wait() do
for i = 1, 30 do
self:FireAllClients("Received: Fire", "Test", "Test2")
end
end
JSYK it can.
Multiple functions can be bound using BindToClose if it is called repeatedly.
https://developer.roblox.com/en-us/api-reference/function/DataModel/BindToClose
This is a great framework! Is there anyway you could implement roblox ts into it because i would think it will be beneficial for bigger Roblox studios
Unfortunately not as this framework is discontinued.
This really does suck!
I love Yucon and wished I’ seen it when it first came out.