idea: selectable mod "profiles"

Post your ideas and suggestions how to improve the game.
Post Reply
golfmiketango
Filter Inserter
Filter Inserter
Posts: 527
Joined: Fri Jan 29, 2016 2:48 am
Contact:

idea: selectable mod "profiles"

Post by golfmiketango » Sat Sep 10, 2016 9:52 pm

It is really a pain right now to switch between campaigns if they use wildly different mods. Instead, it's almost easier to just create side-by-side installations of the entire game.

As a result, I've decided to start working on some scripts to maintain farms of bind-mounts on my linux system that enable me to maintain named "virtually parallel" factorio installations. It occurs to me that although this will probably work and nicely meet my own needs, it will not benefit the vast majority of non-linux-using folks out there, and that a better solution would be if the game could effectively do this for me.

So, here is what I'm envisioning:
  • The game maintains the installed mods as usual, mostly.
  • A new pre-game UI entity is created: the "Mod Profile" is basically just a mod pack -- it describes a bundle of mods, all implicitly enabled.
  • Internally, Mod Profiles contain a list of "Mod References", which, in turn, point either to private filesystem locations or public mod-portal uri's (or whatever uniquely identifies mods in the portal, i.e., for purposes of upgrade checking). They should be small enough to boil down to a snippet of i.e., xml, that could be conveniently exported to a clipboard or file and shared out-of-band.
  • When saves are created, a corresponding Mod Profile is implicitly stored with the game.
  • When saves are loaded, or upon manual user request, the Mod Profile is checked. If it differs from what is active in the game, the user is prompted to either: (a) keep the current mod configuration or (b) activate the requested mod profile. If the new Mod Profile contains invalid file-system references, the user is given the opportunity to fix this by providing the files and trying again, uninstalling the mod from the Mod Profile being loaded, or giving up the ghost and reverting to the Mod Profile as it stood before the load attempt. Mods which were active in the game but do not appear in the profile would remain installed but become disabled, and the latest version of missing portal mods would be automatically downloaded from the portal.
  • When loading a profile/save a checkbox could be provided to enable automatic checking for out-of-date portal mods and upgrading during the Mod Profile activation process.
As you can see, many of these ideas are already "almost" implemented. I'm hoping that realizing the full UX above could be done without major changes to the game and backwards compatibility of saves might not be too hard to deal with, but, of course, I don't know what the code looks like.

zebediah49
Fast Inserter
Fast Inserter
Posts: 100
Joined: Fri Jun 17, 2016 8:17 pm
Contact:

Re: idea: selectable mod "profiles"

Post by zebediah49 » Sun Sep 11, 2016 5:22 am

What's wrong with a good old

Code: Select all

rm mods && ln -s 0.14_mods/ mods
Bind mounts seems like overkill for this task. (If anything you should just use a COW filesystem and reflinks :) )

Anyway, I think that would be fairly convenient, and really just needs to piggyback off of the existing "mod-list.json" file. Save files already have a list of mods that were used, and check compatibility; they just need the option to load that configuration. Same for server-loaded mods (download from server?). It's just currently inconvenient to switch profiles.

The biggest thing thing I would like to see with that to make it fully effective would be to make mods version-slotted. Allowing the user to have various versions of the same mod available at the same time (of course only one enabled at a time, but not hard-crashing the game on load if you try) would be quite nice. At the moment if a mod upgrade breaks everything, you have to find it, manually go in and download a downgraded version, replace it, and you can't use the in-game update tool until that's been fixed. Just radio-buttoning the version selector down would be quite nice for such a circumstance.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 10467
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: idea: selectable mod "profiles"

Post by ssilk » Sun Sep 11, 2016 8:56 pm

Note: With equal mods you just need to exchange the modlist.json to have different set-ups.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

User avatar
bobingabout
Smart Inserter
Smart Inserter
Posts: 6667
Joined: Fri May 09, 2014 1:01 pm
Contact:

Re: idea: selectable mod "profiles"

Post by bobingabout » Sun Sep 11, 2016 9:27 pm

I think this is one of those ideas that should work alongside the in game configuration options for mods (rather than having to manually edit the config.lua files that some mods include)
so the entire mod profile would be kept together. It would also allow different profiles to not only have different mods, but also different configs per profile.

And disabled mods would likely need to be moved into some sort of mod locker too, because you might have multiple different versions of the same mod? I dunno about this one.
Creator of Bob's mods. Expanding your gameplay since version 0.9.8.

golfmiketango
Filter Inserter
Filter Inserter
Posts: 527
Joined: Fri Jan 29, 2016 2:48 am
Contact:

Re: idea: selectable mod "profiles"

Post by golfmiketango » Sun Sep 11, 2016 11:53 pm

bobingabout wrote:I think this is one of those ideas that should work alongside the in game configuration options for mods (rather than having to manually edit the config.lua files that some mods include)
so the entire mod profile would be kept together. It would also allow different profiles to not only have different mods, but also different configs per profile.

And disabled mods would likely need to be moved into some sort of mod locker too, because you might have multiple different versions of the same mod? I dunno about this one.
Yeah, if a global solution to the config.lua problem is planned then it makes this a bigger ask. Not sure what the devs have planned for that, if anything.

User avatar
bobingabout
Smart Inserter
Smart Inserter
Posts: 6667
Joined: Fri May 09, 2014 1:01 pm
Contact:

Re: idea: selectable mod "profiles"

Post by bobingabout » Mon Sep 12, 2016 8:07 am

This topic contains the original (or at least most recent) request, plus the developer's input on a proposed solution.
viewtopic.php?f=28&t=26166

the 0.15 roadmap also contains the following line:
Allow loading games with different mod settings (and automatically download the mods if necessary)
This leads me to believe they've considering including it in 0.15, however, they could have simply meant that mods enabled are based on a save game, rather than a configuration profile.

Either way, they seem to have something planned.
Creator of Bob's mods. Expanding your gameplay since version 0.9.8.

User avatar
Deadly-Bagel
Smart Inserter
Smart Inserter
Posts: 1493
Joined: Wed Jul 13, 2016 10:12 am
Contact:

Re: idea: selectable mod "profiles"

Post by Deadly-Bagel » Mon Sep 12, 2016 9:09 am

Well as long as they have a screen to select what mods you want to start a game with, shouldn't be too big a problem. Starting games isn't something you do often under normal circumstances, and if it's in the same session it'll probably be remembered like map generation settings. Of course once you've started the game, it will automatically enable/disable your installed mods accordingly.
Money might be the root of all evil, but ignorance is the heart.

golfmiketango
Filter Inserter
Filter Inserter
Posts: 527
Joined: Fri Jan 29, 2016 2:48 am
Contact:

Re: idea: selectable mod "profiles"

Post by golfmiketango » Thu Sep 15, 2016 10:33 am

zebediah49 wrote:What's wrong with a good old

Code: Select all

rm mods && ln -s 0.14_mods/ mods
Bind mounts seems like overkill for this task. (If anything you should just use a COW filesystem and reflinks :) )
I dunno if I agree with you about this. I use a lot of bind mounts:

Code: Select all

greg@moneypit ~ $ grep -c bind /etc/fstab
37
And there are more that I spin up in scripts.

I use them in preference to any kind of COW because I don't have to reconfigure my kernel, think about metadata journaling or do anything crazy to make them work. They've been rock-solid workhorses forever, (except a few rocky months after the introduction of read-only bind mounts a very long time ago).

I love not having to think about tombstones or memory-mapped snapshot storage pools, or any other crazy SAN anti-patterns, when I really just want to make an arbitrary directory hard-link.

Make a bind-mount, and huzzah, another dedup problem solved! If need be you can always go back and make shit more complicated later.

But, obviously, I greatly digress :)
zebediah49 wrote: It's just currently inconvenient to switch profiles.
You can say that again:
zebediah49 wrote: It's just currently inconvenient to switch profiles!
Ever since they added that delete button, whenever I try to mass-deactivate a bunch of mods I accidentally delete about 5% of them, and then, each-and-every-damn-time, I can't tell what it is I've removed, so I have to go my saves and compare the list of mods in the saves to the list of mods in the game, until I find the missing mod. The experience is remarkably reminiscent of trying to pick up a mislaid belt, but forgetting I moved the mouse, and next hearing the dreaded congratulations-you-just-mined-some-unknown-object-so-good-luck-figuring-out-what-the-fuck-it-was "click."

axefrog
Burner Inserter
Burner Inserter
Posts: 18
Joined: Tue Dec 02, 2014 2:51 am
Contact:

Re: idea: selectable mod "profiles"

Post by axefrog » Sat Sep 17, 2016 8:40 am

I've seen a lot of inside-the-box thinking in other threads surrounding this topic. What you want is an actually-good user experience.

Starting a new game:

1. Click "create new game"
2. Select mods you want to use for the game (persisted from the last time you created a new game, and possibly with the option to "save selections as...")
3. Mods are loaded (skip step 2 if no mods are present)
4. Select map start conditions
5. Begin game.

Or for multiplayer:

1. Find and join multiplayer game
2. Required mods are downloaded
3. Game begins

When different versions of a mod are relevant in different contexts:

1. Have a folder for each mod (e.g. /mods/misanthrope)
2. Have a zip file in each mod folder for each version of the mod that that folder represents (e.g. /mods/misanthrope/0.14.5.zip)
3. When creating a new game, always use the newest version of the mod
4. When loading a game or joining a multiplayer game, select the relevant version of each mod
5. Automatically download any required mod versions that are missing

And as a bonus:

A. When I load a savegame, automatically acquire the mods required to satisfy that savegame's dependencies. That way I can share a savegame easily and not have to package up all of the mods as well. This would be particularly useful when helping a mod author debug their mod. I could play to a point where the problem occurs, then send them the zip of my savegame. When they load it up, they'd automatically acquire any required mods, and because versioning would be supported, it wouldn't screw up their existing mod library.

B. When loading mods, only go through the mod loading process if the set of selected mods has changed. The loading of mods should be secondary to the game title area, instead of preceding it. Forcing the game to literally restart because the selected mods have changed is kind of a crude way to do things.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 10467
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: idea: selectable mod "profiles"

Post by ssilk » Sat Sep 17, 2016 10:06 am

axefrog: I really like that. That's how it should be working! :)

Added to viewtopic.php?f=80&t=27805 Suggestion around Game-Internal Mods-Handling/Mods-Management
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

User avatar
aubergine18
Smart Inserter
Smart Inserter
Posts: 1264
Joined: Fri Jul 22, 2016 8:51 pm
Contact:

Re: idea: selectable mod "profiles"

Post by aubergine18 » Sat Sep 17, 2016 2:33 pm

I wouldn't want full mod select screen when starting a game. In fact, most of the time I don't want the full resource config screen either.

1. Simplify startup screen to choice of mod profile (select or create) and resource profile (select or create).
2. Don't call them profiles, call them blueprints: mod blueprints, resource blueprints
2a. Blueprints show how many things enabled out of maximum things (eg. 8/143 mods, 7/27 resources)
3. After creating/selecting mod blueprint, I can setup resource blueprint

SO when I want to start new game: i choose existing resource blueprint (or create new), choose resource blueprint (filtered to blueprints applicable to my mod bluepring) or create new one. Then tweak few generic options (peace mode etc) and start game.

Blueprints - mod, resource, map and factory - can be shared via prints.factorio.com (like a mod portal for blueprints).

As for handling multiple versions of a mod, the mod zips already have the version number in filename so it should be (hopefully) relatively easy for the game to handle that aspect. No need to create separate archives of mod packs. All that's needed are info.json files with the right information in them.

BTW: Dependency fulfilment is still the biggest fail of the mod system - installing a mod should always install dependencies, activating a mod should always activate dependencies. Neither of those things happen at the moment, which is why everyone just copy and pastes code in to their mod rather than using dependencies.
Better forum search for modders: Enclose your search term in quotes, eg. "font_color" or "custom-input" - it prevents the forum search from splitting on hypens and underscores, resulting in much more accurate results.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 10467
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: idea: selectable mod "profiles"

Post by ssilk » Sat Sep 17, 2016 9:16 pm

aubergine18 wrote: 1. Simplify startup screen to choice of mod profile (select or create) and resource profile (select or create).
2. Don't call them profiles, call them blueprints: mod blueprints, resource blueprints
2a. Blueprints show how many things enabled out of maximum things (eg. 8/143 mods, 7/27 resources)
3. After creating/selecting mod blueprint, I can setup resource blueprint

SO when I want to start new game: i choose existing resource blueprint (or create new), choose resource blueprint (filtered to blueprints applicable to my mod bluepring) or create new one. Then tweak few generic options (peace mode etc) and start game.

Blueprints - mod, resource, map and factory - can be shared via prints.factorio.com (like a mod portal for blueprints).
Also nice idea. That hits this topic:
viewtopic.php?f=80&t=13022 World Generation / Map Generator / Game Modes / Scenarios / Biomes

But instead of blueprints (which are just plans), I would prefer something like "Configuration", "Setting", "Preference"....

As for handling multiple versions of a mod, the mod zips already have the version number in filename so it should be (hopefully) relatively easy for the game to handle that aspect. No need to create separate archives of mod packs. All that's needed are info.json files with the right information in them.
This is needed, when you play multiplayer and the server provides an older/newer/different version of your mod than you have installed.


EDIT: Added to viewtopic.php?f=80&t=27805 Suggestion around Game-Internal Mods-Handling/Mods-Management
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

Post Reply

Return to “Ideas and Suggestions”

Who is online

Users browsing this forum: No registered users