Proper way to release public projects with paid packages/assets?

What’s the proper way to release a public github repo that includes a paid asset?

For example, I’ve purchased SimpleSQL (SimpleSQL | Integration | Unity Asset Store) and want to use it for an MIT-licensed project hosted in a public repo on github. Obviously, a requirement for someone else to use it would be to purchase the package. Does Unity automatically handle that in the package manifest?

Is it okay to publish anything that’s put into the Assets folder by the package (that is, anything in “Import”, or installing demos?)

The unity asset store is not UPM ready. It just blended into the packman window, but it still installs to the Asset folder. But someday it will be possible.

You can not publish paid assets installed to the assets folder as a MIT license, obviously.

You have to write something in the README to let users install paid assets on their own.

Your last question seems related to samples import, search “sample” on this sub-forum may satisfy you.

Sorry, I don’t understand that.

What I expected to happen was that a paid package would be referenced in manifest.json, but wouldn’t download during the installation unless it was paid for by user (and therefore in “My Assets”). Since the manifest is checked into source control, but not the packages itself, the would easily allow a project to be posted on github while respecting the license.

Installing samples in Assets makes sense, but at least in the case of SQLite, the entire package is published in Assets, which gets checked in by default. I can add something to .gitignore to not push it to github, but then every time I install the project on a new computer, I’ll have to re-import the package manually, which is what I’m trying to avoid (keeping projects in sync between a desktop and laptop).

In my mind (but I’m new to Unity) if the scripts were loaded into the packages folder, and project-specific scripts, including samples, but the sample or custom scripts could extend the scripts in the package, rather than directly include them. That would allow working projects for anyone that had the license easily, I think.

What you want, to provide a nice to reference paid assets within Unity Package Manager (we call it PackMan), is what Unity wants to deliver in the future. The UPM package is something young to Unity, before that everything installed into the Assets folder, included all assets purchased/got from the Asset Store.

The Unity Asset Store is not UPM ready, which means it still installs into the Assets folder (you have verified the behavior with the SQLite asset). Your purchased Asset Store assets will be available in the PackMan window as “My Assets”. It just a shortcut for you to download them from the Asset Store.

For now, if you’re working on a private Unity project for you or your team, you can submit purchased assets into the repository. Be aware of the per-seat licensed asset, but you manage it anyway. If you’re working on an open-source project and it requires a paid asset, you need to avoid submitting them to your open-source repository by accident.

Hope this helps.

Thanks, that does help. And it explains why there are no working projects in github for paid packages.

For my particular project, I can simply code up my own calls to the database, or make the project private. Neither sounds appealing, so I eagerly await Packman!

I followed your link to OpenUMP-CLI – what a great tool! I had a few of my own, less-elegant, hacks to do the same thing (modify manifest.json). So thanks for publishing that!

Some Assets Store purchases already leverage the “Scripting Define Symbols” feature (search it on this link) to let you use #define SOME_ASSET_ENABLED to figure out whether an asset is installed. Combined with the wrapper class you can avoid the compile error for users and guide them to install necessary assets.

Thanks for your kind words for the OpenUPM-CLI. And feel free to publish your talent open-source packages on the OpenUPM platform.