Licensing
SwfMesh is a paid product, licensed per engine. Unity and Godot are separate licences; holding one does not license the other.
SwfMesh is currently in closed beta and is not on sale. Beta access is arranged by email - write to hello@swfmesh.com. The terms below describe the licence you hold.
What a licence covers#
One licence covers one person. Anyone who works with the SwfMesh files needs their own licence - reading the source, editing it, or building a project that contains it all count. A single person may install their licence on whatever computers they personally work on; the unit is the developer, not the machine.
A contractor needs a licence, and it can be one of yours. If you own enough licences to cover everyone touching the plugin, you are covered - you do not need to buy a second time because some of those people are freelancers rather than staff.
Perpetual, with no royalties. The licence does not expire, there is nothing to renew, and you owe nothing on what your game earns. No revenue cap, no revenue share, no reporting, no registration.
Commercial use is included. Ship commercial games, on any number of titles, for as long as you like. There is no per-title fee and no limit on how many projects one licence is used across.
Updates are included. Bug fixes and new versions are part of the licence.
Redistribution#
You may ship SwfMesh inside a game. That is what it is for. The compiled plugin -
swf_player_unity.dll, the GDExtension .dll, and the meshes and data SwfMesh generates
from your content - can go into any game you build and be distributed to your players,
including through storefronts.
You may modify the source for your own use. The Unity package ships as readable C#. Edit it, fix it, adapt it to your project. What you may not do is publish those modifications or pass them to anyone who does not hold a licence.
You may not redistribute SwfMesh itself. Not the package, not the addon folder, not the source, not a repackaged or renamed version of any of it - and not as part of a product whose purpose is to give other developers SwfMesh. The line is whether someone receives a working copy of the plugin: players receiving a game that contains it are fine, developers receiving something they could build with are not.
Do not commit SwfMesh to a public repository. A public repo hands a working copy to anyone, which is redistribution however it was intended. Private repositories your team can reach are fine.
Licences are not transferable or resellable, other than to a company acquiring the business that holds them.
Third-party notices travel with your game. SwfMesh contains open-source code whose licences require their notices to accompany binary distributions, so this obligation passes to you when you ship. See Third-party components - it is satisfied by copying one file into your credits.
Nintendo Switch#
Console binaries are distributed separately, under NDA, and are not covered by your SwfMesh licence - holding one grants no right to them, and the terms above do not apply to them. What you receive under that NDA is governed by the agreement you sign. See Platforms.
Third-party components#
SwfMesh builds on the open-source components below. Their licences apply to the portions of the product derived from them.
The summary here is not the notice - the notice is THIRD-PARTY-NOTICES.txt, which
ships inside your download (at the root of the Unity package, or in
addons/swf_mesh/ in the Godot addon) and carries every required copyright line and
licence text in full. Keep it with the plugin.
If you ship a game built on SwfMesh, those notices travel with it. You are
redistributing the SwfMesh library, and the MIT terms below ask that the copyright and
permission notices go with it - an "acknowledgements" or "licences" screen is the usual
place. Copying THIRD-PARTY-NOTICES.txt into your game's credits satisfies this.
Linked into the shipped binaries#
| Component | Use | Licence |
|---|---|---|
| swf (Ruffle) | Reads AVM1/AVM2 bytecode so the importer can recover frame scripts | MIT or Apache-2.0 - © Ruffle LLC |
| lyon | Path tessellation | MIT or Apache-2.0 - © 2013 Nicolas Silva |
| miniz_oxide | Inflate for compressed SWF bodies | MIT or Zlib or Apache-2.0 |
| stb_image | JPEG / PNG decode (Unity native plugin) | MIT or public domain - © Sean Barrett |
| dr_mp3 | MP3 decode (Unity native plugin) | MIT-0 or public domain - © David Reid; embeds minimp3 (CC0) |
| godot-cpp | GDExtension bindings (Godot plugin) | MIT - © Godot Engine contributors |
Pulled in transitively by swf: bitflags, bitstream-io, byteorder, enum-map,
flate2, log, lzma-rs, num-derive, num-traits (MIT or Apache-2.0);
simple_asn1 (ISC); and encoding_rs ((Apache-2.0 or MIT) and BSD-3-Clause - the
BSD term covers its Unicode tables and is not optional).
Derived from, but not linked against#
SwfMesh is an independent implementation with no Flash runtime and no AVM, but two parts of its renderer deliberately match Ruffle so that content renders the way Flash Player rendered it:
- the focal-radial gradient formula, ported from Ruffle's
gradient.wgsl - the saturating stencil-counter model for nested masks
Ruffle is MIT or Apache-2.0, the same terms as the swf crate above.
Your SWF content#
SwfMesh does not claim any rights over the .swf files you author, import, or ship
with it. It does not phone home, and nothing about your content is transmitted anywhere.
Nor does it claim anything over what SwfMesh produces from them: the tessellated meshes,
baked data and imported assets generated from your .swf files are yours.
Support#
Support is by email, at hello@swfmesh.com.
Include your engine and SwfMesh version, and attach a .swf that reproduces the problem
where you can - SWF files vary enormously, and a bug in one is usually about the specific
tags that file uses. Send the file only if you are free to share it; a description of the
content works when you are not.
Bug reports and feature requests are welcome at the same address.
Refunds#
SwfMesh is not on sale during the closed beta, so there is nothing to refund. If you have a question about future pricing or terms, email the address above.