RemoteEvents and RemoteFunctions are definitely awesome, but I’ve recently found one small problem with them: They are not reliable and are not ordered. (I have not tested this for RemoteFunctions)
In many cases a game needs unordered, unreliable data, but not always. In my case, I expected certain commands to arrive before others, and certain objects to arrive when they did not. I had to write my own ordering and reliability system to make it work.
I’d like to see this added with two properties for each remote:
Remote*.Reliable = false
Remote*.Ordered = false
I’ll set up a repro place tomorrow. The code I was encountering this with is long and complicated.
While I don’t know if this is a bug or intentional, I still feel that having control over how a remote works is important. If this is a bug then it’d be nice to see expanded control added in with the fix.
not reliable? but remote functions HAVE to be reliable, or else the return value will be borked, and we can’t do with a borked return value
as for remote events, I suspected them to maybe be unreliable, if it weren’t that Roblox uses TCP for them(Memory says someone told me that, though it’s not 100%) and not UDP, and TCP has fail checks
as far as ordered, it’s fairly rare that my game needs them ordered, when I do, I can always compress all the data into a table, and send it that way, in a much more logial way, and saves on calls.
As I said, I haven’t tested this. It is possible that the return value would be nil or that it’d simply never return and leave the script waiting forever for the client to respond. Both are unlikely though. I experienced my problems with RemoteEvents and thought I’d share what would be a helpful addition.
if ROBLOX means to use TCP for them then this is a bug. I’ve definitely experienced both the loss of data and data getting out of order, so either there’s a bug or they’re unreliable by nature.
That’s definitely useful in some cases but not in others. In the rare cases where you need ordered, reliable data it’d be a lot easier and nicer if you could use the systems ROBLOX already has in place. Perhaps writing our own systems for this isn’t so much a problem for us, but for new developers I can imagine it being quite the task.
I don’t mean this as a bug report. I’ve solved my problem, I get how they work, and I don’t see anything wrong with it. We can make everything we need out of it. This is the type of feature that makes developing easier, especially for new developers. If I’m able to send messages over the network of some sort, I’d expect to have control over their reliability and if they’re ordered.
And before you ask, yes I’ve had people who don’t understand remotes use this fine. I’ve documented it quite well for a reason. I will be adding a way to do this on existing remote instances as well.