Linux

A Lua project needs no compiler. Download the Lua bundle for linux-amd64, unzip it, and put your script where the executable looks for it:

TEXT
my_game/
├── data/
│   └── main.lua
└── natiny
Shell
./natiny

natiny mounts data/ from beside itself and runs main.lua out of it. Everything in that folder is then named from inside it, so resource.load("fonts/roboto.ttf") reads data/fonts/roboto.ttf. Relative paths inside the script mean the same thing whichever directory you started it from. Name another file to run that one instead:

Shell
./natiny data/experiment.lua

That mounts the folder holding the script - here data/ again - so the script reads its files exactly as main.lua would have.

The executable also packs a folder for release, which needs no script:

Shell
./natiny pack data

data/ becomes an index and a few .pack files that the game mounts in its place. See assets, packs and mods.

To ship, ship the folder. The executable needs X11, OpenGL and the C library, which any desktop Linux already has.

linux-arm64 and linux-i386 bundles exist too, and work the same way.