Warp - very fast & powerful networking library

How is this 9 times faster than remote events? Don’t they have to use remote events internally??

2 Likes

bro the math not mathing, remote event was printed faster every time, go frame by frame if you want:

Added FastNet2:

image

THE RESULT

image
EVERY time

(server receive, client → server)

client:

that benchmark you see is bulk benchmark not single.

conclusion:
regular might faster for single sent but not for multiples. migrating from regular to warp (or other library that kind like this) will receive/gain a huge improvements for big / heavy game task scale.

hope you understand.

May I get the benchmark code? thank you!

its just lil simple code like using os.clock with optimized usage.

Appreciating your work on Warp, but I noticed a hiccup with the custom Assert function. It seems the string formatting in the error message will run every time, regardless of the assertion’s outcome. This is essentially the same as the built-in assert.

Consider tweaking your Assert to only format the error message when necessary (string formatting is costly):

lua

return function(condition: any, errorFunc: () -> string): ()
    if not condition then
        error(errorFunc(), 2)
    end
end

Use it like this to avoid premature string formatting:

lua

Assert(typeof(Identifier) == "string", function()
    return `[Warp]: Identifier must be a string type, got {typeof(Identifier)}`
end)

This should help in truly enhancing assert performance. For a deeper dive on optimizing assert, check out a post I’ve written years ago: Be Careful When Using Assert and Why. Might give more valuable insights.

Keep up the good work with Warp!

Is there any way to differentiate OnServerInvoke and Connect? so it can be used by just one ‘identifier’ like BridgeNet2?

its possible to multiple connections (:Connect) but i suggest to dont for Invoke usage.

-- Script1
Remote1:Connect(function(player, ...)
end)

-- Script2
Remote1:Connect(function(player, ...)
end)

-- LocalScript1
Remote1:Fire("hello") -- this will sent to Remote1 connections (:Connect)
Remote1:Invoke(...) -- i suggest to dont do this on multiple identifier connections (:Connect) due its invoke where it receiving.

Well yeah I know, but lets say if you use two different callback, it will return the latest callback. So what I want is when :Invoke it only triggered the invoke callback. Is it possible?

its not possible.

This text will be blurred

nvm im stupid.
just 30 more. please ignore

short msg

??? Did i do something wrong?
2d1f1ec2fa7d3319ea520cc4c72e3273

Use Userid instead of id. Every player has an Userid property and not an id property.

thats the Warps module error and not one of mine. All ive done is used the “Fires” function in Warp.

what version did you use? and can u show how u use the function?

This text will be blurred

I suggest you to add method to Fire all players except one, i modified your module so it look like this
изображение

hi i found a bug where if someone leaves the game the modules script gets stopped so that means like every event wont work until another player joins and then the script will run again
it happens to both my games
heres a post i found on the forums since its a roblox issue Player leaving stops code - #7 by This100Times

also sorry if i sounded like a idiot like 30 days ago

the issue doesnt happens to me, might just be yours.

ok ill look into my own code.