When replicating large amounts of data frequently, routing each component type through its own typed remote can significantly reduce packet overhead compared to sending everything through a single generic event. This guide shows how to do that using Blink, a typed networking library for Roblox.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/NeonD00m/feces/llms.txt
Use this file to discover all available pages before exploring further.
The same pattern applies to any serialized networking library, not just Blink. The key idea is
a lookup table that maps component names to dedicated remotes, with a generic fallback for any
component that doesn’t have its own remote.
Blink Event Definitions
Define your network events in a.blink file. Create a dedicated typed event for each high-frequency component and a generic component event as a catch-all for everything else.
The generic
component event handles any component that does not have its own dedicated
remote, so you can start with just the generic event and add optimized remotes only for the
components that are sent most frequently or carry the largest payloads.Server Side
The fire() helper
fire() resolves whether a component has its own dedicated Blink remote. If a component{Name} event exists in the network module it uses that; otherwise it falls back to the generic component event, passing the component id as the first argument so the client can route it correctly.
The replicate() function
Client Side
The receive() function
On the client, iterate over each Blink event and apply incoming data to the local feces instance. The generic component event carries a component id so apply knows which component to update; dedicated remotes use the component id from the Components lookup table.
Pattern Summary
Dedicated remotes
One Blink event per high-frequency component. The server fires typed data; the client iterates the
event and applies directly. No component id in the payload — the remote name implies the type.
Generic fallback
The
component event handles everything without a dedicated remote. The component id is sent as
the first argument so the client can route it to the correct component on apply.receive() in your client-side heartbeat or at the start of your frame, before your ECS systems run, so that replicated state is available immediately for that frame’s queries.