Skip to content

Releases: derrod/legendary

0.20.24 - "Follow Freeman!" (Hotfix #1)

09 Jan 23:55
Compare
Choose a tag to compare

0.20.24 Hotfix Notes

  • Fixed aliases for old command names not actually working (whoops)

Original 0.20.23 Release

This is the biggest release in quite a while, intended to make using Legendary on Macs easier than ever before, and bringing some previously missing overlay features to Windows. Of course, there are improvements and bug fixes for Linux users as well.

CrossOver integration (macOS)

legendary_0 20 23_mac_demo

This release adds integration with CrossOver to make running Windows games on your Mac as easy and seamless as possible.
After a brief one-time setup, games can be run immediately after installing with zero additional configuration required.
Thanks to CodeWeaver's work on CrossOver and DXVK-on-Metal many titles will "just work".

If you wish to purchase a copy of CrossOver you can support Legendary development (♥) and save a bit by purchasing it through my affiliate link and using the promo code LEGENDARY15 on https://www.codeweavers.com/store.

Of course it is still possible to configure which bottles to use, which CrossOver version to run, etc. Either via new config and command line parameters or the new crossover command or --crossover launch option which will provide an interactive setup allowing you to select a version and bottle to use on a per-game basis or as the default.

In addition to the semi-automatic setup Legendary also offers an experimental fully automatic setup (just requires CrossOver to be installed). The new crossover --download option makes it possible to download and set-up preconfigured Bottles and get started in no time. Currently this offers a clean default bottle as well as one set-up for Rocket League, but this may be expanded upon in the future.
This feature is experimental and not supported by CodeWeavers, please only report issues on the Legendary Discord or this repo.

As part of this effort a few workarounds for games have already been added to the Wiki, and this will be expanded upon more in the future as people try games and discover compatibility issues and work out how to fix them.

Also see full setup guide on the Wiki: https://github.com/derrod/legendary/wiki/CrossOver-Setup-(macOS)

Currently I have no plans on expanding this to Linux, as the community-driven support for Wine and sorrunding toolset is very good there compared to macOS, but if there's demand for supporting CrossOver on Linux I may look into expanding it to that in the future.

Finally, I'd like to thank the folks over at CodeWeavers for answering a whole bunch of my questions that helped make this possible, and also for providing me with the promo code mentioned above!

EOS Overlay Management (mainly Windows)

With this release it becomes possible to install and manage the Epic In-Game Overlay on your machine to use social features and view achievments without having to install the Epic Games Launcher. It's also possible to disable or enable the overlay at will without having to uninstall it.

Currently the overlay only works on Windows, but installation into Wine prefixes or Bottles is possible in case it starts working with a new overlay and/or Wine version. Or if there's a game that for some reason requires it to be running, even if it's not functional on Linux/Mac.

Default Installation Directory Changes

The default installation directory has been changed to ~/Games for Windows titles, and ~/Applications for Mac-native applications. This does not affect existing installations and can be changed with the install_dir and mac_install_dir config variables.

Additionally, this release provides the new move command to make it easier to move currently installed games to a new location (see commands section below for details).

Pre-Launch Commands

Commands can now be run before the game is launched via the pre_launch_command configuration option. This can be set globally or per-game and allows running any application or script before or as the game is being launched (depending on the pre_launch_wait setting).

The use cases for this include things like changing power-saving mode when launching a game, automatically starting a recording, etc. I'm sure people will find good uses for it.

CLI Changes

As part of this release several things were cleaned up and changed in the Command Line Interface, this includes re-ordering commands to be in alphabetical order, renaming a few of them to remove unnecessary parts, and also not showing the wall of text that is the full help unless -H/--full-help is specified. Also some whitespace was added around important messages that would otherwise be somewhat drowned out by the rest of the output.

One of the changes in this update is a new message shown when finalsing a game install that notifies the user about known workarounds or fixes for the selected title on their current operating system.
This largely draws upon the work of @CommandMC and his EpicLinux Wiki, with some additional entries pulled from the Legendary Wiki itself (mainly for macOS).
This feature is something I do want to build upon in the future to provide more info about game compatibility directly within Legendary.

General

  • Added -A/--api-timeout parameter to change the HTTP request timeout for the Epic API (default: 10 seconds)
  • Added -H/--full-help flag to show full help (all commands) rather than just the list of commands
  • Deprecated and hid -c/--config-file option, which will be removed in the future as it has caused more issues than it solves

Commands

  • crossover [new]
    • Usage: legendary crossover [App Name]
      • This will run an interactive setup to select the CrossOver version (if more than one) and Bottle to use for an app or as the default (if no app name specified)
    • --crossover-bottle and --crossover-app can be used to skip the respective interactive selection
    • --reset can be used to remove the current selection from the config
    • --download (experimental)
      • With this option a selection of preconfigured bottles that are available for download will be shown instead, including recommendations depending on the specified app name
      • If a bottle is selected it will be downloaded and set up automatically, it can be reconfigured using CrossOver later, but is generally intended to work out of the box
      • When --ignore-version is specified all Bottles will be shown, regardless of the versions they're marked as compatible with
  • eos-overlay [new]
    • Usage: legendary eos-overlay <subcommand>
    • Subcommands:
      • install/update/remove - download and install or uninstall the overlay (default: ~/Games/.overlay)
      • enable/disable - add/remove the registry entries used by the EOS SDK to find the overlay installation to load
      • info - prints some information about the current registry configuration and overlay install (if any)
    • --path can be used to override the installation location or overlay install to "enable"
    • --prefix/--bottle to specify wine prefix/bottle to enable overlay in, if set in the config --app <app name> can be used instead
  • install
    • Will now fall back to "Windows" by default if the specified platform is not available (this can be disabled in the config)
    • Will now show a notice on game workarounds after finishing the installation
  • launch
    • --crossover flag to go through interactive setup (like crossover command), but immediately launch the game after
    • --crossover-app and --crossover-bottle parameters to specify or override the used version and bottle
  • move [new]
    • Usage: legendary move <app name> <new location>
      • For example: legendary move sugar ~/Games will move the RocketLeague game folder from its previous location into ~/Games
    • --skip-move flag to only update the Legendary database, without actually moving the game files
      • Moving currently only works on the same drive, so this allows to easily and safely update the installed games database after a manual move
  • verify
    • Now shows average read speed during the verification process
    • Also shows verification process on a per-file basis for "large" files (>= 512 MiB)

Renamed commands:

  • import-game => import
  • list-games => list
  • verify-game => verify

The old command names will still work as aliases, but those may be removed in the future.

Config Changes

Per-app settings:

[App Name]
; A command to run before launching the gmae
pre_launch_command = /path/to/script.sh
; Whether or not to wait for command to exit before starting the game
pre_launch_wait = false

macOS specific

Legendary settings:

[Legendary]
; Fallback to "Windows" platform if native version unavailable
install_platform_fallback = true
; Disable automatic CrossOver use
disable_auto_crossover = false
; Default directory for native Mac applications (.app packages)
mac_install_dir = /User/legendary/Applications

Per-app settings:

[App Name]
crossover_app = /Applications/CrossOver.app
crossover_bottle = Legendary

Miscellaneous changes and improvements

  • Add support for legacy Wine appdata paths in save game path resolver
  • Fixed importing games with EGL sync enabled (#391)
  • Fixed reading EGL metadata on non-English Windows installs (#383)
  • Fix case-insensitive path resolver on Linux
  • Fix required disk size calculation during install, again, but once and for all
  • F...
Read more

0.20.23 - "Follow Freeman!"

09 Jan 18:17
Compare
Choose a tag to compare

This release had an issue, please use 0.20.24 instead: https://github.com/derrod/legendary/releases/tag/0.20.24

(Binaries retained for archive purposes)

0.20.22 - Anticitizen One (hotfix #3)

21 Dec 23:19
Compare
Choose a tag to compare

Another smaller hotfix to address some outstanding issues before my Christmas break:

  • Re-enabled selective downloading (SDL) on macOS and added definintion files for macOS to the API
  • Fixed repair when the installed manifest is unavailable for some reason (#380)
  • Fixed cleanup command which was broken after adding macOS support
  • Disabled semi-automatic Origin activation on Linux (for now) and show instructions for manual process instead
  • Added external_activation to info command output to note if a game requires activation via Origin or Uplay

Also check out the previous 0.20.19 release and 0.20.20/21 hotfixes:

0.20.21 - Anticitizen One (hotfix #2)

12 Dec 22:47
Compare
Choose a tag to compare

Small hotfix release to address some issues that have cropped up recently.

  • import-game Command
    • Fixed check for game executable not working
    • Will now always abort if no game files are found
    • Will now suggest adding the default game installation directory if it's not already present in the user-supplied path
  • activate Command
    • Uplay DLC is now also checked for outstanding activations

Also check out the previous 0.20.19 release and 0.20.20 hotfix:

0.20.20 - Anticitizen One (hotfix)

08 Dec 12:23
Compare
Choose a tag to compare

This is a small hotfix release to resolve some issues with 0.20.19 as well as some small (backwards-compatible) change to the CLI.

  • list-games
    • Now also shows a notice about activation for Ubisoft titles
    • --include-non-installable has been renamed to -T/--third-party. The old name may be removed in a future release
  • activate
    • Added -U shortcut and --ubisoft alias to --uplay option
    • Added -O/--origin option to activate origin games
      • This is a slower and more manual process compared to Uplay and requires user-interaction for each title
  • SDL (selective downloading) is now disabled when using macOS versions as there are no Mac SDL definition files available at the moment
  • Fixed metadata not being updated when 5 or fewer titles were updated

Also check out the full 0.20.19 changelog: https://github.com/derrod/legendary/releases/tag/0.20.19

0.20.19 - Anticitizen One

03 Dec 22:12
Compare
Choose a tag to compare

legendary_multiplatform_version

Two major features, a whole bunch of bugfixes, please don't break it too quickly!

macOS support

Legendary now supports macOS out of the box, both native and Windows titles (through WINE) can be installed and launched.
Cloud saves are also supported, as well as most other features. Syncing installed games with the Mac version of the Epic Games Launcher is unsupported however (no ETA).

When using legendary on macOS it will now prefer native titles by default, to list/download Windows titles use --platform Windows or change the default_platform configuration variable.

Note that due to a bug in PyInstaller the provided binary is x86 only. This will change once PyInstaller releases a fixed version.

Uplay / Ubisoft game activation

Rejoice a long-standing problem (issue #69, nice) is finally solved! The new activate command allows for activating Uplay titles purchased/claimed on the Epic Games Store to be activated on your Ubisoft account. They can then be installed directly via Uplay, no third-party launcher needed.

To activate your titles simply run legendary activate --uplay, if you do not have a Ubisoft account linked yet simply follow the instructions provided.

CLI Changes

  • activate [New]
    • Currently only supports Uplay via --uplay parameter
    • After acivating your games they will be available for install in Uplay, installation via Legendary is not required
  • import-game
    • Added --platform parameter, defaults Windows on Linux/Windows and Mac on macOS
  • info
    • Will now show macOS version/cloud save information if available
    • Added --platform parameter, defaults Windows on Linux/Windows and Mac on ma
  • install
    • --platform no longer disables installing, defaults Windows on Linux/Windows and Mac on macOS
    • Improved the visibility of pre-install warnings to make it more clear when games have potential issues (e.g. using anti-cheat, or requriing Uplay)
  • list-files/list-games
    • --platform parameter now defaults to Windows on Linux/Windows and Mac on macOS
  • list-installed
    • Now displays platform for each installed gamecOS
  • status
    • Includes current OS and version for issue submissions
  • sync-saves
    • Now supports native macOS titles

Miscellaneous fixes and improvements

  • Improved speed of metadata updates by using multithreaded requests
  • Addeddefault_platform config value to override OS-detection based selection (Mac on macOS, Windows everywhere else)
  • The update notification now includes the download URL for the new release for direct wget'ing (or curl'ing if that's more your thing)
  • Improved manifest parser to be forwards-compatible but warn users about potential issues
  • Fixed a crash if metadata for DLCs is missing for some reason (still investigating how that happens)
  • Various backend improvements to allow for mixing installed platforms
    • If you have debug logging enabled you may see some warnings about files not being found or being invalid, those can be ignored as they simply trigger the rebuild of the affected files into the new format/naming convention
  • Fixed required disk space calculation (again, for like the fifth time)
  • Added feature to downloader to make files executable (for macOS)

As a sidenote, the repo now includes a Kaitai Struct definition file for Epic's binary manifest format: doc/ue_manifest.ksy

0.20.18 - Entanglement (EGL Sync Hotfix)

29 Oct 10:46
Compare
Choose a tag to compare

This is a quick hotfix to fix syncing with EGL version 13.0.6 or newer. Currently it will work but show a warning, a future version will fix this properly.

Bug fixes and improvements

  • Skip over unknown data in file manifest list
  • Allow specifying base-url when no saved base urls present

Original 0.20.17 Changelog

CLI Changes

  • clean-saves [new]
    • Deletes old cloud saves that no longer have their corresponding chunk files present (this can happen if EGL is used as it removes duplicate save data)
    • --delete-incomplete to also delete a cloud saves if it's only partially missing
  • download-saves/sync-saves
    • If a save's data is no longer present, legendary will now suggest to run clean-saves and try again
  • info
    • Will now show an error if no information is available
    • Ensure empty items in JSON output are null instead of an empty object
  • install
    • If a game managed by a third party store (e.g. Origin) is selected the installation will now abort

Fixes and Improvements

  • Several fixes to save game path resolution
    • The {AppData} variable will now correctly resolve to %LOCALAPPDATA% rather than %APPDATA%
    • On Linux save paths now attempt to resolve case-insensitively to avoid some issues with game metadata specifying all-lowercase paths
  • Prevent app name colliding with itself when generating aliases
  • When uninstalling, only attempt to delete game files that should be installed based on selected install tags
  • Metadata for apps that are no longer available (e.g. refunded, free weekend, after switching accounts) will be deleted from disk
  • --csv/--tsv line endings are now explicitly set to \n to prevent issues when piping the output on Windows

0.20.17 - Entanglement

23 Oct 12:33
Compare
Choose a tag to compare

This is yet another release mostly fixing a few issues and providing a new command to clean cloud saves that have become obsolete/corrupt.

CLI Changes

  • clean-saves [new]
    • Deletes old cloud saves that no longer have their corresponding chunk files present (this can happen if EGL is used as it removes duplicate save data)
    • --delete-incomplete to also delete a cloud saves if it's only partially missing
  • download-saves/sync-saves
    • If a save's data is no longer present, legendary will now suggest to run clean-saves and try again
  • info
    • Will now show an error if no information is available
    • Ensure empty items in JSON output are null instead of an empty object
  • install
    • If a game managed by a third party store (e.g. Origin) is selected the installation will now abort

Fixes and Improvements

  • Several fixes to save game path resolution
    • The {AppData} variable will now correctly resolve to %LOCALAPPDATA% rather than %APPDATA%
    • On Linux save paths now attempt to resolve case-insensitively to avoid some issues with game metadata specifying all-lowercase paths
  • Prevent app name colliding with itself when generating aliases
  • When uninstalling, only attempt to delete game files that should be installed based on selected install tags
  • Metadata for apps that are no longer available (e.g. refunded, free weekend, after switching accounts) will be deleted from disk
  • --csv/--tsv line endings are now explicitly set to \n to prevent issues when piping the output on Windows

0.20.16 - Nova Prospekt (hotfix #2)

10 Oct 15:44
Compare
Choose a tag to compare

0.20.16 Hotfix notes

Yet another hotfix to fix further issues with the webview based login and some other minor issues.

Fixes and improvements

  • Disabled webview login on Windows unless WebView2 is available (should be the case on any reasonably up to date Windows 10/11)
  • Show error when attempting to verify/update a game installation in a directory that no longer exists
  • Corrected Origin launch URL construction to match EGL
  • Fixed launch --dry-run not working for Origin titles
  • DLC can now be uninstalled separately from the main game
  • info Command
    • Now works correctly for apps without assets (e.g. Origin games)
    • Now shows a breakdown of install/download size by install tag
    • No longer prints headers for empty sections

0.20.15 Hotfix notes

This is a hotfix to address two potential crashes, one of which had been reported on AUR.

Bug fixes

  • Catch exception in the aliasing system when a game name (or part thereof) only contains prepositions
  • General catch-all for exceptions raised by the webview module with a note on how to disable it

Original 0.20.14 Changelog

Release Highlights

Starting with this release Legendary offers the option to log into your Epic account via an embedded web view. This greatly simplifies the sign-in process for first-time users or those not all too familiar with the technical language used during the manual login flow.

legendary_gui_login

This feature is already available in the Windows binaries and can be easily installed on most Linux distributions. The prebuilt Linux binaries do not currently support it but may in the future.

Installation notes

  • Windows: use the prebuilt .exe or install legendary via pip install legendary-gl[webview] - no further dependencies required!
  • Linux:
    1. Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using pip install -U legendary-gl[webview])
    2. Install PyGObject
      • On Debian/Ubuntu this can be done via sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
      • See the PyGObject documentation for instllation instructions for other systems
  • macOS: unsupported

Notes for third-party package maintainers

Legendary requires pywebview of version 3.4 or higher. If your distribution provides recent enough packages for pywebview you can add it and its dependencies for one of its supported web engines to your legendary package. See the pywebview documentation for details.

While pywebview supports both Qt (QtWebKit / QtWebEngine) and GTK (WebKit2) as rendering engines, only GTK has been tested extensively and is the recommended option.

Should you want/need to use Qt as the dependency in your package please make sure all login options work correctly. At least in my testing on my build machine (running an older Ubuntu LTS release) Qt did not function correctly in some cases.

CLI changes

  • alias command
    • alias add <app name> <alias> will now also resolve aliases used in place of the app name
  • auth command
    • --disable-webview flag to force manual authentication flow even if webview is available
    • Pasting the complete JSON response during manual login will also work if user is unsure what they're supposed to copy
  • install command
    • --skip-dlcs flag to skip asking if the user wants to install DLCs
  • import-game command
    • No longer allows for installing DLC without the base game already being installed (#351)
    • Will now ask the user if they want to import DLC like install does.
    • --with-dlcs flag to automatically attempt to import all DLC
    • --skip-dlcs flag to skip asking if the user wants to import DLCs

Bug fixes and improvements

  • Use exponential backoff when downloading a file fails to avoid runaway CPU usage (#347)
  • Legendary does no longer attempt to read ".egstore" folder for DLC when importing
  • No more re-login after client has already logged in once (unless session is about to expire), e.g. when installing DLC
  • Added pywebview as optional dependency in setup.py to make legendary[webview] option available via PyPI

0.20.15 - Nova Prospekt (hotfix)

09 Oct 12:54
Compare
Choose a tag to compare

0.20.15 Hotfix notes

This is a hotfix to address two potential crashes, one of which had been reported on AUR.

Bug fixes

  • Catch exception in the aliasing system when a game name (or part thereof) only contains prepositions
  • General catch-all for exceptions raised by the webview module with a note on how to disable it

Original 0.20.14 Changelog

Release Highlights

Starting with this release Legendary offers the option to log into your Epic account via an embedded web view. This greatly simplifies the sign-in process for first-time users or those not all too familiar with the technical language used during the manual login flow.

legendary_gui_login

This feature is already available in the Windows binaries and can be easily installed on most Linux distributions. The prebuilt Linux binaries do not currently support it but may in the future.

Installation notes

  • Windows: use the prebuilt .exe or install legendary via pip install legendary-gl[webview] - no further dependencies required!
  • Linux:
    1. Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using pip install -U legendary-gl[webview])
    2. Install PyGObject
      • On Debian/Ubuntu this can be done via sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
      • See the PyGObject documentation for instllation instructions for other systems
  • macOS: unsupported

Notes for third-party package maintainers

Legendary requires pywebview of version 3.4 or higher. If your distribution provides recent enough packages for pywebview you can add it and its dependencies for one of its supported web engines to your legendary package. See the pywebview documentation for details.

While pywebview supports both Qt (QtWebKit / QtWebEngine) and GTK (WebKit2) as rendering engines, only GTK has been tested extensively and is the recommended option.

Should you want/need to use Qt as the dependency in your package please make sure all login options work correctly. At least in my testing on my build machine (running an older Ubuntu LTS release) Qt did not function correctly in some cases.

CLI changes

  • alias command
    • alias add <app name> <alias> will now also resolve aliases used in place of the app name
  • auth command
    • --disable-webview flag to force manual authentication flow even if webview is available
    • Pasting the complete JSON response during manual login will also work if user is unsure what they're supposed to copy
  • install command
    • --skip-dlcs flag to skip asking if the user wants to install DLCs
  • import-game command
    • No longer allows for installing DLC without the base game already being installed (#351)
    • Will now ask the user if they want to import DLC like install does.
    • --with-dlcs flag to automatically attempt to import all DLC
    • --skip-dlcs flag to skip asking if the user wants to import DLCs

Bug fixes and improvements

  • Use exponential backoff when downloading a file fails to avoid runaway CPU usage (#347)
  • Legendary does no longer attempt to read ".egstore" folder for DLC when importing
  • No more re-login after client has already logged in once (unless session is about to expire), e.g. when installing DLC
  • Added pywebview as optional dependency in setup.py to make legendary[webview] option available via PyPI