A working Floptle package you can copy. Press Use this template, and you have a repository that is already submittable to the catalogue as-is.
What it does: select two or more nodes and it draws the line between them in the Scene view with the distance on it. Small on purpose — it is here to be replaced by whatever you are actually building, and to show the shape while you do.
- The id, in
package.ron. It iscom.example.rulerright now. An id is permanent — it is how the catalogue, a project and everypkg://reference name your package forever, and the first person to publish an id owns it. Reverse-domain style, at least two lowercase dot-parts.io.github.<you>.<thing>is fine if you have no domain. name,description,author,keywords— the listing is built from these, so they are worth a real minute each.descriptionis the one line somebody reads when deciding whether to install you.engine— the oldest version you have actually tried it on.- This README. Yours should say what your package does, not what a template does.
The honest test is from a different project to the one you wrote it in — that is what catches a package that only works because of something sitting in your own project.
Window ⏵ 📦 Packages ⏵ ✚ Add ⏵ 🔗 Link folder, pick this folder, and it is read in place: edits show up on ⟲ Reload all without copying anything.
git tag v1.0.0
git push origin v1.0.0
Then check it at fopull.com/packages/check
— paste the repository and the tag, and it tells you exactly what the editor will
make of your package.ron before anybody installs it. When it passes, submit at
fopull.com/packages/create, which walks
the whole path from here.
A tag matters: a listing names a repository and a revision. Without one, "1.0.0" would mean whatever your default branch says today.
package.ron the manifest — the listing is made from this
editor/main.lua runs when the package loads
Everything under editor/ runs on its own when the package loads. Shared code
belongs in a folder beside it, not under it — a module kept in editor/ would
run once as a script and again when something requires it. require resolves
from the package root, so a lib/ next to editor/ just works.
A package can also carry scripts/ (Lua your game can use), assets/, and
samples. See the packages guide
and the editor API.
This template declares permissions: [] — it needs nothing beyond reading its
own folder, and says so explicitly.
Only add to that list when you actually need it. An undeclared capability is not refused when you call it, it is absent from your Lua, so asking for something you do not use costs you installs and gains you nothing: anything you declare is shown to the person installing, and a package that asks for something arrives switched off until they allow it.
MIT OR Apache-2.0 — change it to whatever you want, in both package.ron and
here.