World Executor · Roblox VM

Drawing

Create persistent visual overlays rendered above the game viewport with the Drawing library, including lines, shapes, text, and images.

Overview

Shapes rendered above the game viewport, outside the instance tree entirely. Nothing in PlayerGui to find, no ScreenGui for a game to walk — which is why every overlay ends up built on this.

Create an object with Drawing.new, set its properties, and move it. The Guide: Building an ESP chapter turns that into a working overlay.

One object, start to finish
local box = Drawing.new("Square")
box.Color = Color3.fromRGB(80, 160, 255)
box.Thickness = 1
box.Filled = false
box.Position = Vector2.new(100, 100)
box.Size = Vector2.new(60, 120)
box.Visible = true

-- Objects belong to the renderer, not to Luau. Remove them yourself.
box:Remove()

Never call Drawing.new in a render loop

It allocates a new object every frame and frees none of them. Create your objects once, then move them. cleardrawcache() is the blunt recovery when you have lost track.

Constructor

Shared properties

Every Drawing type carries these. ZIndex orders overlapping objects; __OBJECT_EXISTS tells you whether the object is still live after a Remove.

Line

Circle

Square

Triangle

Quad

Text

Image

Property helpers

Generic accessors for when you are handling objects without knowing their type — useful for a settings system that drives an overlay from a config table.

Fonts