Yucon Framework || Optimization, organization, and high-level security

You can just look at the decrypt function code. Why do you need this?

2 Likes

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.

2 Likes

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.

3 Likes

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.

1 Like

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

image


Yucon

while task.wait() do
	for i = 1, 30 do
		self:FireAllClients("Received: Fire", "Test", "Test2")
	end
end

image

1 Like

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

1 Like

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.

1 Like

This really does suck!
I love Yucon and wished I’ seen it when it first came out.

1 Like