UnreliableRemoteEvent:FireAllClients() still attempts invocations on non-connected clients, contrary to docs

image

This error pops up in my game while using calls to UnreliableRemoteEvent:FireAllClients() to keep a certain constantly changing value calculated on the server side available for the client sided GUI. The docs claim FireAllClients() only fires for clients connected to that UnreliableRemoteEvent, but I get this error (Remote event invocation discarded) once/twice every single time right as I connect to the test server.

I’m pretty certain this happens because FireAllClients() attempts to invoke the event on all clients connected to the server in general (contrary to docs). To test this, I entirely commented out my onClientEvent code, and this message kept showing up, indicating an increasing number of discarded event invocations:

This seems like a docs issue causing inconsistency in the core game code. The exact description is:

Fires the OnClientEvent event for each client connected to the same UnreliableRemoteEvent.

As I demonstrated, “connected to the same UnreliableRemoteEvent” is not true, as the server still attempts the invocation even though the client did not connect yet or at all. This also occurs even if I never reference or wait for the event to appear in ReplicatedStorage.

Page URL: https://create.roblox.com/docs/reference/engine/classes/UnreliableRemoteEvent

3 Likes

I would argue this is an engine bug since the docs should be the be-all-end-all rules for the implementation to follow, and that I would prefer the alternative (not having to setup some check to run on each client to see if it’s connected yet). It is also possible this is causing inconsistencies in the core game code.

Hey yaadyam, I modified some of the language here and in RemoteEvent – I expect the changes to land this week. The goal was to stop overloading the word “connected” since :Connect is so critical in Roblox. The “did you forget to implement?” errors happen on both UREs and REs, but REs have a 256 item queue before you see it. UREs don’t have a queue since they’re ephemeral, so you see the errors immediately.