Reliability types for RemoteEvent

Recently spoke with @zeuxcg on this! They have plans to expose better control over remote event delivery including reliability and priority controls. No designs or ETA on this yet sadly.

@Kampfkarren’s blog post makes an excellent point for an use-case to send events on an unreliable channel, this is especially useful with degraded network conditions.

38 Likes

Reliability types are a must for more technically complex games and systems to shine on Roblox. Custom character replication systems, low-latency competitive games where milliseconds count and more are all things that I would love to create, and I have plans to do so, but these are hindered by the forced reliability of events.

This is needed now more than ever. With Roblox reaching new technical feats year after year there’s only so much we can do in certain areas until we’re limited, and this is one of those things where we’re limited currently.

21 Likes

Thanks for bumping this and for the feedback so far. We’ve shared this thread with the engine team. They are looking into addressing this need, and we will follow up when there’s more to share on our end.

111 Likes

Thank you a lot for the update! I hope we see it soon - I think unreliable events are necessary to have high quality fps games on Roblox, as you need to update where the player is looking constantly. If Roblox wants us to target those with worse computers and worse connections, then we need the tools to do so- reliability types are essential in letting, e.g. wireless connections, play our games.

I’m actually really excited to see this- it’s really important that us developers make our games playable for those on subpar connections. I wonder just how many players are locked out of games because of this…

10 Likes

This is great news ! I hope this can be prioritized by the team !

4 Likes

Hope this gets made soon
it heavily effects me when I try playing with subpar connections sometimes as ping gets too high to play anything locking me out of my favorite experiences

3 Likes

I think this would also be fun to make a remote event that can be fired every frame, since if you set its reliability type to unreliable, you can do stuff like replicate/sync head rotations and whatnot (since currently you can still do it, it would just lag server because remote events are set to ordered or reliable)

3 Likes

Why are you doing this for head rotations, there is no need for RemoteEvents for stuff like this?

1 Like

Remote events are needed to replicate Motor6D properties that handle stuff such as head rotations.

3 Likes

I don’t think Client can replicate Motor6D animation to server without remotes even if the character has network ownership of their character. Doing the head rotation on server could work if a regular script is inside the character, still prefer doing it on RemoteEvents (because i am bad developer)

So yeah reliablitity types would be useful to have l o l

5 Likes

If you want to replicate head rotations for a better aesthetic experience, the best solutions all require RemoteEvents. The simple and lazy way is to have the server adjust the head for other clients with information it receives from a character turning their head. The optimal solution for the smoothest rotations is using a RemoteEvent to pass information between clients so each client is responsible for the head rotation of other characters, the server’s only involvement being delivering information.

Animations will natively replicate but you aren’t using animations for head rotations so not applicable.

6 Likes

I’m as excited as ffrostfall that this is being shown to the Roblox engine team. I can’t express how much we need this for our games.

Reason why I’m so excited about this is that I’m developing a CO-OP game that really needs server authoritative characters to eradicate exploit concerns, don’t forget about network entity interpolation/replication, it is my biggest wish to achieve this as it is impossible to have over 100 entities who attack players & specific entities without a Received Network and ping overload.

(Yes, I know that people have ran more than 100 entities before, but they rely on Roblox’s replication and don’t seem to do expensive calculations, such as having a “schedule” on what they do every frame, for example if they need to fire, seek cover, or find a healer when they’re low in health.)

In conclusion, this can absolutely push the limits of FPS games.

6 Likes

I cant wait!
im serious please :pray:

1 Like

This is something you would put on the client. Sure, it would be easier to do this on the server if you want this to exist for everyone, but it is as equally possible to simulate this event on each client by synchronization.

You wouldn’t as the brick would be directly controlled by another player which would move unpredictably, this is only to visually show the huge impact packetloss would and does have for moving custom characters as they suffer from the same exact same issues.

The spinning brick is only a visualization of the impact of packetloss, not an example of something that could be done without UDP.

2 Likes

Doesnt RemoteEvents use TCP? And physics networking UDP?

1 Like

All communication in roblox uses UDP, though effectively all ways the developers have access to is forced to be ordered & reliable (so effectively TCP) including remote events and any property changes.

As far as what developers have access to only physics and native character movement(excluding animations) replicate via an unreliable unordered channel, both of which developers only have very limited ways to interfere with.

2 Likes

I would really love the implementation of this for a system that handles replicating movedirection to the server. I believe that allowing remote events to be switched to UDP would make this system way more efficient than it currently is

Not only that, but allowing HttpService to be switched to UDP (if thats not already possible) would open doors to super cool stuff like efficient cross-server livestreaming.

1 Like

HTTP isn’t meant for non-reliable communication, it’s meant for “hyper-text transfer” through reliable means, AKA TCP. What you are looking for, is websocket support.

3 Likes

I can’t wait for this at all
This would allow for more complex custom systems to be made on roblox (death to humanoids) and remove the requirement for a complex anticheat to put a bandage on legacy systems

2 Likes