Remoteless | An evil networking library created purely out of spite

An evil networking library created purely out of spite. Have you ever wanted networking that will eat your dragons? Expose unpredictable and undefined behaviour? Is Hyrum’s law incarnate? You’re in the right place.

Remoteless is a networking library for the Roblox engine that does not rely on RemoteEvent, RemoteFunction or UnreliableRemoteEvent but instead chooses alternative blasphemous methods for achieving client to server and server to client communication.

354916281-4c82f0fa-1017-4550-9a1f-557b40f87307

API Examples

Server

local Remoteless = require(game:GetService("ReplicatedStorage"):WaitForChild("Remoteless"))

Remoteless.Initiate()

local function PlayerAdded(Player)
	Remoteless.PlayerConnected(Player)
	
	while Remoteless.Active(Player) do 
		local Buf = Remoteless.WaitForEvent(Player)
		
		print("Received data from client: ", buffer.tostring(Buf))
	end
end

local function PlayerRemoving(Player)
	Remoteless.PlayerDisconnected(Player)
end

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(PlayerAdded)
Players.PlayerRemoving:Connect(PlayerRemoving)

for i, Player in Players:GetPlayers() do 
	task.spawn(PlayerAdded, Player)
end

task.wait(5)

while true do 
	for i, Player in Players:GetPlayers() do 
		Remoteless.Send(Player, buffer.fromstring("Good Morning!"))
	end
	
	task.wait(5)
end

Client

local Remoteless = require(game:GetService("ReplicatedStorage"):WaitForChild("Remoteless"))

local Alive = true
local Humanoid = script.Parent:WaitForChild("Humanoid")

Humanoid.Died:Once(function()
	Alive = false
	Remoteless.Cancel()
end)

task.defer(function()
	while Alive do 
		local Buf = Remoteless.WaitForEvent()

		task.spawn(function()
			print("Received data from server: ", buffer.tostring(Buf))
		end)
	end
end)

Remoteless.Send(buffer.fromstring("Hello World"))
Remoteless.Send(buffer.fromstring("Goodbye World"))
Remoteless.Send(buffer.fromstring("Hello World"))
Remoteless.Send(buffer.fromstring("Goodbye World"))
Remoteless.Send(buffer.fromstring("Hello World"))
19 Likes

This is completely psychotic and it reminds me of when I first started programming I used Debris and Destroying events to multithread before I learned about coroutines (and now the task library)

Might I ask what the use-case for this is. Or was this just a for-fun exercise.

4 Likes

The singular use-case this has is in an anticheat to avoid showing up in a cheater’s remote spy. Since it supports polling and sending buffers over the network you can write a reliable network heartbeat to make sure cheaters aren’t spoofing data or preventing anything from being sent, it makes it a fair bit more difficult to find the networking itself and makes it a requirement to actually get a reference to the function so you can hook it.

1 Like

Other evil methods you could also achieve this with include:

  1. Positioning a part through NetworkOwnership.
  2. Setting the Humanoid’s State.
  3. Getting a VehicleSeat’s Steer & Throttle.
  4. Deleting objects under the character when RejectCharacterDeletions is disabled.
  5. Equipping Tools.

And other undocumented engine quirks dating back to 2006!


However, just packing your data into buffers should be enough, as most exploiters won’t even bother trying to reverse-engineer each packet’s format. You also get smaller network usage as a bonus!

3 Likes

TheGreatSageEqualToHeaven is my goat :pray: great networking library and great datastore vulnerability stuff :wink: keep it up my goat

1 Like

THE PART MORSE CODE IS REAL I CAN’T BELIEVE THIS LOL
I always joked about a morse code using parts to not use remote events because I remember someone talking about that purely to avoid Remote Spy, and here it is