Elsword-GE Build Project
This repository builds two custom Proton-GE 11 compatibility tools for Elsword on Linux/Steam:
Elsword-GE-11-1Elsword-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, appid4183110). - 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=0PROTON_USE_OPTISCALER=0PROTON_USE_D7VK=0MANGOHUD=0ENABLE_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
.
├── 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:
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
i686andx86_64 - Wine / wow64 support
Local build
Build the stable DXVK variant:
nix develop -c ./scripts/build.sh stable
Build the DXVK Git variant:
nix develop -c ./scripts/build.sh dxvk-git
Build both:
nix develop -c ./scripts/build.sh all
Package both into release archives:
nix develop -c ./scripts/create-release-archive.sh
Output files
After packaging, the main release files are:
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:
Elsword-GE-11-1-dxvk-git.tar.zst
The Steam compatibility tool name still remains exactly:
Elsword-GE-11-1+dxvk-git
Install into Steam
Install a built archive:
./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:
./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:
~/.local/share/Steam/compatibilitytools.d/
After install:
- Fully restart Steam.
- Open Elsword properties in Steam.
- Select the matching compatibility tool.
Recommended Elsword launch options
The documented profiles live in profiles/elsword-launch-options.md.
Safe / GameGuard test:
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:
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=1separately. - If GameGuard kicks the game, go back to the Safe profile first.
Debugging
For Proton logs:
PROTON_LOG=1 %command%
Gitea Actions behavior
Workflow file:
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_TOKENGITEA_SERVER_URLGITEA_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.zstdist/Elsword-GE-11-1+dxvk-git.tar.zstdist/Elsword-GE-11-1-dxvk-git.tar.zstdist/SHA256SUMS.txtdist/*.sha256dist/release-notes.md
Push to Gitea
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
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:
[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.