drwhut / tabletop-club

An open-source platform for playing tabletop games in a physics-based 3D environment for Windows, macOS, and Linux! Made with the Godot Engine.
https://tabletopclub.net
MIT License
1.28k stars 55 forks source link

Is it possible to create a tool to convert Tabletop Simulator packages? #273

Open stonyme opened 1 year ago

stonyme commented 1 year ago

If this feature could be implemented, it would reduce a lot of duplication of work.

drwhut commented 1 year ago

Agreed, and not only that, but this feature has been by far and away the most highly requested feature since I started the project. However, before this is implemented in the game, I want to make sure that we are 100% in the clear when it comes to the legal side of things. Since this involves both Tabletop Simulator and potentially the Steam Workshop, I would like to check both of their Terms of Service / End User License Agreements before proceeding. Any help in reading these would be appreciated!

XBigTK13X commented 1 year ago

I have some experience with Godot and believe an open source alternative to Tabletop Simulator is vital for preservation given the lack of support the original app currently receives from its developers. I'm a developer, not a lawyer, but here are the relevant legal documents.

Steam Workshop Tabletop Simulator

To my amateur reading of those links, a tool that either reads or converts existing mods is outside the scope of either agreement. This seems to me to be a similar situation that video game emulators already forged a path through. Namely that being able to read and execute proprietary assets isn't a violation of any EULA. Distributing those assets is a different beast entirely, but also doesn't seem to be within the scope of TTC.

I have created a few TTS mods. I think there are two separate issues technically. The first is importing TTS mod assets into TTC. The second is being able to run the scripts from the mods. From a preservation standpoint, importing the assets is much more important than importing the scripting. It is also technically much simpler to implement.

If you already have some other thoughts on this aspect of your project, I'm happy to hear what you think. I would love to pull down what you've already developed and prove out some rudimentary mod importing/converting.

drwhut commented 1 year ago

Agreements

I've had a read through of both agreements. The TTS EULA is pretty forgiving, it only mentions "mods" in the sense of dynamically-linked libraries and derivatives of the game itself, and they have a catch-all statement for custom content (the bit we're interested in) saying they are not responsible for their implementation.

The Steam Workshop Agreement has a potentially damning clause, however. Under section 6B, it states:

Workshop Contributions are Subscriptions, and therefore you agree that any Subscriber receiving distribution of your Workshop Contribution will have the same rights to use your Workshop Contribution (and will be subject to the same restrictions) as are set out in this Agreement for any other Subscriptions.

So given that workshop items are what they call "Subscriptions", section 2A applies:

Valve hereby grants, and you accept, a non-exclusive license and right, to use the Content and Services for your personal, non-commercial use (except where commercial use is expressly allowed herein or in the applicable Subscription Terms)

This was to be expected. We're only going to be able to use the items for personal use, unless we have the creator's explicit permission. There's also this under the same section:

To make use of the Content and Services, you must have a Steam Account and you may be required to be running the Steam client and maintaining a connection to the Internet.

I'm assuming this doesn't mean much, since you need to download the workshop items via Steam anyways. However, under section 2G, it states:

You may not use the Content and Services for any purpose other than the permitted access to Steam and your Subscriptions, and to make personal, non-commercial use of your Subscriptions, except as otherwise permitted by this Agreement or applicable Subscription Terms. Except as otherwise permitted under this Agreement (including any Subscription Terms or Rules of Use), or under applicable law notwithstanding these restrictions, you may not, in whole or in part, copy, photocopy, reproduce, publish, distribute, translate, reverse engineer, derive source code from, modify, disassemble, decompile, create derivative works based on, or remove any proprietary notices or labels from the Content and Services or any software accessed via Steam without the prior consent, in writing, of Valve.

This 100% counts under "create derivative works based on". Given this, we have to either solve "Except as otherwise permitted under this Agreement (including any Subscription Terms or Rules of Use), or under applicable law notwithstanding these restrictions", which asking the owner's explicit permission may do, but I'm not 100% sure on that, or we need the written consent of Valve themselves. If neither can be solved, then converting mods may still be possible, but only if the mod was NOT downloaded from the Steam Workshop.

Mod Conversion

On your point about the actual conversion, I'm in agreement that converting the assets themselves will be a lot easier than the scripts. In fact, I think it's pretty much been decided in #65 that the Lua API for TTC will not attempt to replicate that of TTS's, so converting the scripts from one game to the other automatically will be pretty much impossible in that regard.

Lastly, one more thing that was recently discovered on the Discord is that some (maybe most?) TTS mods are bundled as "Unity Asset Bundles", which may or may not have their own license (will need to check), and their own implementation difficulties when it comes to the conversion.

XBigTK13X commented 1 year ago

I hope you don't mind, but I reached out to Valve's legal support to get a preliminary answer from their side. Here is the chat transcript. The rep I spoke with agreed that from Valve's perspective, they don't have a horse in this race.

steam-chat

XBigTK13X commented 1 year ago

For posterity's sake, here is the TTS EULA at the time of this discussion. Screenshot 2023-05-05 at 07-45-55 End User License Agreement Tabletop Simulator

drwhut commented 1 year ago

Whilst I appreciate you taking the time to contact Valve, I am still somewhat concerned about the clause I mentioned earlier. I may try to contact them myself about that specific clause in the agreement, and whether using the local files to make derivatives for personal use is okay.

XBigTK13X commented 1 year ago

Here is some feedback from Unity. They don't appear to have restrictions on the format.

Screenshot 2023-05-09 at 15-07-16 AssetBundle license restrictions – Unity

drwhut commented 1 year ago

Welp...

Screenshot from 2023-05-13 22-48-27

XBigTK13X commented 1 year ago

That reads to me how I understood the issue before reaching out to any of these groups. At the end of the day, they don't deal with any licensing for a third party interacting with mods. The only thing to possibly worry about would be the copyright holders for game mods that were created without their consent. Does that align with your understanding of these replies?

drwhut commented 1 year ago

At the end of the day, they don't deal with any licensing for a third party interacting with mods.

That's not the way I'm reading it. From both section 2G, and the reply I got from Valve, they do not allow derivative works to be created from workshop content (even in a non-commercial context), unless I guess the creator of the content gives explicit permission, or decides to create the derivative work themselves.

So in summary, from my understanding so far it should be okay to convert local TTS files into TTC ones, as long as the files did not originate from the Steam Workshop, and as long as the files aren't redistributed without the author's consent. The crux of the issue though is that most, if not all, TTS mods are downloaded via the workshop. So even if there was a way to convert the mods in-game, and it explicitly said "do not convert mods from the workshop", an argument could be made that even if that disclaimer is there, users don't really have a choice - unless there is another way to download TTS mods that I am unaware of?

XBigTK13X commented 1 year ago

I'm working on a project separate from Tabletop Club that has mod management as a goal. Once your project has defined a format for its own mods, I plan to add mod conversion to my project which will sidestep the entire discussion about where the mods come from and push that concern away from Tabletop Club.

Day-OS commented 1 year ago

What about converting assets from a open source game instead? I mentioned it on discord about the Vassal Engine Modules that are pretty much complete and I if it is allowed I would likely try to develop a way to port it. ^^

XBigTK13X commented 1 year ago

Vassal is one of the conversion targets I plan to include in https://github.com/XBigTK13X/tabletop-librarian

On Tue, May 16, 2023, 9:32 PM DayOS @.***> wrote:

What about converting assets from a open source game instead? I mentioned it on discord about the Vassal Engine Modules that are pretty much complete and I if it is allowed I would likely try to develop a way to port it. ^^

— Reply to this email directly, view it on GitHub https://github.com/drwhut/tabletop-club/issues/273#issuecomment-1550599321, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADLKGNDLVYILRBS665FX7TXGQ2FBANCNFSM6AAAAAAXFCHGIY . You are receiving this because you commented.Message ID: @.***>

XBigTK13X commented 1 year ago

I had a chunk of free time this past week to start prototyping my ideas for Tabletop Librarian. I got far enough along that I'm confident it will serve as a replacement for TTS Mod Backup for my needs.

I filed a few issues to track progress on Tabletop Club conversion. It isn't high on my priority list, but I do plan to look into it once I get the Tabletop Simulator interactions hammered out.

https://github.com/XBigTK13X/tabletop-librarian/issues/11

basxto commented 1 year ago

So even if there was a way to convert the mods in-game, and it explicitly said "do not convert mods from the workshop", an argument could be made that even if that disclaimer is there, users don't really have a choice - unless there is another way to download TTS mods that I am unaware of?

There are other ways.

https://www.nexusmods.com/tabletopsimulator/mods/ has mods listed

Open Source board/card/dice games (arcmage, tinytactics, emata.org and saga.li) probably can find other ways to distribute their games too

CopperCoral commented 10 months ago

I think it's worth noting that another TTS competitor, Tabletop Playground, does have an official tool to convert mods from TTS: https://tabletop-playground.com/knowledge-base/importing-from-tabletop-simulator/ So they did at least judge that they are legally in the clear enough for that.

drwhut commented 10 months ago

Huh - that's... interesting, considering a member of Valve's legal team told me directly that we can't use the mods outside of the context that they were uploaded for (in this case, Tabletop Simulator). :raised_eyebrow:

s3rvant commented 10 months ago

Perhaps legal means TC cannot download mods from Steam, convert and then use

Compared to Tabletop Playground which provides a tool to convert mods outside of Steam for your own created mods

So as long as I'm the creator of the mod then I can do what I want with it on my own system and distribute in whatever format I prefer

drwhut commented 10 months ago

That's true, if it's your own mod then you can do whatever you want with it, since you own the rights to it.

But if an official tool was to be made to convert mods from TTS->TTC, then the target audience for that tool would only be a select few people, that being the original mod creators. I would personally love for the game to have the ability to convert TTS mods, and I know I'm not the only one (this has been by far and away the most requested feature), but I'm not sure if I can justify spending so much time developing and testing a feature that only a few are (legally) allowed to use, compared to something like a scripting API, which would be aimed towards everyone who creates content for TTC.

My current thinking is that this would probably make more sense as an unofficial tool that is developed separately, rather than something that comes packaged with the game.

s3rvant commented 10 months ago

Agreed that for the sake of official develop time adding features to TC that benefit all is a better priority

And would certainly appreciate a scripting API