Drawing
Create persistent visual overlays rendered above the game viewport with the Drawing library, including lines, shapes, text, and images.
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.
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.
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.