Files
Elsword-GE/README.md
T
magges aa7efaa572
build-elsword-ge / build (push) Has been cancelled
feat: add generic release installer
2026-06-27 11:32:45 +02:00

290 lines
6.2 KiB
Markdown

# 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.