Services and their methods✎
Get Service, the two Service Function nodes, and the catalogue they read.
Verified
A Roblox script reaches the engine through services: Players, RunService, TweenService. Get Service hands you one, and every node that asks for the same service shares a single local at the top of the file — which is how a hand-written module does it.
Calling a method on one is the other half. Service Function does something — Debris:AddItem, TweenService:Create — and sits in the execution chain. Service Function (Value) asks something — RunService:IsServer, Players:GetPlayers — and has no execution pins, so it wires straight into the Branch or the loop that wanted the answer.
local RunService = game:GetService("RunService") if RunService:IsServer() then print("On the server") else print("On the client") end
Asking a service what it can do
Drag a wire off a service and drop it on empty canvas. The menu opens on that service's own methods, under its name — GetPlayers, GetPlayerByUserId, BanAsync — and picking one places the node with the wire already landed on it. Everything else the graph could do with an Instance is still underneath, where it always is.
That wire lands on the node's first pin, which is the service the call is made on. Left unwired it is nothing at all: the service is reached and hoisted the way Get Service reaches it, and the node draws as the call. Wired, the value on it is what the method runs against — which is what makes the gesture honest rather than a shortcut that throws your wire away.
Picking the call
Call in the Inspector opens the picker — every method of every service, grouped by service, searchable, with the signature under the highlighted row. The palette knows them too: type IsServer into the node menu and the entry is there, and picking it places the node already set to that call.
The service itself is in there by name as well: typing ReplicatedStorage offers Get Service with the name filled in, and any other class name — Part, ProximityPrompt — offers New Instance the same way.
Arguments arrive from the method's own signature: named, typed, and marked optional where the engine documents a default. An optional argument nothing set is not passed at all rather than passed as nil, which is the difference between a call the engine accepts and one it rejects.
- An enum argument is typed as its member name —
E,Begin— and written out in full asEnum.KeyCode.E. Wire one instead and the wire wins. - A method that returns nothing has no Result pin, because a pin that can only be nil is one somebody will try to use.
- A method that yields says so in the Inspector. Those are never offered as the value node: a call that stops the thread belongs in the chain.
Where the list comes from
The catalogue is built from Roblox's own documentation repository and shipped with Roswaal, so nothing here talks to the network. It holds what a game script may call: methods behind a security context are not offered, and neither are deprecated ones. Methods a service inherits are included down to Instance, which is where they stop — Find First Child and Destroy have nodes of their own.
Info
| When | Node |
|---|---|
| A method on a service, in the chain | Service Function |
| A method on a service, as a value | Service Function (Value) |
| A method on anything else — a part, a Humanoid, a module's table | Call Method |
| The service itself, to wire somewhere | Get Service |
Call Method is the general one and is not going anywhere: it takes the object as a wire, so it reaches anything a graph can hold. Service Function is worth the second node because the signature is known — the arguments are named and typed rather than a row of any you count yourself.
Last reviewed 16 September 2026 by @neopolitans