In-Game Logging

Connecting a Roblox game to the dashboard.

A set of Lua scripts run inside your Roblox game and talk to the dashboard: logging joins, leaves and chat, screening new accounts, and running lockdowns and events triggered from the moderator panel.

Setup

  1. Generate an ingest key. Settings → Game Join Logs → Generate Key. It is shown exactly once — copy it now.
  2. Copy the three constants the same panel shows you: the dashboard URL, your guild ID, and the key.
  3. Paste them into the top of each script you use, replacing the placeholders.
  4. Install the scripts in your admin system's script runner.

The dashboard URL must be reachable from the public internet. These scripts run on Roblox's servers, not on your machine — localhost and private network addresses will never work. If your dashboard is only reachable over a private network, in-game logging cannot reach it.

The ingest key is a credential. Anyone holding it can post fake join, leave and chat events into your logs. Never commit it to a repository, paste it in a public channel, or leave it in a screenshot. If it leaks, regenerate it and update your scripts.

The scripts

ScriptWhat it does
join-loggerLogs joins and screens account age. Under 7 days is logged and kicked automatically; under 30 days is flagged for review; older is cleared. Both thresholds are constants at the top of the file.
leave-loggerLogs departures.
chat-loggerLogs in-game chat. Messages are truncated to 500 characters.
lockdown-controllerRuns the lockdown protocols — sounds, lighting, banners and PA announcements. Each protocol is fetched whole from the dashboard, tracks and holds included, and re-read about once a minute. Also sends the session heartbeat.
event-controllerRuns pre-made site events. Sequences are fetched from the dashboard at boot rather than living in the file.
system-controllerRuns System Events — typed announcements and scripted sequences, from the toolbox or !sys <preset> in game. Both arrive composed from the dashboard. Separate from the event controller, so a typed announcement can talk over a running event. !sys stop, or Stop in the toolbox, cuts a sequence short and resets the lighting.

The join logger kicks people automatically. Accounts under 7 days old are removed as they join, with no staff confirmation. This is an anti-raid measure and it will catch genuine new players. Raise or lower MINIMUM_ACCOUNT_AGE to suit your community, or set it to 0 to log without kicking.

Who can trigger what

  • Lockdownsevents.protocols, Manage Server, or staff-level access. See Lockdown Protocols.
  • Eventsevents.trigger, Manage Server, or staff-level access. See Site Events.
  • Renaming eitherevents.designations, the Head Event Host's grant.

The in-game chat triggers do not read your permits. Both controllers carry a hardcoded allowlist of Roblox usernames, shipped with the original author's accounts. Replace it before you install them.

Commands travel as action names, never as raw command strings. Each queued command is drained exactly once, so multiple game servers polling at the same time cannot double-run one. Anything not collected within 60 seconds expires.

Known issues

The tram controller's dashboard half does not exist. The script polls an endpoint that was never built, so it cannot be driven from the dashboard. Its in-game chat trigger and automatic shuttle still work.

The event controller ships with debug chat on. It announces its own state in chat until you set DEBUG_CHAT = false.

Paste from game-scripts/paste/, not from game-scripts/. Every addon must stay under 16 KiB — Roblox's script box truncates a longer paste silently, and the symptom is a script that loads but never polls. The files in game-scripts/ are the documented sources and run about a third comments; npm run paste writes comment-free copies of them alongside, which is where the headroom comes from. Edit the sources, rebuild, paste the copy.

SCREEN TOO NARROW

This device is below Vortigern's supported size.

Vortigern is built for phones, tablets and computers. Your screen reports under 300px of width, so panels and controls will overflow and some pages will be hard to use.

Rotate the device or open Vortigern on a larger screen for the full interface.