spydon

Hi,
we have an open PR for a bridge package for Spine in Flame (a game engine for Flutter), but we were a bit uncertain about your license. If we haven't missed anything in your license it doesn't seem like we are actually allowed to distribute a runtime, even though the user of the runtime has a license, is this correct?

PR: https://github.com/flame-engine/flame/pull/2109
Kullanıcı avatarı
spydon
  • Mesajlar: 3

Nate

Cool! I can help explain the licensing:

The Spine Runtimes licensing terms are defined by the Spine Runtimes License Agreement.

The first paragraph is for those who have licensed Spine. Their usage of the Spine Runtimes is covered by the terms in the Spine Editor License Agreement, Section 2.

The second paragraph is for those who have not licensed Spine and likely applies to your PR. It allows the Spine Runtimes to be integrated into any software, as long as the Spine Runtimes License Agreement applies to that software.

Game toolkits, OSS, and other software that want to include the Spine Runtimes often don't want the Spine Runtimes License Agreement applied to their entire software. To avoid that, you could make the part that contains the Spine Runtimes an optional component. The Spine Runtimes License Agreement only applies to that component. Users who include that component either:

  1. license Spine and have the Spine Editor License Agreement apply to their derivative works, or
  2. don't license Spine and have the Spine Runtimes License Agreement apply to their derivative works.

Most OSS projects go that route. Alternatively, you could show the Spine Runtimes License Agreement and have the user agree to the terms before enabling features that cause the Spine Runtimes to be included in derivative works. For example, GameMaker does this.

Legalese like this is never fun to deal with, sorry. We put enormous effort into our Spine Runtimes and the intent of this is that the Spine Runtimes be used by those who have licensed Spine.
Kullanıcı avatarı
Nate

Nate
  • Mesajlar: 12219

spydon

That makes sense, luckily we already have the spine runtime usage separated in the flame_spine package in the PR so it should be pretty straight forward to just add your license to that package. Thanks for the quick reply!
Kullanıcı avatarı
spydon
  • Mesajlar: 3

Mario

Btw, we've been working on our own Flutter/Dart Spine Runtimes, see https://github.com/EsotericSoftware/spine-runtimes/tree/4.2-beta/spine-flutter

Pro: based on spine-cpp, which we maintain, no translation errors.
Con: Can't work on the web, because Dart FFI doesn't work on the web.

It's almost complete, especially the core of it, which is pretty much Flutter independent. The SkeletonDrawable class shows you how to get what's essentially triangle soups made up of vertices with positions/colors/texture coordinates and info about the blend mode and texture to use. Those can almost be passed verbatim to the Canvas API, which I think Flame uses.
Kullanıcı avatarı
Mario

Mario
  • Mesajlar: 3283

conganhphamnd

Great, I hope this beta is stable soon.
conganhphamnd
  • Mesajlar: 3

spydon

Mario yazdı:Btw, we've been working on our own Flutter/Dart Spine Runtimes, see https://github.com/EsotericSoftware/spine-runtimes/tree/4.2-beta/spine-flutter

Pro: based on spine-cpp, which we maintain, no translation errors.
Con: Can't work on the web, because Dart FFI doesn't work on the web.

It's almost complete, especially the core of it, which is pretty much Flutter independent. The SkeletonDrawable class shows you how to get what's essentially triangle soups made up of vertices with positions/colors/texture coordinates and info about the blend mode and texture to use. Those can almost be passed verbatim to the Canvas API, which I think Flame uses.
Flame supports all platforms that Flutter supports, so we'd unfortunately have to go with the existing package if there is no web support.
Kullanıcı avatarı
spydon
  • Mesajlar: 3

Mario

Understood. Historically, we've found that 3rd parties taking the Spine core and maintaining it themselves usually fall behind, don't or imcompletely update their runtimes "fork", which leads to pain on the user side due to version mismatches, bugs, etc. Our runtimes are under pretty active development, and following that as a spare time hobby project is pretty intense.

Sadly, I don't see the Dart team adding WASM support to the Dart FFI anytime soon. I'd love to be able to support the web as a target as well with the official runtime. There's this, which I might be able to make work, but given it's oudated, I have don't have high hopes: https://github.com/EPNW/web_ffi/
Kullanıcı avatarı
Mario

Mario
  • Mesajlar: 3283

Mario

I managed to get web support working. Requires WASM+CanvasKit renderer. Not sure if that qualifies to be good enough for your purposes. Worst case we'll build our own Flame integration.
Kullanıcı avatarı
Mario

Mario
  • Mesajlar: 3283


Dön Runtimes