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

Docs request: FBLO examples for non-file-based game extensions #8701

Closed
agc93 opened this issue Mar 8, 2021 · 5 comments
Closed

Docs request: FBLO examples for non-file-based game extensions #8701

agc93 opened this issue Mar 8, 2021 · 5 comments
Assignees
Labels
improvement 📈 An issue that improves an existing feature

Comments

@agc93
Copy link
Contributor

agc93 commented Mar 8, 2021

Is your feature request related to a problem? Please describe.
This one's just a docs request, rather than a feature one. It would be good to get an example/demo/some information on how to use the new FBLO extension API with games that don't use files (like all the UE4 games).

I can see that the new API is much better overall, but it's a lot less clear how to use when there's not a file involved since tasks like the initial load order population and the old preSort equivalent aren't quite as intuitive out of the box.

Describe the solution you'd like
Given the old API is essentially deprecated, it would be good to have some docs or just general info on how to migrate one of the more common uses cases of the old API to the new one.

Additional context
I know @Pickysaurus mentioned he was going to try and port some of his extensions that might be useful as examples, but raising this anyway in case that doesn't happen.

@IDCs IDCs self-assigned this Mar 9, 2021
@IDCs
Copy link
Contributor

IDCs commented Mar 9, 2021

Hey agc93, I was considering doing such a tutorial/example for a while now - gives me an excuse to add support to an additional game (I'll probably pick up a UE4 game).

To briefly touch upon the concept - the FBLO treats the file as the singular point of truth load ordering-wise; what type of data you store inside the file is completely up to what you require to make it easier for your game extension to deserialize the load order in its correct, valid format. (given that the game will ignore that file anyway, we can modify it in whatever way we like)

In the case of UE4 games for example, if I remember correctly these are picked up by the game in alphabetical order, in which case I would probably store some sort of prefix in the LO file for each mod entry which I can then use when generating the mod's folder name on deployment. As you may already know, the "mergeMods" property when registering a game also accepts strings as the return value - this can be used to insert a prefix to the mod's folder name if required, a good example of that pattern is the 7days to die game extension that comes bundled with Vortex.

@agc93
Copy link
Contributor Author

agc93 commented Mar 9, 2021

Yeah I tried to do that, but the combination of having to build the first loadOrder (to then be serialized) and a few other problems meant I couldn't get it going correctly. An example for a reasonably common scenario like the UE4 games would be pretty helpful.

@IDCs
Copy link
Contributor

IDCs commented Mar 9, 2021

Sure - in that case I'll write up a tutorial as soon as I'm able.

@IDCs
Copy link
Contributor

IDCs commented Mar 13, 2021

Hey there @agc93, so I've added FB LO support to a random UE4 I picked from the website. I'll finish the documentation for it on Monday, but if you're interested in reading through the code: https://github.com/IDCs/game-destroyallhumans

(warning - it's not commented in most areas and may still have some debug code in places)

@TanninOne TanninOne added the improvement 📈 An issue that improves an existing feature label Mar 16, 2021
@IDCs
Copy link
Contributor

IDCs commented Mar 18, 2021

There we go - Nexus-Mods/vortex-api#22

@IDCs IDCs closed this as completed Mar 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement 📈 An issue that improves an existing feature
Projects
None yet
Development

No branches or pull requests

3 participants