UshFramework

Make 2D Games, Simply

UshFramework lets you create 2D games with Lua and SDL2. It’s fast, lightweight, and perfect for beginners and pros alike.

Download Now

Why UshFramework?

Easy to Use

Write simple Lua code in a single main.lua file. No complicated setup, just start creating.

Packed with Features

Graphics, sound, input, animations, and scenes—all in a lightweight package for your 2D games.

Smooth Performance

Powered by SDL2, UshFramework ensures fast rendering and smooth gameplay.

Start Creating in Minutes

Try this simple example: move a square with arrows or WASD and press space for a sound.

local x, y = 400, 300
local speed = 200

function init()
    load_sound("click", "click.wav")
    set_volume("sound", 75)
    log("Game started")
end

function update(dt)
    if is_pressed("space") then
        play_sound("click")
    end
    if is_down("left") or is_down("a") then
        x = x - speed * dt
    end
    if is_down("right") or is_down("d") then
        x = x + speed * dt
    end
    x = math.max(0, math.min(x, width() - 50))
end

function draw()
    clear({r=20, g=20, b=40})
    rect(x, y, 50, 50, {r=255, g=100, b=100})
    text("Move with arrows or A/D, space for sound", 10, 10, 16, white)
    text("FPS: " .. get_fps(), 10, height() - 20, 16, yellow)
end
    

Steps to Start:

  1. Download ush-installer.exe.
  2. Create a main.lua file with the code above.
  3. Add click.wav to your project folder.
  4. Run ush run in your terminal.

Read the Full Docs

What’s New?

UshFramework v0.2.0

Released: May 26, 2025

Version 0.2.0 brings a big upgrade with a switch to SDL2, plus new features to make game development even easier.

Big Updates

New Features

Fixes & Improvements

Note

Older Lua scripts (v0.1.x) need updates for SDL2 APIs. The Breakout game example is updated for v0.2.0.

Download v0.2.0