Rendering Functions

These functions handle all visual output: clearing the screen, drawing sprites, tilemaps, and geometric shapes.

clear

clear(colorIndex)

Clear the entire screen with a palette color.

Parameters:

colorIndex (number) – Palette index used as the background color.

Call this once at the start of _draw() to reset the screen before drawing the new frame.

Invalid palette indexes raise an error in the output panel.

clear(0)   -- black background
clear(12)  -- light blue background

sprite

sprite(index, x, y, width, height)

Draw one sprite or a rectangular block of sprites from the sprite sheet.

Parameters:
  • index (number) – Sprite index in the sprite sheet (0–255).

  • x (number) – Destination x position in pixels.

  • y (number) – Destination y position in pixels.

  • width (number) – Width in sprite units (1 unit = 8 pixels).

  • height (number) – Height in sprite units (1 unit = 8 pixels).

Use width = 1 and height = 1 for a single 8 x 8 sprite. Larger values draw a block of tiles from the sprite sheet. Positions are floored to whole pixels by the renderer.

sprite(0, 10, 20, 1, 1)   -- single sprite at (10, 20)
sprite(32, 40, 50, 2, 1)  -- 2-sprite-wide strip starting at index 32
sprite(0, x, y, 1, 2)     -- 1 wide, 2 tall (8x16 px character)

map

map(x, y)

Draw the tilemap created in the map editor.

Parameters:
  • x (number) – X position in pixels where the map starts.

  • y (number) – Y position in pixels where the map starts.

This draws the entire map at once. The map uses the same 8 x 8 tile size as the sprite sheet.

Note

The Lua API does not currently expose tile reading or collision queries from the map. Gameplay collision must be handled using your own Lua tables. See Current Limitations for details.

map(0, 0)  -- draw the map at the world origin

camera

camera(x, y)

Set the camera offset. All subsequent drawing calls are shifted by this offset.

Parameters:
  • x (number) – Horizontal camera offset in pixels.

  • y (number) – Vertical camera offset in pixels.

A common pattern is to center the camera on the player inside _draw(). Call camera(0, 0) to reset the camera.

-- Center on the player (320x180 screen)
camera(player.x - 160, player.y - 90)

line

line(colorIndex, x0, y0, x1, y1)

Draw a straight line between two points.

Parameters:
  • colorIndex (number) – Palette color index.

  • x0 (number) – Start x position.

  • y0 (number) – Start y position.

  • x1 (number) – End x position.

  • y1 (number) – End y position.

line(8, 0, 0, 319, 179)  -- diagonal across the screen

rect

rect(colorIndex, x, y, width, height)

Draw an outlined (unfilled) rectangle.

Parameters:
  • colorIndex (number) – Palette color index.

  • x (number) – Top-left x position.

  • y (number) – Top-left y position.

  • width (number) – Width in pixels.

  • height (number) – Height in pixels.

rect(7, 20, 20, 32, 16)  -- white outline rectangle

fill_rect

fill_rect(colorIndex, x, y, width, height)

Draw a filled rectangle.

Parameters:
  • colorIndex (number) – Palette color index.

  • x (number) – Top-left x position.

  • y (number) – Top-left y position.

  • width (number) – Width in pixels.

  • height (number) – Height in pixels.

fill_rect(11, 0, 160, 320, 20)  -- green ground strip
fill_rect(8, 30, 40, 10, 10)    -- small red square