Reliability types for RemoteEvent

I’m bringing this back up, since I think this is one of the things that makes it impossible to make your game’s code 100% secure; right now, network ownership and physics simulation in general are finicky and easily exploitable. A client can fly around, phase through walls, fling other players off the map, and there’s not much that can be done to stop it (other than anti-cheat systems that may have false positives). With unreliable signals, custom humanoids and physics systems could be implemented to make more secure games.

Of course, we still don’t have much control over the physics system either, so even with this we would (with the current APIs) have to rely on the internal replicated physics system and the unsecured nature of network ownership, but having a simple property to make remotes unreliable would be the first step in making custom/secure characters easier.

37 Likes

This would be an amazing feature and I’d really appreciate them adding it. I have a lot of dream games I want to do that rely on combat built around timing , but they’re basically impossible without this

More details here on the issues with remotes right now:

https://devforum.roblox.com/t/serious-issue-with-remotes-on-roblox/755499

24 Likes

I personally feel that this is more than just something that would be nice to have. It’s simply a necessity for the future of the platform– specific fast-paced gameplay cannot function with the current delay, and this feature request is a healthy step in the right direction.

It’s invaluable in a multitude of different use cases.

Please, please, please, look into this ASAP.

16 Likes

Bringing this back up because unreliable packets are simply a necessity to develop smooth moving characters especially in pvp settings.
Currently everytime you drop a packet roblox will essentially halt all network traffic for ~half a second until the dropped packet gets resent from the server.
To illustrate how bad the problem actually is I created a visual example what it currently looks like when your drop a packet.

The server is moving the brick at 60 HZ, at 0% packetloss, pretty smooth:

Now I introduced 1% packetloss via a network emulator which is still considered perfectly normal depending on where you live and wouldn’t cause any problems even in most fast paced online FPS-games.
You can visually see everytime a packet gets dropped and the ping goes all over the place:

This is what 5% packetloss looks like which should still be managable with unreliable replication, notice how the ping goes back to normal as soon as the network emulator stops dropping packets near the end of the video:

There is only so much interpolation can achieve if you have to work with constant 500ms ping spikes.

57 Likes

This should be relevant as I did some more testing on the effects packetloss currently has on remote events/remote functions:
https://devforum.roblox.com/t/some-notes-on-the-reasons-for-pingspikes-and-how-roblox-handles-packetloss/1151378

Furthermore physics replication seems to be more or less unaffected by packetloss based on my testing.
Roblox’s own character replication works kind of works even with unrealistically high packetloss scenarios as in the positioning of characters will unaffected by the packetloss induced high ping while character animations will wait in the queue as they rely on property updates instead of physics to replicate resulting in the characters playing the wrong animations for what they are doing.

14 Likes

I wrote a blog post detailing a very simple example on why this feature is critically necessary:

47 Likes

Gotta vouch pretty heavily for this idea. Networking on Roblox as-is has issues, but this is the biggest one for certain. @Kampfkarren’s blog post above has an excellent use case that can be applied to a broad developer need.

12 Likes

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