Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate Steam Workshop with Mod Browser #1276

Closed
Solxanich opened this issue Jan 10, 2021 · 16 comments
Closed

Integrate Steam Workshop with Mod Browser #1276

Solxanich opened this issue Jan 10, 2021 · 16 comments
Labels
Needs Discussion Issues that require more discussion

Comments

@Solxanich
Copy link
Collaborator

Description

With the officially announced development of Terraria (1.4.2?) that will have Steam Workshop support, it has been raised that Steam Workshop should be likewise implemented for tModLoader.
For better or worse, this raises a key question of what to do with the current Mod Browser within a Steam Workshop environment.

What does this proposal attempt to solve or improve?

This feature request suggests some features of Mod Browser that could be integrated with Steam Workshop to maintain legacy user experience, without significantly compromising on the benefits of Steam Workshop.
By supporting legacy Mod Browser UX, tModLoader stands to maintain a significantly better browsing interface over Steam Workshop for users who have grown accustomed to the Mod Browser, while maintaining support for other platforms.
The proposal is as follows, based on an underlying assumption that Valve stores SteamWorkshop page data in a database/query-able format [a fair assumption imo]: (MB-> Mod Browser, SW -> SteamWorkshop)

MB modname -> query and return list of SW mod entries
MB mod description -> query SW description for selected mod
MB last update -> today() - (query SW date posted) for selected mod
MB download -> query SW direct download for selected mod
MB Report #1273 -> string magic + hyperlink SW Report item (let Steam moderate?)
MB description links -> Let SW moderation handle link monitoring and scam detection
MB Categories #245 -> three steps (1: implement all tags from ModHelpers as tags in Steam Workshop. 2: when transferring data from tModLoader current mod DB to SW, include ModHelper tags metadata in transfer for the mods. 3: Have the code from ModHelpers query SW tag list for the selected mod as its source to provide content category features)
MB Update Control -> An important issue for SW is preventing Steam from auto-updating workshop items and breaking in-progress saves; updating should be handled through MB imo (although I'm less certain about this one)
etc. -> querying

Which (other) solutions should be considered?

I'm not an expert on Mod Browser or Steam Workshop so I can't comment further on implementation alternatives. Likely variations exist. Other considerations may apply once 1.4.2 is released and more comes to light.

@Jofairden Jofairden added this to the Terraria 1.4 milestone Jan 12, 2021
@Jofairden
Copy link
Member

This is already something we had in mind for 1.4 TML
It will likely be an alternative to the browser, and we'll have to see how we can make a compromise for GoG users.

@Jofairden Jofairden added Needs Discussion Issues that require more discussion Far in Future labels Jan 12, 2021
@Jofairden Jofairden changed the title [Future Improvement] Integrate Steam Workshop with Mod Browser Integrate Steam Workshop with Mod Browser Jan 12, 2021
@Mirsario
Copy link
Collaborator

This is already something we had in mind for 1.4 TML
It will likely be an alternative to the browser, and we'll have to see how we can make a compromise for GoG users.

I told you, we can just move to steam workshop and have mod browser remain as nothing more but a query server, which will be used for giving direct downloads for gog users and workshop downloads for steam users. The client interface can remain pretty much the same. Workshop APIs have a function for getting a direct download link, but it's only accessible by developers' servers. Which is why mod browser will have to act as a "middleman".

@Solxanich
Copy link
Collaborator Author

Solxanich commented Jan 13, 2021

Further echoing the 'middleman' mod browser approach, I came across these two feature requests regarding mod browser for server managers (for managing the server's mods):

  1. Feature: update mods with tModloaderServer.bin* #269
  2. ModPack support for server #375, a specific sub-circumstance of 269
    Implementation would likely still fall towards the same "non-steam" direct download Mirsario mentioned.

Further considerations to keep in mind on future of Mod Browser and Steam Workshop -

  1. Mod packs - being able to congregate a list of mods and directly share the list file is important for multiplayer. Not sure how to deal with steam+non-steam efficiently
  2. If we maintain the feature for server's auto installing mods, this will also lead to further complications if we don't direct download in some form
  3. If Valve ever reimplements purchasing mods (in any form), this will get SUPER complicated for non-steam, although I'd toss that as a future if it happens then deal; otherwise keep in back of mind while initial implement

(link of direct downloading via SteamCMD https://www.reddit.com/r/DivinityOriginalSin/comments/73y9g4/how_to_download_steam_workshop_mods_for_the_gog/)

As an aside, is there any advantage to implementing two different downloads? IE, is workshop downloads favourable over direct download for any reason?

@Chicken-Bones
Copy link
Member

This is a good discussion issue, and having mod browser act as an in-game steam workshop downloader sounds good to me. It will definitely wait till post 1.4.2

@Solxanich
Copy link
Collaborator Author

Solxanich commented Jan 29, 2021

Some further things to consider; how we handle libraries and dependencies in a SW environment.
Currently, there is a decent amount of opinion that using/identifying existing libraries is deficient in functionality and leads to under-usage; part of implementing the libraries and dependencies in a SW environment should aim to resolve that.

Edit: Some ideas to improve library usage, via Collaborators (not mine):

  1. Have libraries on SW include their .dll, .xml, .tmod so that devs and users get all of the parts at once - no searching for missing dev files and put it more prominent that can use library themselves
  2. Deprecate the "Download with Dependencies" button from Mod Browser, and always default to download with dependencies, similar to SW.
  3. Automatic updates of mods and libraries may also help to minimize the avoidance of dependencies.

@Solxanich
Copy link
Collaborator Author

Solxanich commented Feb 4, 2021

Some further considerations from Collaborators:

  1. File upload size limitations?
  2. Preventing Mod Icons from being animated? (Moderation and seizure concerns)
  3. Using Steam Workshop sort by "Top Rated All Time" to display top rated mods in mod browser. See Civ 5 and Stellaris workshops as examples. In a twist, it actually looks to be mostly accurate with little visible abuse of ratings for these two larger mod communities. Not sure how sorting is done though from a user side.
  4. ModLoader.IsSignedBy not working on Mac/Linux #827 fix?

@Solxanich
Copy link
Collaborator Author

A further question from Collaborators:

  1. Can we download texture packs from Terraria Workshop into tModLoader 1.4 without players having to manually copy&paste or symlink files between the two? Some primitive ideas if not directly possible:
    a) auto-create a symlink in the directory to terraria texture packs folder
    b) have tModLoader be moved from a separate steam app to be a workshop item in Terraria workshop (and thus be a major dependency of all mods). This would also make sense if there are non-tModLoader mods looking to be on the workshop...
    c) See if can backend sync workshop Terraria to workshop tModLoader.

@Solxanich
Copy link
Collaborator Author

Workshop APIs have a function for getting a direct download link, but it's only accessible by developers' servers. Which is why mod browser will have to act as a "middleman".

Q: If the above fails, is it possible to download workshop items by themselves without owning Terraria, and just have a file folder locator to get the Workshop content? Something to consider later as a backup in case ReLogic's implementation for texture packs for GoG and WeGame don't meet our needs and the direct-download path fails.

@USMP-lancer
Copy link

USMP-lancer commented Mar 18, 2021

maybe even syncing the texture folders of terraria and tmod?

@markozajc
Copy link

markozajc commented Mar 31, 2021

(link of direct downloading via SteamCMD https://www.reddit.com/r/DivinityOriginalSin/comments/73y9g4/how_to_download_steam_workshop_mods_for_the_gog/)

This does not seem to work for Terraria's Workshop. Not sure if whether or not anonymous downloads are allowed is set by Re-Logic, though.

@USMP-lancer

This comment has been minimized.

@markozajc
Copy link

markozajc commented Apr 2, 2021

Update: Re-Logic has enabled anonymous downloads from Workshop. It is now possible for game servers and anonymously logged in users to download Steam Workshop content, so it shouldn't be too hard to integrate it for GOG and other non-Steam users.

@Chicken-Bones Chicken-Bones modified the milestones: Terraria 1.4, 1.4 New Features Apr 7, 2021
@Mirsario

This comment has been minimized.

@Mirsario
Copy link
Collaborator

Mirsario commented May 2, 2021

Update: Re-Logic has enabled anonymous downloads from Workshop. It is not possible for game servers and anonymously logged in users to download Steam Workshop content, so it shouldn't be too hard to integrate it for GOG and other non-Steam users.

Assuming that you meant to type 'it is now', it's very good news. We'll definitely aim to get vanilla workshop downloads working in TML.

@markozajc
Copy link

Correct, it was a typo.

@Solxanich
Copy link
Collaborator Author

Alright, I think this can be closed as the core work listed here is done.
Any further things can be done as feature improvements.

@Chicken-Bones Chicken-Bones removed this from the 1.4 New Features milestone May 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Discussion Issues that require more discussion
Projects
None yet
Development

No branches or pull requests

6 participants