macOS
A Lua project needs no compiler. Download the Lua bundle - arm64 for
Apple silicon, amd64 for an Intel Mac - 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.
The binaries are not notarised, so the first launch is refused. Open it once from Finder with Control-click → Open, or clear the quarantine flag:
xattr -d com.apple.quarantine natiny
To ship, ship the folder. Nothing has to be installed alongside it: everything the executable uses is part of macOS.