I was going to start this with a long preamble about networking systems as a whole, but it’s a lot easier to just say: most of them dont do nearly enough to be worth using IMO.
Let me know if you find any bugs!
I am also very willing to add features if desired. As of writing (initial release), I have chosen to only write the bare essentials so the module isn’t filled with unwanted features.
What does this module do:
- Sends all remotes fired during the same tick (adjustable) as one packet
- Compresses and decompresses said packet automatically
Why:
- Never worry about remote throttling
- Send large amounts of data with less data (Compression!)
- Send stupid amounts of remotes per second
Benchmarks
All benchmarks were run inside of studio with an uncapped FPS using EternityDev’s benchmark
FastNet2:
Warp:
BridgeNet2:
Smiles Networking:
Getting Started
This module is extremely simple and works very similarly to default RemoteEvents, so getting started is a breeze.
Client:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SNS = require(ReplicatedStorage.SmilesNetworkingSystem):Client()
-- Be sure to initialize the module with either :Client() or :Server()
-- Only adjustable on client, server uses Heartbeat (Unsure if it throttles sending out data LMK)
-- Default is 1 / 60
-- You may get better compression with a lower tickrate (20, 30)
SNS:SetTickrate(1 / 60)
local ExampleClientEvent = SNS.NewEvent("ExampleClientEvent")
ExampleClientEvent.OnClientEvent:Connect(function(...)
print(...)
end)
task.wait(1)
SNS:FireServer("ExampleServerEvent", "are we gaming?") --eventName, arguments
Server:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SNS = require(ReplicatedStorage.SmilesNetworkingSystem):Server()
local ExampleServerEvent = SNS.NewEvent("ExampleServerEvent")
ExampleServerEvent.OnServerEvent:Connect(function(player, ...)
print(...)
SNS:FireClient(player, "ExampleClientEvent", "yeah, we gaming!")
task.wait(1)
SNS:FireAllClients("ExampleClientEvent", "YIIPPPPEEEEEEEE!!!!!!")
end)