ByteNet Max | Upgraded networking library w/ buffer serialisation, strict Luau and RemoteFunction support | v0.1.9

Thanks for the report, I’ll try and get a fix out soon. Your video is very blurry, is there any way you could send a clearer video? And maybe the code excerpt too?

sorry for the late response, but unfortunately i don’t think i can re-record the video and give you any related code excepts, because i only saved after i switched to remote functions, but i have made a test place which replicated what happens in the video close enough, with a bit of extra debug.

multiple_query_test.rbxl (74.7 KB)

1 Like

Version 0.1.2

Fixes

  • Fixed Wally & GitHub reference for defining namespaces

Version 0.1.3

Fixes

  • Added a queue system to handle multiple queries at once. Now the data should be sent in order.
1 Like

Hey, I’ve fixed it. Here’s the testing place you sent with the upgrades:
multiple_query_test.rbxl (75.3 KB)

1 Like

I’ll say it definitely fixed part of it, but queries still seem to be getting mixed up sometimes(?)


sometimes all queries are mixed up,

sometimes only part of the queries are mixed up.

since i have actual code snippets, i’ve made a seperate testing place with everything but the relevant parts trimmed out.
more_relevant_mqt.rbxl (73.5 KB)

2 Likes

I’m making a PR to fix this, here’s my tested fix that resolves this issue for you.
ByteNetMax.rbxm (18.9 KB)

2 Likes

Version 0.1.4

Fixes

  • Upgraded data management for RemoteFunctions, queries should not get mixed up now. Thanks to @HooferBevelops for the commit!
  • Fixed Color3 type, it now works as intended. Once again, thanks to Hoofer.

Version 0.1.5

Fixes

  • Small fix to prevent multiple firings of Remote Functions, by Hoofer.

Now available on GitHub, Wally & Creator Store.

1 Like

Version 0.1.6

Upgrades

  • Huge upgrade to the receiving system of ByteNet Max. Receiving now encodes data into buffers before reaching the client, where it is decoded. This improves performance significantly! Read the new documentation for an upgraded experience.

Fixes

  • Firing multiple requests at insane rates would break the system. That has been fixed now.

Now available on GitHub, Wally & Creator Store.

Version 0.1.7

Upgrades

  • Two new functions, .listenOnce() and .mute(). This gives you more control over your callbacks. Documentation is in the original post.

Fixes

  • Packets were broken after v0.1.6. This has been fixed. Hopefully.

Now available on GitHub, Wally & Creator Store.

1 Like

I saw that there’s a 1.0.0 version on wally, but no updates here. Is there a recent update?

No, the 1.0.0 was a mistake, that’s the first release. I don’t know how to remove package versions. The latest is always updated on the DevForum, so v0.1.7 is the latest.

1 Like

Version 0.1.8

Upgrades

  • Re-did how .listenOnce() and .mute() works. Renamed .mute() to .disconnectAll() to better reflect its functionality.
  • Re-did how .listen() works. It now returns a function that can be called to disconnect the specific listener.

For more information, check the documentation!

Now available on GitHub, Wally & Creator Store.

I can’t run any async or yielding functions with the queries. Can you fix this? I’m assuming you’re spawning the methods but I think it may be counter-productive in this case

Basically my model goes like this:

query.invoke(data)
-- Server
quert.listen(function(data, player)
    local success, datastoreData = pcall(Datastore.GetAsync, key,  value)
    return success and dataStoreData or {}
end)

It gives me an error saying it cant write to the buffer because the argument is nil. So its not waiting for the GetAsync to finish.

hey, i followed the documentation for the RemoveEvents, it gives me this error

  13:57:27.635  Stack Begin  -  Studio
  13:57:27.635  Script 'ServerScriptService.Script', Line 4  -  Studio - Script:4
  13:57:27.635  Stack End  -  Studio
  13:57:27.966  Players.danrilmaglana.PlayerScripts.LocalScript:4: attempt to index nil with 'send'  -  Client - LocalScript:4
  13:57:27.966  Stack Begin  -  Studio
  13:57:27.966  Script 'Players.danrilmaglana.PlayerScripts.LocalScript', Line 4  -  Studio - LocalScript:4
  13:57:27.966  Stack End

perhaps i did something wrong?, i doubled checked everything and i think im sure theres nothing wrong with how i setted it up.

heres the code.

--module script
local ByteNet = require(game.ReplicatedStorage.Modules.ByteNetMax)

return ByteNet.defineNamespace("messaging", function()
	return {
		printSomething = ByteNet.definePacket({
			value = ByteNet.struct({
				message = ByteNet.string,
			})
		})
	}
end)


--PlayerScripts.LocalScript
local packet = require(game.ReplicatedStorage.Events.packet)

packet.printSomething.send({"hello server"})


--ServerScriptService.Script
local packet = require(game.ReplicatedStorage.Events.packet)

packet.printSomething.listen(function(data, plr)
	print(data.message)
end)

You’ve sent a struct, which means your local code should look like this

--PlayerScripts.LocalScript
local packet = require(game.ReplicatedStorage.Events.packet)

packet.printSomething.send({message="hello server"})

When use the struct and how to use the array and map type?

I will look into it soon. Kinda busy atm

It looks a bit daunting to hop over too especially from wally.

I prefer the simplicity of things and having the program diy it for you instead of having to manually input x when only desired inputs (the developers input) are necessary.

Well, this is the fastest and most efficient networking library out there. Optimisation comes with costs.

Is there any videos or any like evidence to support that its actually better or if not the best? Anyone could make the claims. I don’t personally want to learn something that I might not intend on using anyway.

And yes I am aware of costs.