Cached incoming packets data for undefined events (aka event is not created yet on client), Once the client-side defined the event, that cached packets will processed as pre-process, This internal-feature for preventing potential packet-loss.
also tbh the update is really helpful since i can just send gameid stuff and game id mof info and chat stuff and more on one single event with arrays. Also are you working on bindable support for the warps next update?
got an error when trying to fire the player thing and a message: ReplicatedStorage.Warp.Index.Server.ServerProcess:90: table index is nil - Server - ServerProcess:90
heres code:
local thing = script.Parent
local warp = require(game.ReplicatedStorage.Warp)
local send = warp.Server('orangesend')
thing.MouseButton1Click:Connect(function(player)
send:Fire(true,player,'orange')
end)
firing from the server script.
making a thing where u can color the keyboard to your liking.
just trying to make my game as clean so i dont get confused.
what’s the easiest way to migrate regular remotes/events to this? or is the best way just to go through every script that has a remote and change the lines
u can keep the remote event instances and open find & replace all menu then write :FireServer( and on replace box :Fire(true, then replace all, this will replace all method for FireServer on every scripts (specially for client like localscript), for server you can do :FireClient( to :Fire(true, and :FireAllClients( to :Fires(true, .
and for batching remote events to warp you can do:
-- ex:
-- local Remote1 = ReplicatedStorage:WaitForChild('"RemoteEvent")
local Remote1 = Warp.Server("Remote1")
local Remote2 = Warp.Server("Remote1
2")
local Remote3 = Warp.Server("Remote3", {
maxEntrance: 10,
interval: 0.75,
})
-- or
local Events = Warp.fromServerArray({
"Remote1",
"Remote2",
["Remote3"] = {
maxEntrance: 10,
interval: 0.75,
},-- if you like to set a rate limit for this event (remote3)
}) -- for multiple events (shorten, easiest & faster)
-- usage
Remote1:Fires(true, "hello") -- use reliable event
Remote2:Fires(false, "sup") -- use unreliable event
Events.Remote1:Fires(true, "hello") -- use reliable event
Events.Remote2:Fires(false, "sup") -- use unreliable event
I’ve personally forked this and made this change but I suggest moving the reliable boolean to the .new method of server/client. its redundant specifying if a remote should be reliable or not on each fire. i think the value of network modules come from less boiler plate code.
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.
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.