BridgeNet | Insanely optimized, easy-to-use networking library full of utilities, now with roblox-ts! | v1.9.9-beta

ehm, .Start is literally not in the code. I think I might’ve uploaded the wrong version?

Could you take a screenshot of the BridgeNet modulescript itself? It should look like this:
image

Sure, here you go:
image

Yep, outdated version. It should be fixed.

oops.

1 Like

Hi, with the most recent version of bridgenet, anything I run does not work.

I tried using my own code and the example code from the documentation, both return 2 errors.

attempt to call a nil value

From both the client and the server.

Not sure if this would be classified as a bug or I am doing something wrong, so decided to post here instead of making an issue on github

1 Like

This is most likely because you’re using the .Start() functionality it previously had, which is now removed and it works as intended on require. Exact same error I got, tripped me up for a sec cuz the docs were outdated lol

2 Likes

yeeep. I will be updating the docs when 2.0.0 fully releases.

And likely adding this as a warn message lol

1 Like

This is the first time I have actually had time to test BridgeNet’s capabilities, and the results are astonishing.

2-3KB receive on the server (using packetprofiler) and 50+ ping on the client while replicating 128 NPCs’ position per frame without implementing any additional optimization than what’s already provided.

2 Likes

i’m curious- can you try doing the same test with a 20hz replication rate? you should be able to just do Bridge:SetReplicationRate(20)

Most of the time, the packet size is 2840 bytes…
image

… and rarely it is 5680 bytes
image

and the ping is 50ms+ (50 → 60 to be specific)

However, when I ran the test again with replicationrate as 60hz, the results were the same. I will test both 20hz and 60hz using robloxs’ performance tab instead to double check accuracy.

EDIT:
I had maxRatePerMinute as 60 during the whole tests, so does it matter?

I don’t think maxRatePerMinute should matter- rate limiting is not added yet.
20hz should compress it more and have slightly less data size- could you print .GetQueue every heartbeat?

Do you mean ._returnQueue? I have 2.0.0-rc4 and that’s probably why I don’t have it.

BridgeNet.GetQueue()- it should be in 2.0.0-rc4, it’s in BridgeNet itself, not the object.

I’m writing the documentation for 2.0.0 right now, actually.

1 Like

I lowered the NPCs count to 4 so that my studio can handle the enormous prints’. Anyways, here is a picture of two getqueues calls.

1 Like

spoiler alert: 10x faster than Roblox’s internals
Roblox:


BridgeNet:
image

4 Likes

(Can confirm it DOES go 10x faster)

1 Like

I just want to ask one question. What Theories and Methods were used in this module? Like, Compressing tables to string, Optimization methods, Solving methods for Roblox remote problems, and so on. And, Tips for Remote Handling and Optimization would be welcomed too.

I could write a whole series of articles on what went into BridgeNet, and maybe I will at some point. But the basics:

  • Individual byte compression
  • Thread re-use
  • Object-oriented programming
  • Queueing
  • Batching
  • References
  • Heavy table manipulation

Roblox-ts typings have been updated to 2.0.0-rc4, this is one of the last steps before 2.0.0’s full release. Let me know if there’s any issues!

1 Like

I want you to ask for any tips for the following question. Are there any tips for networking with Class(Server) to Class(Client) Remote?
I’m using methods to make all needed remotes (divided as usage) for each Class ‘Instance’. It looks so weird and not optimized. And additional, What is the working method for this?