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:

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.

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:

Shell
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.