World External · Luau VM

Guide: Visuals From Luau

Driving the ESP from a script: per-target profiles, distance filtering, and reacting to what is happening in game.

The idea

The External draws the overlay itself — you do not draw shapes, you configure what it draws. That means a visual script is a loop that reads game state and writes world.settings, rather than one that pushes pixels.

The pay-off is that everything stays stream proof and outside the instance tree for free.

A baseline configuration

visuals.lua
-- Master switches.
world.settings.esp_enabled = true
world.settings.esp_showPlayers = true
world.settings.esp_streamProof = true
world.settings.esp_onlyRoblox = true

-- Start from nothing, then turn on what you want.
for _, profile in ipairs({ "enemy", "self", "npc" }) do
    local target = world.settings[profile]
    target.enabled = false
    target.showBox = false
    target.showNames = false
    target.showChams = false
    target.showDistance = false
    target.skeleton = false
end

local enemy = world.settings.enemy
enemy.enabled = true
enemy.showBox = true
enemy.showNames = true
enemy.showDistance = true
enemy.maxDistance = 500

Reacting to the game

Because the settings table is live, a loop can change the configuration as the situation changes — widening the range when nobody is close, dropping detail when a lot of people are.

Adapting to player count
task.spawn(function()
    while true do
        local dm = get_datamodel()
        local players = dm ~= 0 and find_first_child(dm, "Players") or 0

        if players ~= 0 then
            local count = #get_children(players)
            local enemy = world.settings.enemy

            if count > 20 then
                -- Busy server: boxes only, closer in.
                enemy.showNames = false
                enemy.skeleton = false
                enemy.maxDistance = 250
            else
                enemy.showNames = true
                enemy.skeleton = true
                enemy.maxDistance = 750
            end
        end

        wait(1)
    end
end)

One second is plenty

Configuration changes do not need to happen per frame — the overlay redraws itself. A slow loop here costs nothing and keeps the memory reads down.

Environment toggles

The same table carries the world-level modifications, which pair naturally with an ESP setup.

Cleaning up the view
world.settings.fullbright = true
world.settings.clearAtmosphere = true
world.settings.noGrass = true
world.settings.clearWater = true

world.settings.useTimeOfDay = true
world.settings.timeOfDay = 14        -- early afternoon

world.settings.unlockFps = true
world.settings.fpsTarget = 240

Every field is listed in the Configuration chapter.