Introducing UnreliableRemoteEvents

thought this was a joke at first ngl

1 Like

Does this mean we can finally have lower ping even by a bit? I understand unreliable calls are more faster then reliable calls. But wouldnā€™t you want particles synced up to a combat event? Would Unreliable events be good for automatic weapons? I bet not for snipers or shot guns though as you donā€™t want to lose the packet.

I know it could be useful when updating something constantly and its not bad to lose one or two of the packets like character movment.

Is the overhead size for the UnreliableRemoteEvent the same as that of the RemoteEvent?
Can I expect a reduction in bandwidth usage, or is the reduction only in terms of delay?

1 Like

The name does sound funny but they can be surprisingly useful

I am still kind of a beginner developer, so can someone explain why this is impacting to us developers? Does it have to do with the timings or something?

If you are only using ASCII characters each character equals 1 byte plus a couple of bytes of overhead depending on the length of the string (2 bytes if the string length is less than 2^7 = 128 characters long, 3 bytes for strings that are between that and 2^14 = 16384 characters long, etc. )

As for other common data types,

  • Numbers use up 9 bytes (8 bytes + 1 byte overhead)

  • Arrays like strings have an overhead depending on their length (2 bytes if it has less than 128, 3 for less than 16384, etc.)

  • nil uses up 1 byte

  • Vector3ā€™s use up 13 bytes (4 bytes * 3 + 1 byte of overhead)

  • CFrames use up to 20 bytes

  • References to instances use up 6 bytes

  • booleans (true and false) use up 2 bytes

The exact maximum amount of data you are currently able to send at once is 908 bytes so for example

UnreliableRemoteEvent:Fire(string.rep("i",905)) --908 bytes payload

ā€¦will work whereas

UnreliableRemoteEvent:Fire(string.rep("i",906)) --909 bytes payload

will cause an error due to being 1 byte too long.

14 Likes

So, for instance, I have a k9 that uses 7 remote events to work if I use this way with it optimize can be less taxing on the set and received side or is that something completely different? Iā€™m trying to lower my sent and received ms in my game sorry pretty new to scripting but trying to learn.

Well I donā€™t understand this much.

What is unreliably and unordered? What does it mean to be reliable and ordered?
UREs are meant to be used for things that arenā€™t absolutely necessary for the game to function?
And they will be discarded to prevent affecting performance?

What possibilities does this open up? What are more examples in which I would use this?

1 Like

If you get a remote event and send to the client 100 messages such as:

Message 1, Message 2, Message 3, ... Message 100

By using the default RemoteEvent instance it will send all of them in order and make sure that all of them arrive at the client in that same order. If one of them does not arrive it will actually send that missing one again until it arrives, delaying the others.

If you use Unreliable it wont check if it arrived at the client, and will not care about the order so the client might see:

Message 51, Message 31, Message 99, ..., Message 3

And also the client might lose a message or more. But its fine since you should use it only to send things you dont care if you lose it, such as visual effects, sound effects.
Thats why its called unreliable.

4 Likes

Iā€™m confused, why would you use this? Can someone give me some use cases?

RemoteEvent
Takes longer to arrive, guarantees your events to all arrive in order they were sent in

UnreliableRemoteEvent
Arrives faster, does not guarantee correct order and might get lost on the way

this is amazingggg!!! glad to see this be added

Hmm, this looks like itā€™ll be quite handy. Iā€™m not sure where I may or may not benefit from it, but Iā€™ll keep it in mind.

Some feedback:

  • As someone else pointed out, this instanceā€™s name may confuse newer developers. I would think UnorderedRemoteEvent would be better. If the current name is here to stay, then please make the differences between the two classes crystal clear in the documentation.
  • RemoteEvents and UnreliableRemoteEvents have the same damn icon. Iā€™m NOT a fan of this, for impending confusion approaches.
    image
7 Likes

This is going to be useful for optimization purposes. Good for client replication.

1 Like

Obligatory Kampfkarren Unreliable remote events article post. Super concise explanation.

4 Likes

This seems great but the name is kind of funny lol

2 Likes

I need more details, i donā€™t understand why it should be used over normal remote events. if itā€™s because of performance, can someone explain why this is better performance wise.

ā€œUnreliableRemoteEvents are useful for implementing ephemeral events. Examples include particle effects, sound bites, and events that impact visuals but are not crucial for game state.ā€

Can you explain why itā€™s useful for effects, and why remote events fall short of unreliable remote events in this use case.

what does this mean?

does this mean that the signal the event sends wont get received. if so, why should i use this over reliable events that will receive the signal in this circumstance.

i can understand that if unreliable remotes are used for things like effects, then those not being sent wont be the end of the world. but it will just not execute the effect which will have a negative effect on gameplay.

will there be a post later, to explain how to use these properly. from the general reaction to this post i can tell this is probably a worthwhile addition to the toolkits of devs, but i donā€™t understand why.

it seems like a remoteevent thatā€™s been made worse on purpose, why?

1 Like

oh wow, this really helped clear things up for me. and Iā€™m excited for this

1 Like

i back this, if you can change the name, you can change the icon. thatā€™s like keeping bindable and remote events icons the same

1 Like

Glad to see this long awaited feature finally come into play.