🧸 tiny

Build, Tweak, and Play.

Core Features

Designed for Playful Creation

A tiny virtual console for building pixel art games. Hot-reload, 256 colors, Lua scripting, and export to desktop or web.

bolt

Hot Reload

See your changes instantly. Edit your Lua scripts and watch the game update in real-time without restarting.

code

Lua Scripting

Write game logic in Lua — a simple, powerful language perfect for beginners and veterans alike.

public

Desktop & Web

Build once, run everywhere. Export your games for JVM desktop or WebGL browser — from a single codebase.

game.lua
function _draw()
    -- clear the screen
    gfx.cls(1)

    -- draw shapes
    shape.rectf(10, 10, 50, 30, 8)
    shape.circlef(128, 128, 24, 12)

    -- print text
    print("hello tiny!", 80, 200, 7)
end
function _init()
    player = { x = 128, y = 128 }
end

function _update()
    if ctrl.pressing(keys.right) then
        player.x = player.x + 2
    end
end

function _draw()
    gfx.cls(1)
    spr.draw(0, player.x, player.y)
end
function _update()
    if ctrl.pressed(keys.space) then
        sfx.play(0)
    end
end

function _draw()
    gfx.cls(2)
    print("press space!", 80, 120, 7)
end

Lua Scripting

Use Lua to bring your worlds to life. A lightweight, easy-to-learn language with a clean API for sprites, input, maps, and sound. Writing game logic feels like sketching on paper.

Hot Reload Everything

Edit your scripts while the game is running. Change colors, tweak physics, rewrite behaviors — your game state stays intact, so you never lose your flow.

enemy.lua
function _update()
    -- tweak speed while playing!
    enemy.speed = 3

    if enemy.x < player.x then
        enemy.x = enemy.x + enemy.speed
    end
end

function _draw()
    spr.draw(1, enemy.x, enemy.y)
end
refresh Live Reloading

Ready to Play?

Start building your retro-style game right now, directly in your browser. No installation required.