This commit is contained in:
@@ -1,95 +1,281 @@
|
||||
# Elsword Proton-GE Builder
|
||||
# Elsword-GE Build Project
|
||||
|
||||
Dieses Repo baut per Gitea Actions versionierte Proton-GE-Kompatibilitätstools
|
||||
für Elsword mit `dxvk-git` und Steam Linux Runtime 3.0 (`sniper`).
|
||||
This repository builds two custom Proton-GE 11 compatibility tools for Elsword on Linux/Steam:
|
||||
|
||||
## Was gebaut wird
|
||||
- `Elsword-GE-11-1`
|
||||
- `Elsword-GE-11-1+dxvk-git`
|
||||
|
||||
- Tool-Name: `Elsword-GE-(Version)`
|
||||
- Beispiel: `Elsword-GE-11-1`
|
||||
- Runtime: `1628350` (`Steam Linux Runtime 3.0`)
|
||||
- DXVK: standardmäßig `dxvk-git`
|
||||
- Ausgabe: versionierte `.tar.xz`-Archive in `dist/`
|
||||
It is designed for NixOS and for hosting on a private or public Gitea server with Gitea Actions.
|
||||
|
||||
Ältere lokal installierte Versionen wie `Elsword-GE-10-30` bleiben bestehen,
|
||||
weil jede Build ihren eigenen Tool-Namen bekommt.
|
||||
## What this project does
|
||||
|
||||
## Ablauf
|
||||
- Builds a Proton-GE 11 / Wine 11 based compatibility tool for Elsword.
|
||||
- Uses Steam Linux Runtime 3.0 (`sniper`, appid `1628350`).
|
||||
- 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`
|
||||
|
||||
1. Das Repo nutzt standardmäßig `GE-Proton10-34`.
|
||||
2. DXVK wird aus Upstream gebaut, standardmäßig als `dxvk-git`.
|
||||
3. Die GE-Basis wird auf `sniper` umgestellt.
|
||||
4. Die DXVK-DLLs in Proton-GE werden ersetzt.
|
||||
5. Das Ergebnis wird als eigenes Steam-Compatibility-Tool paketiert.
|
||||
6. Die Gitea Action erstellt oder aktualisiert ein Release und lädt das Archiv hoch.
|
||||
## What this project does not do
|
||||
|
||||
## Standardverhalten
|
||||
- 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`.
|
||||
|
||||
Ohne Parameter baut `build.sh`:
|
||||
## Variant difference
|
||||
|
||||
- `GE-Proton10-34`
|
||||
- mit `dxvk-git`
|
||||
- als Tool `Elsword-GE-(Version)`
|
||||
- mit `sniper`
|
||||
- `Elsword-GE-11-1`
|
||||
- Proton-GE 11 base
|
||||
- DXVK stable/latest release tag
|
||||
|
||||
## Lokaler Build
|
||||
- `Elsword-GE-11-1+dxvk-git`
|
||||
- Proton-GE 11 base
|
||||
- DXVK from current upstream Git
|
||||
|
||||
```bash
|
||||
nix develop -c ./build.sh
|
||||
## 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/
|
||||
```
|
||||
|
||||
Nur Archiv bauen, nicht lokal installieren:
|
||||
## NixOS prerequisites
|
||||
|
||||
Use the provided flake:
|
||||
|
||||
```bash
|
||||
nix develop -c ./build.sh --no-install
|
||||
nix develop
|
||||
```
|
||||
|
||||
Einen bestimmten GE-Tag bauen:
|
||||
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 ./build.sh --proton-tag GE-Proton11-1
|
||||
nix develop -c ./scripts/build.sh stable
|
||||
```
|
||||
|
||||
Eigenen Tool-Namen setzen:
|
||||
Build the DXVK Git variant:
|
||||
|
||||
```bash
|
||||
nix develop -c ./build.sh --tool-name Elsword-GE-test
|
||||
nix develop -c ./scripts/build.sh dxvk-git
|
||||
```
|
||||
|
||||
## Wichtige Optionen
|
||||
Build both:
|
||||
|
||||
- `--proton-tag TAG`
|
||||
- `--proton-asset x86_64|aarch64`
|
||||
- `--dxvk-channel git|stable`
|
||||
- `--dxvk-tag TAG`
|
||||
- `--tool-prefix PREFIX`
|
||||
- `--tool-name NAME`
|
||||
- `--runtime-appid APPID`
|
||||
- `--no-install`
|
||||
```bash
|
||||
nix develop -c ./scripts/build.sh all
|
||||
```
|
||||
|
||||
## Gitea Actions
|
||||
Package both into release archives:
|
||||
|
||||
Der Workflow liegt unter:
|
||||
```bash
|
||||
nix develop -c ./scripts/create-release-archive.sh
|
||||
```
|
||||
|
||||
- `.gitea/workflows/build.yml`
|
||||
## Output files
|
||||
|
||||
Er läuft bei:
|
||||
After packaging, the main release files are:
|
||||
|
||||
- manuellem Start per `workflow_dispatch`
|
||||
- automatischem Zeitplan täglich
|
||||
```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
|
||||
```
|
||||
|
||||
Für Release-Uploads braucht der Workflow ein Secret:
|
||||
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
|
||||
```
|
||||
|
||||
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`
|
||||
|
||||
Dieses Token muss Release-Schreibrechte auf das Repo haben.
|
||||
No tokens or passwords are stored in the repository.
|
||||
|
||||
## Release-Ausgabe
|
||||
## Manual fallback if release upload needs to be done by hand
|
||||
|
||||
Nach einem Build schreibt das Skript nach `dist/`:
|
||||
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:
|
||||
|
||||
- das fertige `.tar.xz`-Archiv
|
||||
- `package-info.env`
|
||||
- `release-notes.md`
|
||||
- `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`
|
||||
|
||||
Die Gitea Action nutzt diese Dateien direkt für das Release.
|
||||
## 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.
|
||||
|
||||
Reference in New Issue
Block a user