# Elsword-GE Build Project This repository builds two custom Proton-GE 11 compatibility tools for Elsword on Linux/Steam: - `Elsword-GE-11-1` - `Elsword-GE-11-1+dxvk-git` It is designed for NixOS and for hosting on a private or public Gitea server with Gitea Actions. ## What this project does - Builds a Proton-GE 11 / Wine 11 based compatibility tool for Elsword. - Uses Steam Linux Runtime 4 (`soldier`, appid `4183110`). - Builds DXVK for both x86 and x64. - Produces release archives that other users can install into Steam. - Disables optional extras that are known to be risky for game stability by default: - `PROTON_DISCORD_BRIDGE=0` - `PROTON_USE_OPTISCALER=0` - `PROTON_USE_D7VK=0` - `MANGOHUD=0` - `ENABLE_VKBASALT=0` ## What this project does not do - No GameGuard bypass. - No anti-cheat bypass. - No patching or hooking of GameGuard. - No hard override of `LOW_LATENCY_LAYER`. - No global hard override of `LD_PRELOAD`. ## Variant difference - `Elsword-GE-11-1` - Proton-GE 11 base - DXVK stable/latest release tag - `Elsword-GE-11-1+dxvk-git` - Proton-GE 11 base - DXVK from current upstream Git ## Repository layout ```text . ├── flake.nix ├── README.md ├── LICENSE ├── .gitignore ├── .gitea/ │ └── workflows/ │ └── build.yml ├── scripts/ │ ├── common.sh │ ├── build.sh │ ├── package.sh │ ├── install-to-steam.sh │ ├── validate-build.sh │ └── create-release-archive.sh ├── patches/ │ └── proton-defaults-elsword.patch ├── profiles/ │ └── elsword-launch-options.md └── dist/ ``` ## NixOS prerequisites Use the provided flake: ```bash nix develop ``` The shell includes build dependencies such as: - git - bash - coreutils - findutils - gnused - gnugrep - gawk - jq - curl - wget - tar - zstd - meson - ninja - python3 - pkg-config - cmake - perl - patchelf - binutils - mingw-w64 toolchains for `i686` and `x86_64` - Wine / wow64 support ## Local build Build the stable DXVK variant: ```bash nix develop -c ./scripts/build.sh stable ``` Build the DXVK Git variant: ```bash nix develop -c ./scripts/build.sh dxvk-git ``` Build both: ```bash nix develop -c ./scripts/build.sh all ``` Package both into release archives: ```bash nix develop -c ./scripts/create-release-archive.sh ``` ## Output files After packaging, the main release files are: ```text dist/Elsword-GE-11-1.tar.zst dist/Elsword-GE-11-1+dxvk-git.tar.zst dist/Elsword-GE-11-1-dxvk-git.tar.zst dist/SHA256SUMS.txt dist/release-notes.md ``` If `+` causes issues in a filesystem or upload target, the safe alias is: ```text Elsword-GE-11-1-dxvk-git.tar.zst ``` The Steam compatibility tool name still remains exactly: ```text Elsword-GE-11-1+dxvk-git ``` ## Install into Steam Install a built archive: ```bash ./scripts/install-to-steam.sh dist/Elsword-GE-11-1.tar.zst ./scripts/install-to-steam.sh dist/Elsword-GE-11-1+dxvk-git.tar.zst ``` Generic installer for release archives, including Flatpak Steam users: ```bash ./scripts/install-compat-tool.sh /path/to/Tool.tar.zst ./scripts/install-compat-tool.sh --flatpak /path/to/Tool.tar.zst ./scripts/install-compat-tool.sh --all /path/to/Tool.tar.zst ``` Target path: ```text ~/.local/share/Steam/compatibilitytools.d/ ``` After install: 1. Fully restart Steam. 2. Open Elsword properties in Steam. 3. Select the matching compatibility tool. ## Recommended Elsword launch options The documented profiles live in [profiles/elsword-launch-options.md](/home/magges/git/Elsword-GE/profiles/elsword-launch-options.md:1). Safe / GameGuard test: ```bash LD_PRELOAD="" PROTON_DISCORD_BRIDGE=0 PROTON_USE_OPTISCALER=0 PROTON_USE_D7VK=0 LOW_LATENCY_LAYER=0 MANGOHUD=0 ENABLE_VKBASALT=0 VK_INSTANCE_LAYERS="" DXVK_HUD=0 %command% ``` Performance / low-latency test: ```bash LD_PRELOAD="" PROTON_DISCORD_BRIDGE=0 PROTON_USE_OPTISCALER=0 PROTON_USE_D7VK=0 LOW_LATENCY_LAYER=1 MANGOHUD=0 ENABLE_VKBASALT=0 VK_INSTANCE_LAYERS="" DXVK_STATE_CACHE=1 DXVK_LOG_LEVEL=none %command% ``` Operational advice: - Disable Steam Overlay for Elsword if possible. - Do not launch with `gamemoderun`. - Keep MangoHud disabled. - Keep vkBasalt disabled. - Keep Discord Bridge disabled. - Keep OptiScaler disabled. - Keep D7VK disabled. - Test `LOW_LATENCY_LAYER=1` separately. - If GameGuard kicks the game, go back to the Safe profile first. ## Debugging For Proton logs: ```bash PROTON_LOG=1 %command% ``` ## Gitea Actions behavior Workflow file: - [.gitea/workflows/build.yml](/home/magges/git/Elsword-GE/.gitea/workflows/build.yml:1) Behavior: - Push to `main`: builds both variants and stores build artifacts. - Tag matching `v*`: builds both variants, packages them, generates checksums, and creates or updates a Gitea release with uploaded assets. Expected secrets: - `GITEA_TOKEN` - `GITEA_SERVER_URL` - `GITEA_REPOSITORY` No tokens or passwords are stored in the repository. ## Manual fallback if release upload needs to be done by hand If your Gitea release upload path differs or the API step needs adjustment for your instance, build locally or through Actions and upload these files manually in the release UI: - `dist/Elsword-GE-11-1.tar.zst` - `dist/Elsword-GE-11-1+dxvk-git.tar.zst` - `dist/Elsword-GE-11-1-dxvk-git.tar.zst` - `dist/SHA256SUMS.txt` - `dist/*.sha256` - `dist/release-notes.md` ## Push to Gitea ```bash git init git add . git commit -m "Initial Elsword-GE build project" git remote add origin ssh://git@DEIN-GITEA-SERVER/USER/elsword-ge.git git push -u origin main ``` ## Create a release by tag ```bash git tag v11-1 git push origin v11-1 ``` ## Gitea attachment size note Built Proton archives are usually much larger than 50 MB. Your Gitea instance may need larger release attachment limits. Example configuration hint only; exact keys can vary by Gitea version: ```ini [repository.upload] FILE_MAX_SIZE = 2048 MAX_FILES = 20 [attachment] MAX_SIZE = 2048 MAX_FILES = 20 [actions] ENABLED = true ``` ## Security and anti-cheat note This project intentionally avoids: - GameGuard bypasses - anti-cheat bypasses - GameGuard patches - GameGuard hooks The goal is only a clean Proton-GE build with complete DXVK payloads and conservative defaults for optional extras.