Automation Survey: Difference between revisions

From Step Mods | Change The Game
(Adding some content through download + unpack / install for mods and third-party tools. Making a checkpoint here because I get really nervous when I have a text box that has lots of unsaved changes in it.)
m (→‎Automation Opportunities?: creator's --> owner's)
Line 58: Line 58:
     I discussed automated downloading with Dark0ne, and it's not something he would like us to do for the foreseeable future. I feared as much, and it would indeed screw up the way the Nexus registers downloads, endorsements, etc. He suggested we could do something similar with a plugin for NMM, but that this might mean reduced ad revenue, with fewer eyes on the site. I told him we wouldn't want to do anything that harms the Nexus, so I think automatic downloading should be considered a non-starter. I did, however, suggest that he might like to implement mod collections formally on the Nexus, with perhaps automatic downloading of the collections as a premium feature. I'll let you know what he thinks of that.
     I discussed automated downloading with Dark0ne, and it's not something he would like us to do for the foreseeable future. I feared as much, and it would indeed screw up the way the Nexus registers downloads, endorsements, etc. He suggested we could do something similar with a plugin for NMM, but that this might mean reduced ad revenue, with fewer eyes on the site. I told him we wouldn't want to do anything that harms the Nexus, so I think automatic downloading should be considered a non-starter. I did, however, suggest that he might like to implement mod collections formally on the Nexus, with perhaps automatic downloading of the collections as a premium feature. I'll let you know what he thinks of that.


Unless / until Dark0ne pivots on that, STEP solutions should respect that.  Skyrim Nexus has been a major part of the STEP story, and it would be extremely impolite to go against the creator's wishes.
Unless / until Dark0ne pivots on that, STEP solutions should respect that.  Skyrim Nexus has been a major part of the STEP story, and it would be extremely impolite to go against the owner's wishes.


What we '''can''' do here without being bad people:
What we '''can''' do here without being bad people:

Revision as of 00:30, September 5, 2016

Overview[edit | edit source]

At the time of writing, the process of setting up STEP can be quite painful. There are many manual steps in the process. Some of these steps have to be done in a particular order, but others can be done in parallel. Some of these steps have to be done manually, whereas others can be automated. The goal of this page is to do a survey of what it takes to go from "I just bought Skyrim Legendary Edition on Steam!" to a working STEP system (with zero or more packs installed on top of STEP Core, perhaps with different Mod Organizer profiles), and what parts of that process can be automated.

Glossary[edit | edit source]

Special terms used on this page:

  • [RR] = Research Required. This section can be improved by spending some time looking into specifics.
  • [N2H] = Nice-to-Have. This idea could be skipped entirely, and most users probably wouldn't mind.
  • [INC] = Incomplete. This section is just a placeholder and needs to be filled in.

Automation[edit | edit source]

In general, "automation" here refers to using a tool of some sort to perform a process without user interaction that would have otherwise required it. Automation is highly desirable for STEP for these reasons:

  1. The automated parts should run much faster than otherwise
  2. Reduces the number of ways users can make mistakes during the setup process
  3. Reduces the burden on a user to have to learn how to use several different power-tools
  4. Simplifies the setup process, bringing in more users; some of these users may become contributors themselves

Automation does, however, have some disadvantages:

  1. Expensive to set up in the first place: the time we spend automating STEP is time we could have spent improving something else
  2. May not help "advanced" / "power" users who want to deviate slightly from what the guide recommends

STEP Setup Process[edit | edit source]

At a high level, this is what the STEP setup process looks like. High-level sections should more-or-less correspond to the STEP guide.

Install Skyrim[edit | edit source]

Install the latest version of Skyrim, with all official DLC, cleanly (no local modifications).

Automation Opportunities?[edit | edit source]

Assuming that the user has purchased a legitimate copy of Skyrim with all official DLC, Steam handles this entire process for us. Still, this step requires transferring multiple gigabytes of data over a potentially slow network connection and writing it to potentially slow persistent storage, so there are some opportunities here.

  1. [RR] Can SteamCMD be used to check if Skyrim is owned with all DLC, download if not present, and verify local cache if it is present? If not, we can fall back to AutoIt / AutoHotKey scripts to run through the Steam client UI, but that feels tricky and fragile.
  2. [RR] / [N2H] Can we install a separate instance of Skyrim to cover cases where users have been having a jolly old time with their install, maybe even with a few Steam Workshop mods here and there, and don't want to abandon their old saves etc. until they've had some time playing around with STEP? Piggy-backs off of the SteamCMD idea above.

Initialize Basic Structures (Skyrim Launcher)[edit | edit source]

Initialize the structures that the Skyrim Launcher initializes when it starts up: registry keys, baseline INI files stuff.

Automation Opportunities?[edit | edit source]

We can automate the creation of the corresponding registry keys, but that feels sketchy. Having a one-off AutoIt / AutoHotKey script open the launcher and click through to exiting it probably wouldn't be the end of the world.

INI file stuff might be handled by the section that's dedicated to INI tweaks, but we might as well copy the baseline INI files to the place where the Skyrim Launcher would have copied them, because it's really awkward trying to launch vanilla Skyrim using TESV.exe without ever having run the launcher.

Tweak INI Files[edit | edit source]

Change vanilla configuration options stored in INI files.

Automation Opportunities?[edit | edit source]

Easy to automate without having to open the launcher. We can probably just distribute fully baked INI files crafted for whatever setup we're automating. If that's not cool for one reason or another, we can probably have the tool start from the Bethesda-provided baselines instead and apply specific changes to the defaults instead.

Update & Tweak Graphics Drivers[edit | edit source]

Get the latest-and-greatest graphics drivers for your system, and tweak certain options according to the STEP guide's recommendations.

Automation Opportunities?[edit | edit source]

We're pretty limited here, and all the work has to be done pretty much twice (once for AMD, once for NVIDIA). At best, we can maybe detect AMD / NVIDIA and point the user to the corresponding wiki page. Fortunately, this can be done pretty much any time before the user goes to run the game for the first time, so this step isn't a blocker for the rest of the setup process.

  1. [RR] / [N2H] Maybe a pack can say "when this was released, the latest AMD driver version was FOO and the latest NVIDIA driver version was BAR", and then if we detect a lower version, we warn the user?
  2. [RR] / [N2H] Could we maybe host a web service that just provides a static JSON document describing the latest graphics driver versions for AMD / NVIDIA?

Calibrate Display[edit | edit source]

Make it so your computer screen shows the same lights as other people's lights for a given picture shown by your computer.

Automation Opportunities?[edit | edit source]

See comments on Graphics Drivers. This can even be skipped entirely without much harm.

Download Mods & Third-Party Tools[edit | edit source]

Grab the latest or specified versions of over 100 files, nearly all of which are hosted on Skyrim Nexus.

Automation Opportunities?[edit | edit source]

As painful as this process is for users, and as (comparatively) easy as it would be for us to automate, opportunities are limited on this one. According to MontyMM in forum thread "Skyrim Nexus Downloader", Dark0ne (the owner and administrator of all Nexus sites) has explicitly discussed his wishes for automated downloading:

   I discussed automated downloading with Dark0ne, and it's not something he would like us to do for the foreseeable future. I feared as much, and it would indeed screw up the way the Nexus registers downloads, endorsements, etc. He suggested we could do something similar with a plugin for NMM, but that this might mean reduced ad revenue, with fewer eyes on the site. I told him we wouldn't want to do anything that harms the Nexus, so I think automatic downloading should be considered a non-starter. I did, however, suggest that he might like to implement mod collections formally on the Nexus, with perhaps automatic downloading of the collections as a premium feature. I'll let you know what he thinks of that.

Unless / until Dark0ne pivots on that, STEP solutions should respect that. Skyrim Nexus has been a major part of the STEP story, and it would be extremely impolite to go against the owner's wishes.

What we can do here without being bad people:

  1. Detect which archive files we don't have to download, because we've already downloaded the same version earlier and we haven't deleted it yet.
  2. Point the user's web browser at one or more mod pages on Skyrim Nexus, with instructions saying which exact files to download.
  3. Download from sources who are explicitly open to automation, where the mod author has given permission (many mod authors forbid rehosting their mods outside of a particular source).

Unpack / Install Mods & Third-Party Tools[edit | edit source]

Extract subsets of the contents of archives downloaded before, to various locations. Typically, this is a location within Mod Organizer's "mods" folder, but a few things are special.

Many mods include a "fomod", which effectively allows a user to interactively choose what subsets of the archive to extract to which target locations in a very friendly way.

Automation Opportunities?[edit | edit source]

This is likely the most painful part of the process that automation can improve significantly.

Things to touch on ([INC]):

  1. Handle "simple" archives that Mod Organizer would be able to automatically install without even asking the user to set the Data directory.
  2. Handle archives that contain a single "Data" directory and perhaps some loose README-like metadata files.
  3. Handle complicated archives with different sets of options, likely with a "fomod". Most likely, the pack creator would need to be able to describe exactly which files go exactly where.
  4. Handle mods with multiple archives that expect to be installed via a "Merge".
  5. Consider cases where mods do not need to be modified at all between STEP version upgrades, and thus the user does not need to do anything about them.
  6. Consider mods that get installed in "Configuration A" for STEP Core, or "Configuration B" for a STEP Pack.

Apply Patches[edit | edit source]

Typically contained within the mods.

[INC]

Finalize Mod Organizer Profile[edit | edit source]

Includes running LOOT.

[INC]

Add Packs (if any)[edit | edit source]

[INC]