Speed ASMR Keyboard EscapeDocumentation ← Portfolio

#Service Convention

Every server service (ServerScriptService/Server/Services/*) and client controller (StarterPlayer/StarterPlayerScripts/Client/**) follows the same shape:

local M = {}
M.Priority = 50          -- lower runs earlier
function M:Init() end     -- must not call other services
function M:Start() end     -- may call other services
return M

Bootstrap (server) and ClientBootstrap (client) auto-discover every such module, sort by Priority, run every Init() then every Start(), each wrapped in pcall with a clear error log. Nothing registers itself manually into a bootstrap — dropping a new module in the right folder is enough for it to be picked up on the next boot.

Not everything needs to be a service, though: single-purpose animated hazards (rising traps, closing walls) are plain Workspace Scripts that don't follow this convention at all — see Boss & Hazard System Internals.