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

Add support for the Epic distribution of Skyrim SE / AE #1809

Closed
Ortham opened this issue Oct 6, 2022 · 17 comments
Closed

Add support for the Epic distribution of Skyrim SE / AE #1809

Ortham opened this issue Oct 6, 2022 · 17 comments
Milestone

Comments

@Ortham
Copy link
Member

Ortham commented Oct 6, 2022

Skyrim SE / AE was released on the Epic Games Store today. It would be good to support that distribution of the game, but they're selling SE for £35 and AE for £43 and I don't fancy paying that much for my fourth copy of Skyrim.

If anyone has a copy of Skyrim from EGS and would like LOOT to support it, I probably only need the following information:

  • What Registry keys exist that point to the game's install path (the one that contains SkyrimSE.exe)
  • What the game's local app data path is (e.g. C:\Users\<user>\AppData\Local\Skyrim Special Edition is the Steam release's path)

pStyl3 provided this information and more for the recent GOG release in #1802, see that issue for examples of what's needed.

No other Elder Scrolls or Fallout game is currently on EGS.

@BeermotorWB
Copy link

It looks to be very similar to the GOG version as far as paths go, just replace GOG with EPIC.
The executable version is 1.6.678.

@BeermotorWB
Copy link

md5sums for Steam, GOG, and Epic

Steam
a9a76ca74c41c09746486325df935480  ./Skyrim.esm
97540ec27c60c0aa72feafb0e6fecb19  ./Update.esm
eb61a975d63e91269cdbfcec4d07eace  ./Dawnguard.esm
d1f7497c93c249ac76c8e348235f9a47  ./Dragonborn.esm
e4fb48be1df21a8bd3c64ec990116b81  ./HearthFires.esm

EPIC
d06798e39b9eece7bc3ac48c33e35e62  ./Skyrim.esm
ae84a1815a793e393c57cdce5e1acb22  ./Update.esm
2e78ec15957dd0ca094381f7d899a94b  ./Dawnguard.esm
e9bf8bdec0f42b8bd7033df829d54d5f  ./Dragonborn.esm
e4e1f7ce5afd105d22e16aa86151b784  ./HearthFires.esm

GOG
14dc786feecc692d805c41ae25d2ff8a  ./Skyrim.esm
a1252426acbafe9217cb300891302661  ./Update.esm
47a5ab81f1069a4c4901874746c34c83  ./Dawnguard.esm
29d9bfbee236e9e86d655aa51fdac957  ./Dragonborn.esm
92c214a00afdf1c8bde308609300cc37  ./HearthFires.esm

@Silarn
Copy link

Silarn commented Oct 7, 2022

Though various sources I believe this may be correct info (I can't verify as I don't own it).

The directories have been renamed to "Skyrim Special Edition EPIC".

The AppId in the Epic Games manifest file is "ac82db5035584c7f8a2c548d98c86b2c". In the MO2 basic games code, we parse the manifest files in the C:\ProgramData\Epic\EpicGamesLauncher\Data\Manifests directory and search for the AppId matching whatever game we're searching for.

In the matching manifest, you can parse the "InstallLocation" for the game directory.

Unless Skyrim is an exception, the Epic Launcher doesn't create registry entries for the game location.

Typically Epic Games packs the game exe with a copy of EOSSDK-Win64-Shipping.dll though I can't verify that.

@sibir-ine
Copy link
Member

Thanks for the info, both of you! If SSE doesn't have EOSSDK-Win64-Shipping.dll, it should have a .egstore directory. @BeermotorWB, if you could verify Silarn's info, we'd appreciate it.

@BeermotorWB
Copy link

Confirmed Epic version has EOSSDK-Win64-Shipping.dll

@sibir-ine
Copy link
Member

Also, can you please verify that it doesn't write to the Bethesda Softworks registry (i.e., Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Bethesda Softworks\Skyrim Special Edition)?

@BeermotorWB
Copy link

BeermotorWB commented Oct 7, 2022

Masterlist entries for the Epic masters:

Update.esm

  - name: 'Update.esm'
    dirty:
      - <<: *reqManualFix
        crc: 0x0572C368
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        itm: 384
        udr: 92
        nav: 3
    dirty:
      - <<: *reqManualFix
        crc: 0x2BABA088
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        nav: 3

Dawnguard.esm

  - name: 'Dawnguard.esm'
    dirty:
      - <<: *reqManualFix
        crc: 0x02A487C1
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        itm: 842
        udr: 82
        nav: 59
    dirty:
      - <<: *reqManualFix
        crc: 0xE0D5302B
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        itm: 7
        nav: 59
    dirty:
      - <<: *reqManualFix
        crc: 0x63B4EBD1
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        nav: 59

Dragonborn.esm

  - name: 'Dragonborn.esm'
    dirty:
      - <<: *reqManualFix
        crc: 0xAF3D8E37
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        itm: 87
        udr: 8
        nav: 1
    dirty:
      - <<: *reqManualFix
        crc: 0xBF147A1A
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        nav: 1

Hearthfires.esm

  - name: 'HearthFires.esm'
    dirty:
      - <<: *reqManualFix
        crc: 0x53C7FE02
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        itm: 221
        udr: 11
        nav: 5
    dirty:
      - <<: *reqManualFix
        crc: 0x71238463
        util: '[SSEEdit v4.0.4](https://www.nexusmods.com/skyrimspecialedition/mods/164)'
        nav: 5

@BeermotorWB
Copy link

Also, can you please verify that it doesn't write to the Bethesda Softworks registry (i.e., Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Bethesda Softworks\Skyrim Special Edition)?

On my test laptop I uninstalled all Skyrims and removed all registry entries. The Epic installer and later the launcher does not appear to populate the expected registry keys on a reinstall.

@sibir-ine
Copy link
Member

From the xSE Discord & ianpatt/skse64@2b79a3b, it looks like SKSE won't be supporting the EGS version for the time being.

@Ortham
Copy link
Member Author

Ortham commented Oct 7, 2022

I've added support for detecting Epic installs in the epic-skyrimse branch, can someone who has Skyrim SE installed from the Epic Games Store try it out and let me know if it works or not? @BeermotorWB?

You may have to make sure the game's install path and registry keys are empty in LOOT's settings, as LOOT will try to use them first.

@sibir-ine
Copy link
Member

sibir-ine commented Oct 7, 2022

Looks like Nexus's modding wiki has some info on EGS game detection. We know most of it already, but this bit might be useful:

To find where [the Epic Games launcher manifests] are stored, you can check the AppDataPath key under HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Epic Games\EpicGamesLauncher in the registry.

I can confirm this on my end, so it might be a more reliable way of finding that folder.

Also, the AppName isn't used for the name of the .item file, it's actually an attribute called InstallationGuid. I don't know if its value is universal like AppName, so we may have to parse through each .item file until we find one with the right AppName. There's also a separate AppName for the AE version, 5d600e4f59974aeba0259c7734134e27; we may want to prioritize it if we find both.

std::string GetEgsManifestFilename(GameType gameType) {
switch (gameType) {
case GameType::tes5se:
return "ac82db5035584c7f8a2c548d98c86b2c.item";
default:
throw std::logic_error("Unsupported Epic Games Store game");
}
}

There's also apparently a third-party launcher for EGS called Legendary that @Infernio added support for in Wrye Bash in wrye-bash/wrye-bash@f0dcc62 (look for _find_legendary_games). Hopefully, they can share their findings when they have the chance.

@Ortham
Copy link
Member Author

Ortham commented Oct 7, 2022

Oh, so what I've done won't work then.

@BeermotorWB Can you share the full contents of the manifest files for Skyrim SE / AE? (You might want to censor your username if it appears anywhere.)

@BeermotorWB
Copy link

@BeermotorWB Can you share the full contents of the manifest file for Skyrim SE? (You might want to censor your username if it appears anywhere.)

Epic Manifest for Skyrim SE

SkyrimSE Epic Manifest file 20221007.zip

@Ortham
Copy link
Member Author

Ortham commented Oct 7, 2022

Epic Manifest for Skyrim SE

SkyrimSE Epic Manifest file 20221007.zip

Thanks!

I've updated the epic-skyrimse branch, game detection should hopefully work now, can someone test?

@sibir-ine sibir-ine added this to the 0.18.6 milestone Oct 8, 2022
@BeermotorWB
Copy link

BeermotorWB commented Oct 11, 2022

Did a quick run through with the CI build

  • Simply removing Steam install and switching to Epic install without removing existing data in %USERPROFILE%\AppData\Local\LOOT raises an error.
  • Clean install with no existing %USERPROFILE%\AppData\Local\LOOT or Steam Skyrim paths works as expected.

Testing notes are attached.

LOOT-18.6_testing_notes-20221011.zip

@Ortham
Copy link
Member Author

Ortham commented Oct 12, 2022

Thanks @BeermotorWB! The error is expected, I think it could be more surprising if you have both installed and LOOT silently switches to the Epic one if the Steam install goes missing for whatever reason, and users can always update / remove the install path in LOOT's settings.

Closing this as done as of 59b6d20.

@Ortham Ortham closed this as completed Oct 12, 2022
@sibir-ine
Copy link
Member

Looks like FO3 will be on EGS as well in a week. However, it'll be free to claim for a week, so that'll make testing easier at least.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

4 participants