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:
my_game/
├── data/
│ └── main.lua
└── natiny
./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:
./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:
./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.