Tools

Every Tangy download includes the runtime, editor, asset converters, and game compiler — ready to use for making games. Export for Linux, Windows, or the 3DS family; macOS packaging is planned.

tangy — runtime

Run and play your game while you build it. Point it at your main.lua; it opens a resizable window at the logical 400×240 size and runs at 60 Hz. On desktop you play with the keyboard (see the Lua API). The same project can later be packed for the 3DS family. Escape or closing the window quits.

Linux

./tangy examples/hello/main.lua
# or from inside a game folder:
./tangy main.lua

Windows

tangy.exe examples\hello\main.lua
REM or from inside a game folder:
tangy.exe main.lua

On Windows, keep SDL2.dll next to tangy.exe. Packaged 3DS games use the console buttons instead of a keyboard.

tangy_editor — scene editor

Build tile levels visually: new/load/save scenes, four layers, palette and tileset loading, undo/redo, and a selection clipboard. Run it from your game folder so asset paths resolve.

Linux

cd examples/platformer
../../tangy_editor

Windows

cd examples\platformer
..\..\tangy_editor.exe

tngpal — palette converter

Turn a PNG palette image into a Tangy palette file your game can load with palette:load (up to 256 colours).

Linux

./tngpal input.png output.tngpal

Windows

tngpal.exe input.png output.tngpal

tngspr — sprite converter

Convert indexed-colour Aseprite art into Tangy sprites (max 64×64). Optional --trim drops blank columns. Load them in Lua with sprite:load.

Linux

./tngspr [--trim] input.aseprite output.tngspr

Windows

tngspr.exe [--trim] input.aseprite output.tngspr

tngtiles — tileset converter

Convert an indexed Aseprite sheet (canvas size multiples of 16) into a Tangy tileset on a 16×16 grid for tilemaps and the scene editor.

Linux

./tngtiles input.aseprite output.tngtiles

Windows

tngtiles.exe input.aseprite output.tngtiles

tngogg — audio converter

Convert music and sound effects to OGG for sound:play (uses ffmpeg on your PATH). Keep the .ogg files next to your Lua scripts.

Linux

./tngogg input.wav output.ogg

Windows

tngogg.exe input.wav output.ogg

On Windows, install ffmpeg and ensure ffmpeg.exe is available in a terminal before running tngogg.exe.

tngc — game compiler

Package your finished game for others to play. It picks up your game folder, skips editor leftovers, and writes a single playable output. Desktop packaging needs a Tangy source tree and a matching build directory (same limitation on Linux and Windows). macOS export is planned.

Linux — desktop game

./tngc examples/hello -o hello_game --tangy-root . --tangy-build build

Windows — desktop .exe

tngc.exe examples\hello -o hello_game.exe --target windows --tangy-root . --tangy-build build

On Windows, after building Tangy with CMake, pass the Windows build directory (often build). From Linux you can cross-pack a Windows game with --target windows and --tangy-build build-windows after scripts/build-windows-mingw.sh.

Nintendo 3DS family .3dsx

# Linux
./tngc examples/platformer -o platformer.3dsx --target n3ds --tangy-root .

# Windows (Docker required for the 3DS toolchain)
tngc.exe examples\platformer -o platformer.3dsx --target n3ds --tangy-root .

What you’ll work with

You don’t need to know how Tangy’s files are stored under the hood — only which tools produce what your Lua scripts load:

You make… With… Then in Lua…
A colour palette tngpal palette:load(...)
Sprites tngspr from Aseprite sprite:load(...)
Tilesets tngtiles from Aseprite Used by scenes / the editor
Levels / scenes tangy_editor scene:load(...)
Music & SFX tngogg sound:play(...)
A shippable game tngc