World Executor · Roblox VM

The Editor

The Monaco-based script editor: tabs, the file explorer, the console pane, and the toolbar that runs your code.

What is on screen

The editor is the same one VS Code is built on, so autocomplete, multi-cursor, find-and-replace and the keyboard shortcuts all behave the way you expect them to.

File explorer

Left rail. Shows the workspace scripts/ folder. Double-click a file to open it in a new tab.

Tabs

Across the top. Each tab is an independent script — you can keep a hub, a scratch pad and a test harness open at once.

Editor pane

The code itself, with Luau syntax highlighting, autocomplete and inline error markers.

Console pane

Below the editor. Roblox output, your own print and warn calls, and execution errors with a traceback.

Toolbar

Execute, Save and Attach. Attach turns green once the client is injected.

Executing

Execute sends the current tab to the attached client and runs it. Nothing is saved to disk first, so you can iterate on a script without leaving files behind.

  • Execution is asynchronous — a script that yields does not lock the editor.
  • Running the same tab twice runs it twice. If your script connects events, connect guards or you will stack duplicate handlers.
  • Errors surface in the console pane with a traceback. debug.traceback() inside your own pcall handlers gives you the rest.
  • You can run as many scripts at once as you like; they share one global environment.
Guarding re-runs
-- A connect guard, so re-running a tab does not stack handlers.
if _G.__mytool_connection then
    _G.__mytool_connection:Disconnect()
end

_G.__mytool_connection = game:GetService("RunService").RenderStepped:Connect(function(dt)
    -- per-frame work
end)

Use getgenv() for shared state

Anything you park on getgenv() survives between executions and is visible to every script you run, which makes it the natural place for a "already loaded" flag or a shared config table.

Shortcuts worth knowing

ShortcutDoes
Ctrl + SpaceForce the autocomplete list open.
Ctrl + FFind in the current tab. Ctrl + H for replace.
Alt + ClickAdd another cursor. Ctrl + Alt + Up/Down adds one on the line above or below.
Ctrl + /Comment or uncomment the selection.
Ctrl + DSelect the next occurrence of the current word.
Ctrl + SSave the tab into the workspace scripts/ folder.
Alt + Shift + FReformat the document.

The console pane

The pane under the editor mirrors Roblox's own output plus anything your scripts print. It is not the same thing as the rconsole library — that opens a separate OS window your script owns, which is useful when you want output that survives the editor being closed or you want to prompt for input.

A separate console window
rconsolecreate()
rconsolesettitle("my tool")
rconsoleprint("waiting for input...\n")

local answer = rconsoleinput()
rconsoleprint("you typed: " .. answer .. "\n")
rconsoledestroy()

The Console chapter documents the whole library, including the coloured rconsoleinfo / rconsolewarn / rconsoleerr variants.