Legendary是一款开源游戏启动器,可以从Linux和Windows上的Epic Games平台下载并安装游戏。它的名称是许多MMORPG中稀有物品等级上的嘲讽之词。
目前,Legendary尚处于测试阶段,功能尚不完善。您可能会遇到一些错误或问题。如果您这样做,请在GitHub上创建一个问题,以便我们进行修复。
注意: Legendary当前是一个没有图形用户界面的CLI(命令行界面)应用程序,必须从终端(例如PowerShell)运行
什么有效:
- 使用Epic的服务进行身份验证
- 下载并安装游戏及其DLC
- 已安装游戏的Delta补丁/更新
- 通过在线身份验证启动游戏(适用于多人游戏/ DRM)
- 同步云保存(与EGL兼容)
- 在Linux上使用WINE运行游戏
- 从Epic Games Launcher导入/导出已安装的游戏
计划:
- 简单的GUI,用于管理/启动游戏
- 更好的界面,供其他开发人员在其项目中使用Legendary
- 大量的错误修复,优化和重构…
要求
- Linux或Windows(64位)
- python 3.8+(在Windows上为64位)
- PyPI软件包:
requests
,可选setuptools
,wheel
用于设置/构建
如何运行/安装
包装经理
一些发行版已经有可用的软件包,请查看Available Linux Packages Wiki页面以获取详细信息。
当前,这包括 Arch, Fedora, openSUSE和 Gentoo, 但是将来会有更多可用。
请注意,由于软件包是由第三方维护的,因此将它们更新到最新版本可能需要一些时间。如果您始终希望拥有最新的功能和修补程序,则建议使用PyPI发行版。
单机版
从最新版本下载legendary
或legendary.exe
二进制文件, 然后将其移至/中的某个位置。在Linux上不要忘记它。$PATH
%PATH%
chmod +x
Windows .exe和Linux可执行文件是使用PyInstaller创建的,即使没有安装python也可以独立运行。请注意,在Linux上,需要glibc> = 2.25,因此较旧的发行版(如Ubuntu 16.04或Debian Stretch)将无法工作。
Python包
先决条件
为防止安装过程中出现权限问题,请pip
通过运行升级您的python -m pip install -U pip --user
。
提示:在Linux或Windows上,您可能需要用
python
上述命令替换。python3.8
py -3.8
从PyPI安装(推荐)
Legendary在PyPI上可用,只需运行即可安装:
pip install legendary-gl
从仓库手动
- 安装python3.8,setuptools,wheel和request
- 克隆git存储库并cd到其中
- 跑
pip install .
Ubuntu 20.04示例
Ubuntu 20.04的标准存储库包括安装传奇版本所需的一切:
sudo apt install python3 python3-requests python3-setuptools-git | |
git clone https://github.com/derrod/legendary.git | |
cd legendary | |
pip install . |
如果legendary
安装后可执行文件不可用,则可能需要PATH
正确配置。您可以通过运行以下命令来执行此操作:
echo 'export PATH=$PATH:~/.local/bin' >> ~/.profile && source ~/.profile
直接从仓库(用于开发/测试)
- 安装python3.8和请求(可选地在venv中)
- cd进入仓库
- 输入
pip install -e .
这legendary
将以“可编辑”模式安装-对源代码的任何更改将在legendary
可执行文件下次运行时生效。
快速开始
提示:将PowerShell与独立可执行文件一起使用时,可能需要在以下命令中替换legendary
为.\legendary
。
登录:
legendary auth
身份验证有点挑剔,因为我们必须通过Epic网站。登录页面应在浏览器中打开,登录后将显示一个包含代码的JSON响应,只需将代码复制并粘贴到终端中即可登录。在Windows上,您可以使用该--import
标志从以下位置导入身份验证史诗游戏启动器。请注意,这将使您退出Epic Launcher。
列出您的游戏
legendary list-games
这将获取您帐户中可用游戏的列表,第一次可能需要一段时间,具体取决于您拥有的游戏数量。
安装游戏
legendary install Anemone
重要提示:这些命令使用的名称是应用程序名称,而不是游戏名称!应用程序名称在游戏列表中游戏名称后面的括号中。
列出已安装的游戏并检查更新
legendary list-installed --check-updates
使用在线身份验证启动(运行)游戏
legendary launch Anemone
提示:大多数游戏都可以在离线(--offline
)上正常运行,因此不需要通过传奇启动就可以进行在线身份验证。您可以运行legendary launch <App Name> --offline --dry-run
以获取命令行,该命令行将使用Epic Launcher使用的所有参数启动游戏。然后,如果游戏需要它们,则可以将它们输入任何其他游戏启动器(例如Lutris / Steam)。
导入以前安装的游戏
legendary import-game Anemone /mnt/games/Epic/WorldOfGoo
注意:导入将需要完整的验证,因此Legendary可以在以后正确更新游戏。
与Epic Cloud同步保存游戏
legendary sync-saves
注意:在安装了受支持的游戏之后,第一次运行此命令时,它将要求您确认或提供保存游戏所在的路径。
使用Epic Games Launcher自动同步所有游戏
legendary -y egl-sync
用法
usage: legendary [-h] [-v] [-y] [-V] | |
{auth,install,download,update,repair,uninstall,launch,list-games,list-installed,list-files,list-saves,download-saves,sync-saves,verify-game,import-game,egl-sync,status,cleanup} | |
... | |
Legendary v0.X.X - "Codename" | |
optional arguments: | |
-h, --help show this help message and exit | |
-v, --debug Set loglevel to debug | |
-y, --yes Default to yes for all prompts | |
-V, --version Print version and exit | |
Commands: | |
{auth,install,download,update,repair,uninstall,launch,list-games,list-installed,list-files,list-saves,download-saves,sync-saves,verify-game,import-game,egl-sync,status,cleanup} | |
auth Authenticate with EPIC | |
install (download,update,repair) | |
Download a game | |
uninstall Uninstall (delete) a game | |
launch Launch a game | |
list-games List available (installable) games | |
list-installed List installed games | |
list-files List files in manifest | |
list-saves List available cloud saves | |
download-saves Download all cloud saves | |
sync-saves Sync cloud saves | |
verify-game Verify a game's local files | |
import-game Import an already installed game | |
egl-sync Setup or run Epic Games Launcher sync | |
status Show legendary status information | |
cleanup Remove old temporary, metadata, and manifest files | |
Individual command help: | |
Command: auth | |
usage: legendary auth [-h] [--import] [--code <exchange code>] | |
[--sid <session id>] [--delete] | |
optional arguments: | |
-h, --help show this help message and exit | |
--import Import Epic Games Launcher authentication data (logs | |
out of EGL) | |
--code <exchange code> | |
Use specified exchange code instead of interactive | |
authentication | |
--sid <session id> Use specified session id instead of interactive | |
authentication | |
--delete Remove existing authentication (log out) | |
Command: install | |
usage: legendary install <App Name> [options] | |
Aliases: download, update | |
positional arguments: | |
<App Name> Name of the app | |
optional arguments: | |
-h, --help show this help message and exit | |
--base-path <path> Path for game installations (defaults to ~/legendary) | |
--game-folder <path> Folder for game installation (defaults to folder | |
specified in metadata) | |
--max-shared-memory <size> | |
Maximum amount of shared memory to use (in MiB), | |
default: 1 GiB | |
--max-workers <num> Maximum amount of download workers, default: min(2 * | |
CPUs, 16) | |
--manifest <uri> Manifest URL or path to use instead of the CDN one | |
(e.g. for downgrading) | |
--old-manifest <uri> Manifest URL or path to use as the old one (e.g. for | |
testing patching) | |
--delta-manifest <uri> | |
Manifest URL or path to use as the delta one (e.g. for | |
testing) | |
--base-url <url> Base URL to download from (e.g. to test or switch to a | |
different CDNs) | |
--force Download all files / ignore existing (overwrite) | |
--disable-patching Do not attempt to patch existing installation | |
(download entire changed files) | |
--download-only, --no-install | |
Do not intall app and do not run prerequisite | |
installers after download | |
--update-only Only update, do not do anything if specified app is | |
not installed | |
--dlm-debug Set download manager and worker processes' loglevel to | |
debug | |
--platform <Platform> | |
Platform override for download (also sets --no- | |
install) | |
--prefix <prefix> Only fetch files whose path starts with <prefix> (case | |
insensitive) | |
--exclude <prefix> Exclude files starting with <prefix> (case | |
insensitive) | |
--install-tag <tag> Only download files with the specified install tag | |
--enable-reordering Enable reordering optimization to reduce RAM | |
requirements during download (may have adverse results | |
for some titles) | |
--dl-timeout <sec> Connection timeout for downloader (default: 10 | |
seconds) | |
--save-path <path> Set save game path to be used for sync-saves | |
--repair Repair installed game by checking and redownloading | |
corrupted/missing files | |
--repair-and-update Update game to the latest version when repairing | |
--ignore-free-space Do not abort if not enough free space is available | |
--disable-delta-manifests | |
Do not use delta manifests when updating (may increase | |
download size) | |
--reset-sdl Reset selective downloading choices (requires repair | |
to download new components) | |
Command: uninstall | |
usage: legendary uninstall [-h] [--keep-files] <App Name> | |
positional arguments: | |
<App Name> Name of the app | |
optional arguments: | |
-h, --help show this help message and exit | |
--keep-files Keep files but remove game from Legendary database | |
Command: launch | |
usage: legendary launch <App Name> [options] | |
Note: additional arguments are passed to the game | |
positional arguments: | |
<App Name> Name of the app | |
optional arguments: | |
-h, --help show this help message and exit | |
--offline Skip login and launch game without online | |
authentication | |
--skip-version-check Skip version check when launching game in online mode | |
--override-username <username> | |
Override username used when launching the game (only | |
works with some titles) | |
--dry-run Print the command line that would have been used to | |
launch the game and exit | |
--language <two letter language code> | |
Override language for game launch (defaults to system | |
locale) | |
--wrapper <wrapper command> | |
Wrapper command to launch game with | |
--set-defaults Save parameters used to launch to config (does not | |
include env vars) | |
--reset-defaults Reset config settings for app and exit | |
--wine <wine binary> Set WINE binary to use to launch the app | |
--wine-prefix <wine pfx path> | |
Set WINE prefix to use | |
--no-wine Do not run game with WINE (e.g. if a wrapper is used) | |
Command: list-games | |
usage: legendary list-games [-h] [--platform <Platform>] [--include-ue] [--csv] | |
[--tsv] [--json] | |
optional arguments: | |
-h, --help show this help message and exit | |
--platform <Platform> | |
Override platform that games are shown for (e.g. | |
Win32/Mac) | |
--include-ue Also include Unreal Engine content | |
(Engine/Marketplace) in list | |
--csv List games in CSV format | |
--tsv List games in TSV format | |
--json List games in JSON format | |
Command: list-installed | |
usage: legendary list-installed [-h] [--check-updates] [--csv] [--tsv] [--json] | |
[--show-dirs] | |
optional arguments: | |
-h, --help show this help message and exit | |
--check-updates Check for updates for installed games | |
--csv List games in CSV format | |
--tsv List games in TSV format | |
--json List games in JSON format | |
--show-dirs Print installation directory in output | |
Command: list-files | |
usage: legendary list-files [-h] [--force-download] [--platform <Platform>] | |
[--manifest <uri>] [--csv] [--tsv] [--json] | |
[--hashlist] [--install-tag <tag>] | |
[<App Name>] | |
positional arguments: | |
<App Name> Name of the app (optional) | |
optional arguments: | |
-h, --help show this help message and exit | |
--force-download Always download instead of using on-disk manifest | |
--platform <Platform> | |
Platform override for download (disables install) | |
--manifest <uri> Manifest URL or path to use instead of the CDN one | |
--csv Output in CSV format | |
--tsv Output in TSV format | |
--json Output in JSON format | |
--hashlist Output file hash list in hashcheck/sha1sum -c | |
compatible format | |
--install-tag <tag> Show only files with specified install tag | |
Command: list-saves | |
usage: legendary list-saves [-h] [<App Name>] | |
positional arguments: | |
<App Name> Name of the app (optional) | |
optional arguments: | |
-h, --help show this help message and exit | |
Command: download-saves | |
usage: legendary download-saves [-h] [<App Name>] | |
positional arguments: | |
<App Name> Name of the app (optional) | |
optional arguments: | |
-h, --help show this help message and exit | |
Command: sync-saves | |
usage: legendary sync-saves [-h] [--skip-upload] [--skip-download] | |
[--force-upload] [--force-download] | |
[--save-path <path>] [--disable-filters] | |
[<App Name>] | |
positional arguments: | |
<App Name> Name of the app (optional) | |
optional arguments: | |
-h, --help show this help message and exit | |
--skip-upload Only download new saves from cloud, don't upload | |
--skip-download Only upload new saves from cloud, don't download | |
--force-upload Force upload even if local saves are older | |
--force-download Force download even if local saves are newer | |
--save-path <path> Override savegame path (requires single app name to be | |
specified) | |
--disable-filters Disable save game file filtering | |
Command: verify-game | |
usage: legendary verify-game [-h] <App Name> | |
positional arguments: | |
<App Name> Name of the app | |
optional arguments: | |
-h, --help show this help message and exit | |
Command: import-game | |
usage: legendary import-game [-h] [--disable-check] | |
<App Name> <Installation directory> | |
positional arguments: | |
<App Name> Name of the app | |
<Installation directory> | |
Path where the game is installed | |
optional arguments: | |
-h, --help show this help message and exit | |
--disable-check Disables completeness check of the to-be-imported game | |
installation (useful if the imported game is a much | |
older version or missing files) | |
Command: egl-sync | |
usage: legendary egl-sync [-h] [--egl-manifest-path EGL_MANIFEST_PATH] | |
[--egl-wine-prefix EGL_WINE_PREFIX] [--enable-sync] | |
[--disable-sync] [--one-shot] [--import-only] | |
[--export-only] [--unlink] | |
optional arguments: | |
-h, --help show this help message and exit | |
--egl-manifest-path EGL_MANIFEST_PATH | |
Path to the Epic Games Launcher's Manifests folder, | |
should point to | |
/ProgramData/Epic/EpicGamesLauncher/Data/Manifests | |
--egl-wine-prefix EGL_WINE_PREFIX | |
Path to the WINE prefix the Epic Games Launcher is | |
installed in | |
--enable-sync Enable automatic EGL <-> Legendary sync | |
--disable-sync Disable automatic sync and exit | |
--one-shot Sync once, do not ask to setup automatic sync | |
--import-only Only import games from EGL (no export) | |
--export-only Only export games to EGL (no import) | |
--unlink Disable sync and remove EGL metadata from installed | |
games | |
Command: status | |
usage: legendary status [-h] [--offline] [--json] | |
optional arguments: | |
-h, --help show this help message and exit | |
--offline Only print offline status information, do not login | |
--json Show status in JSON format | |
Command: cleanup | |
usage: legendary cleanup [-h] [--keep-manifests] | |
optional arguments: | |
-h, --help show this help message and exit | |
--keep-manifests Do not delete old manifests |
环境变量
Legendary支持通过环境变量覆盖某些事物,它还可以通过调用前设置的任何环境变量进行传递。
传奇的特定环境变量:
LGDRY_WINE_BINARY
-指定酒的二进制文件LGDRY_WINE_PREFIX
-指定的酒名LGDRY_NO_WINE
-禁用酒LGDRY_WRAPPER
-指定包装程序二进制/命令行
请注意,多次出现的设置的优先级是:命令行>环境变量>配置变量。
配置文件
Legendary在以下方面支持某些选项以及游戏特定的配置~/.config/legendary/config.ini
:
[Legendary] | |
log_level = debug | |
; maximum shared memory (in MiB) to use for installation | |
max_memory = 1024 | |
; maximum number of worker processes when downloading (fewer workers will be slower, but also use fewer system resources) | |
max_workers = 8 | |
; default install directory | |
install_dir = /mnt/tank/games | |
; locale override, must be in RFC 1766 format (e.g. "en-US") | |
locale = en-US | |
; whether or not syncing with egl is enabled | |
egl_sync = false | |
; path to the "Manifests" folder in the EGL ProgramData directory | |
egl_programdata = /home/user/Games/epic-games-store/drive_c/... | |
; default settings to use (currently limited to WINE executable) | |
[default] | |
; (linux) specify wine executable to use | |
wine_executable = wine | |
; wine prefix (alternative to using environment variable) | |
wine_prefix = /home/user/.wine | |
; default environment variables to set (overridden by game specific ones) | |
[default.env] | |
WINEPREFIX = /home/user/legendary/.wine | |
; Settings to only use for "AppName" | |
[AppName] | |
; launch game without online authentication by default | |
offline = true | |
; Skip checking for updates when launching this game | |
skip_update_check = true | |
; start parameters to use (in addition to the required ones) | |
start_params = -windowed | |
wine_executable = /path/to/proton/wine64 | |
; override language with two-letter language code | |
language = fr | |
[AppName.env] | |
; environment variables to set for this game (mostly useful on linux) | |
WINEPREFIX = /mnt/tank/games/Game/.wine | |
DXVK_CONFIG_FILE = /mnt/tank/games/Game/dxvk.conf | |
[AppName2] | |
; Use a wrapper to run this script | |
; Note that the path might have to be quoted if it contains spaces | |
wrapper = "/path/to/Proton 5.0/proton" run | |
; Do not run this executable with WINE (e.g. when the wrapper handles that) | |
no_wine = true |
下载地址:https://github.com/derrod/legendary