- Added ordered remotes
Ordered remotes will guarantee your remotes are sent in order. Default behavior is unordered, set remote behavior through second parameter or remote.behaviour. Ordered remotes will take more bandwidth. Unordered remotes will fire after ordered remotes.
- Added better player filtering
- Complete Rewrite
- Removed local identifiers for namespaces
- Having less than 256 remotes results in smaller identifiers
- Removed :eachC and :eachS
- Removed
aloroid/t
andsleitnick/signal
dependencies - Removed support for more than 65536 bridges
- Removed middleware
- Fixed a memory leak
- Added
CheapNet.pack
andCheapNet.unpack
- Exported types for
LeakyBucket
- Improved reliability of
:eachC
and:eachS
Note: Calls are required as otherwise, you'll produce a memory leak since the packets will not be cleared. Packets are only cleared every
:each
call and will iterate over the packets that have been sent between:each
calls. This stops potentially missing packets.
- Added Leaky Buckets
- Added before and after runtime typecheck tests
Tests run on both server and client including when you fire. These runtime typecheck tests now prevent both developer error and exploiters sending bad packets.
- Improved Types
- Improved Middleware Error Messaging
- Middleware is now safely called.
When middleware fails, packets are dropped. Yielding may cause unexpected behavior.
- Implemented Efficient Integer Packing
Integers are now packed as efficiently as possible. Bridges and Identifiers now support more than 65536 Ids.
- Fixed a bug with identifiers
- Fixed a bug with multiple identifiers
- Added Identifiers
- Added
Bridge:GetLocalIdentifier
andBridge:FromLocalIdentifier
- Added
CheapNet:GetGlobalIdentifier
andCheapNet:FromGlobalIdentifier
- Added
ClientBridge:eachC
andServerBridge:eachS
This method will iterate through the current frame's packets. This is useful inside ECS frameworks where they run code every frame.
- Deserialization is now faster when there are no connections to the Signal
This is because when a Signal runs, they'll have to create threads to run the connected callbacks which is expensive. Using the
:eachC
and:eachS
functions, you can iterate through the packets instead.
- Removed hidden
UnifiedBridge:each()
method
- Initial Release