Skip to main content

1.2.22 — Pulse.Remote helper

What changed

New helper: Pulse.Remote

A framework-level remote wrapper so every project gets clean, boilerplate-free remote access without rolling its own caching logic.

Path-based resolution — remotes are identified by a slash-separated path under ReplicatedStorage:

Pulse.Remote.fire("Remotes/Building", "Place", cf)
Pulse.Remote.fire("CombatRemotes/Server/Attack", weapon, "Hit", char)
local inv = Pulse.Remote.invoke("Remotes/GetInventory")

Lazy caching — the path is resolved via WaitForChild on the first call and cached forever after. Every subsequent call in a Heartbeat loop is an O(1) table lookup, no yield.

Pre-bound functions — the preferred pattern for a game's remotes.lua:

-- remotes.lua
func.Remote_Build = Pulse.Remote.bind("Remotes/Building")
func.Remote_Storage = Pulse.Remote.bind("Remotes/Storage")
func.Remote_Stats = Pulse.Remote.bindi("Remotes/GetStats")

-- any component
func.Remote_Build("Place", cf)

Prefetch — warm the cache in the background so Heartbeat handlers never see first-call latency:

task.spawn(function()
Pulse.Remote.prefetch("Remotes/Building", "Remotes/Storage")
end)

Full API: fire, invoke, connect, bind, bindi, wrap, prefetch. See the Pulse.Remote docs.