Skip to main content
Getly

Requires Unity 2020.3 or newer · Free

Getly Publisher for Unity

A Unity editor package. It checks the asset folder you are about to sell, then submits the listing as a draft without you leaving the editor. It is free, and it is the first product Getly published for itself.

The problem, measured

A .unitypackage is opaque until the moment it is imported, which is also the moment it is too late. This tool exists for one failure in particular: the buyer opens the demo scene and every object reads "Missing (Mono Script)", because the author tested it in the one project where those scripts happened to exist. When we started there were 48 .unitypackage files on Getly across 8 stores, and not one of them had ever been read by anything.

Every decision, and what it cost

01

The check runs twice, and only one half decides

Why

Inside the editor it can see what no server can — whether a prefab's script GUID actually resolves, what a texture's import settings are, how the compiler reads a file. But it runs on the seller's machine, in a package they can edit. Trusting its report would mean the gate is whatever a copy of our code on somebody else's computer says it is. So the editor advises and Getly, reading the uploaded bytes, decides.

What it cost

Two implementations of the same rules, in two languages, that can drift apart. A generated catalogue and a test that fails on drift is the price of keeping them honest.

02

Six checks block publishing. Ten never do.

Why

A blocking check means the buyer receives something broken; a warning means the asset works and could be better. Adding to the blocking list is a decision to refuse more sellers, so it is made deliberately and held to six. A seller who knows their asset better than our rules do must still be able to ship it.

What it cost

Five of the six the server finds for itself. The sixth — a prefab pointing at a script that is not in the package, the one this whole tool opens with — needs the editor, because resolving a GUID is something only Unity can do. A seller who uses the no-install route gets the other five and not that one, and we would rather say so than let the route imply otherwise.

03

The gate looks at the file extension and nothing else

Why

The Unity test is the extension and nothing else, so it can refuse a .unitypackage and nothing else: every listing that already existed when it shipped was unaffected, and nobody selling anything but Unity work had a new rule of ours to learn. It is no longer the whole gate — the Blender check that came later has to open archives — but the Unity half still touches only Unity.

What it cost

A Unity asset shipped inside a .zip is not covered. We accepted that rather than have the gate start forming opinions about hundreds of archives it has no business judging.

04

You can satisfy it without installing anything

Why

The gate bites when a product goes live, and there were sellers with live Unity assets long before the tool existed. Making an install the only route would have meant a seller who has been selling for months must download an editor package to publish an update. So the same check runs from the product edit page.

What it cost

Two entry points into the same core, and a button whose reach we have to keep in step with the gate — which we got wrong once and now have a test for.

05

The API key lives in editor preferences, never in the project

Why

A key sitting beside your work is a key you eventually export into a package and sell. Editor preferences are outside the folder you are packaging, so it cannot travel with the asset by accident.

What it cost

Editor preferences are per machine and per OS user, not per project, and the key sits there in the clear. A seller on a second machine signs in again, and anyone with that OS account is signed in as that store. We took that over a credential that can be exported inside a package and sold.

What we got wrong first

These were caught before a buyer saw them, which is the only reason we can write them down. They are here because the decisions above teach less than the mistakes do.

We wrote

"Every Unity asset on Getly is checked before it can go live."

The truth

False, and we wrote it on the page whose entire argument is that we check things. The gate bites on the transition into live, so the 48 .unitypackage files already attached across the catalogue had never been read. We rewrote it to "from now on" before it shipped, and added a separate counter for the ones genuinely read — 1 today.

For your listing

Absolute words — every, always, fully, guaranteed — are where a description is most likely to be lying, and they are the easiest thing for a buyer to disprove. Say what is true of the next sale, not what you wish were true of all of them.

We wrote

A check that flagged our own documentation.

The truth

The absolute-path check fired on the file that explains the absolute-path check, because that file contains an example path. It would have fired on any README telling a seller to remove /Users/… paths. Three fixes: the pattern now requires a user segment and something after it, prose files are excluded, and the wording no longer contains a full path.

For your listing

Test your product against the thing it is most likely to be used on, not the thing you built it with. Ours found its own manual.

We wrote

A warning about empty folders that judged the wrong thing.

The truth

It looked at the filesystem. A folder holding only a .gitkeep is not empty on disk and arrives empty in the buyer's project, because Unity's exporter does not carry that file. The source of truth had to be what the exporter produces, not what the seller can see in Finder.

For your listing

Check what the buyer receives, not what you have. Your folder, your project and your disk are all things the download does not carry.

What it does not do

  • It is not a malware scanner. A macro inside a genuine document passes it untouched.
  • It does not judge whether your asset is good. Only whether it arrives working.
  • It is Unity only. There is a Blender version; there is nothing for Unreal, Photoshop or Cinema 4D.
  • Packages over 150 MB are recorded as unchecked and can still be published. Refusing a seller because of our own limit would be charging them for our constraint.

How we convinced ourselves

The fixtures were made by Unity, not by us

Every test package was produced by Unity's own exporter running headless. The whole risk in a format reader is that the format is not what you assumed, and a hand-built fixture encodes the assumption twice instead of testing it once.

A harness that installs it and presses the buttons

A script creates a project, compiles the tool, runs the validator and exits non-zero if the findings change. Unit tests read real exported packages; the harness covers the part a unit test cannot see — that the thing compiles, and that pressing the button does what reading the code suggests.

A clean fixture matters more than a broken one

It is easy to prove a checker catches a defect and easy to forget to prove it stays silent on good work. A validator that fires on a well-made asset teaches sellers to ignore it, which is worse than no validator at all.

The listing itself

The description leads with what it prevents

Not what the tool is — what happens to you without it. The first paragraph is the "Missing (Mono Script)" story, because that is the sentence a Unity publisher recognises. Then the full list of what blocks publishing, then plainly what it does not do.

The cover says what the thing is at thumbnail size

The first version was our mascot, which is honest and tells a buyer nothing — it is the same picture on every page of this site. The one on the listing now draws the product: a package being inspected, with the word lettered by hand rather than a logo reproduced, because reproducing someone's trademark in generated art is both a legal question and a guaranteed mangling.

It is free, and nothing about it is sold

Charging for the thing that makes other people's assets sellable would be charging for our own quality bar. It is also the on-ramp: the tool is worth more to us installed than sold.

One file, replaced rather than accumulated

Each release replaces the previous download instead of adding a version nobody wants to choose between. The buyer gets the current build, and there is no page on which they have to guess which one is current.

It went through our own gate, and our own gate refused it

Publishing it runs the same check every seller passes — exempting our own listing would be the least defensible thing available to us. It came back with one advisory finding: no demo scene, which an editor tool does not have. We left the finding standing rather than adding an exception for ourselves.