DevSuiteDevSuite

Custom Events

Send any gameplay event with DevSuite.track. Event names are free-form strings, and properties can be any JSON-serializable table.

RoundManager.server.lualua
DevSuite.track("RoundCompleted", {
    map = "Desert",
    duration = 184,
    gameMode = "Duos"
})

Naming conventions

We recommend PascalCase, verb-first event names — TutorialStarted, ShopOpened, PurchaseCompleted — so the Events explorer stays easy to scan as your event catalog grows.

Attaching a player

ShopService.server.lualua
DevSuite.track("ShopOpened", {
    source = "hud_button",
}, player)

Passing a Player instance links the event to that player's profile and the server session it happened in — both are otherwise inferred automatically server-side.

Tracking from a LocalScript

UI and other client-only interactions can call track directly from the client SDK — no player argument needed, since the server already knows which client sent it.

ShopUI.client.lualua
local DevSuite = require(game:GetService("ReplicatedStorage").DevSuiteClient)

DevSuite.track("ShopOpened", {
    source = "hud_button",
})

Client events are forwarded to the server SDK over a RemoteEvent and merged into the same queue as server-tracked events — they show up in the Events explorer tagged origin: "client". Prefer tracking server-side when you can; use the client SDK for things that genuinely only happen on the client.