add xash3d-fwgs-half-life-flatpak-build-with-radicle.gmi

This commit is contained in:
postscriptum 2026-02-21 19:52:07 +02:00
parent 6b3e392a65
commit 86d9a40624
4 changed files with 166 additions and 1 deletions

View file

@ -182,3 +182,4 @@ git submodule update --init --recursive
=> radicle-multi-network-seed-deployment.gmi Розгортання сіда Radicle в мульти-мережному середовищі => radicle-multi-network-seed-deployment.gmi Розгортання сіда Radicle в мульти-мережному середовищі
=> radicle-web-service-deployment.gmi Розгортання Веб-інфраструктури Radicle на прикладі оверлейних мереж => radicle-web-service-deployment.gmi Розгортання Веб-інфраструктури Radicle на прикладі оверлейних мереж
=> transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID => transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID
=> xash3d-fwgs-half-life-flatpak-build-with-radicle.gmi Flatpak-збірка рушія Xash3D/FWGS з Half-Life на прикладі Radicle/Git

View file

@ -16,6 +16,7 @@
### Нотатки ### Нотатки
=> xash3d-fwgs-half-life-flatpak-build-with-radicle.gmi 2026-02-21 Flatpak-збірка рушія Xash3D/FWGS з Half-Life на прикладі Radicle/Git
=> git-repository-mirroring-with-local-gitmodules-dependencies-in-radicle.gmi 2026-02-19 Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle => git-repository-mirroring-with-local-gitmodules-dependencies-in-radicle.gmi 2026-02-19 Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle
=> transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi 2026-02-18 Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID => transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi 2026-02-18 Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID
=> build-xash3d-fwgs-half-life-on-haiku-os.gmi 2026-02-17 Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS => build-xash3d-fwgs-half-life-on-haiku-os.gmi 2026-02-17 Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS

View file

@ -285,4 +285,5 @@ rad:z4FoMnoSve6Ku6gz4qiuSpzmGr1YE
=> radicle-web-service-deployment.gmi Розгортання Веб-інфраструктури Radicle на прикладі оверлейних мереж => radicle-web-service-deployment.gmi Розгортання Веб-інфраструктури Radicle на прикладі оверлейних мереж
=> transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID => transfer-radicle-repository-to-another-git-upstream-while-preserving-rid.gmi Перенесення репозиторію Radicle на інший апстрім Git зі збереженням RID
=> git-repository-mirroring-with-local-gitmodules-dependencies-in-radicle.gmi Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle => git-repository-mirroring-with-local-gitmodules-dependencies-in-radicle.gmi Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle
=> xash3d-fwgs-half-life-flatpak-build-with-radicle.gmi Flatpak-збірка рушія Xash3D/FWGS з Half-Life на прикладі Radicle/Git
=> rust-cross-compilation-with-cross-crate.gmi Простий спосіб крос-компіляції Rust з cross => rust-cross-compilation-with-cross-crate.gmi Простий спосіб крос-компіляції Rust з cross

View file

@ -0,0 +1,162 @@
# Flatpak-збірка рушія Xash3D/FWGS з Half-Life на прикладі Radicle/Git
В прикладах наведено форк гілки `master` репозиторію Xash3D/FWGS з патчем маніфесту Flatpak:
=> https://github.com/FWGS/xash3d-fwgs/blob/master/scripts/flatpak/su.xash.Engine.Compat.i386.yml
Цей патч включає репозиторій Radicle з оригінальними ігровими наборами Half-Life:
=> https://store.steampowered.com/app/70/HalfLife/
``` scripts/flatpak/su.xash.Engine.Compat.i386.yml
modules:
- name: half-life-steam-id-70
buildsystem: simple
build-commands:
- |
mkdir -p /app/valve-default
cp -r ./valve/. /app/valve-default
cleanup:
- ./*.pak
- ./*.so*
- ./hl_linux
- ./hl.sh
- ./platform
- ./redist
- ./valve
- ./valve_hd
sources:
- type: git
# without radicle-node running, try following web-seeds:
# url: https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW
# url: https://app.radicle.xyz/nodes/rosa.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW
url: rad://z3LRRg2os4mihf6n12P6m2Ukr4BfW
branch: master
```
* технічно, рядок `url` можна замінити на Інтернет-адресу проксі: наприклад, rosa, iris або іншими - тоді наявність локальної ноди Radicle не є обов'язковою.
Динамічні файли профілю, які входять до теки `valve`, повинні бути розташовані за рамками контейнера і мати доступ на запис. Тому форк включає також і патч лаунчера `scripts/flatpak/run.sh`, ~48 рядок:
``` scripts/flatpak/run.sh
readonly _VALVE_DST="${XASH3D_BASEDIR%/}/valve"
if [[ -d $_VALVE_DST ]]; then
echo "loading game profile from $_VALVE_DST..."
else
echo "valve directory not found, initializing defaults..."
mkdir -p $_VALVE_DST
cp -r /app/valve-default/. $_VALVE_DST
if [[ ! -d $_VALVE_DST ]]; then
echo "could not init valve directory!"
exit 1
fi
fi
```
Таким чином, якщо користувач не вказав вибірковий шлях `XASH3D_BASEDIR` або в його стандартній теці (`$HOME/.local/share/xash3d-fwgs/valve`) не встановлено ігрові набори `valve` вручну, то вони будуть скопійовані туди з "внутрішньої пам'яті" контейнера (`/valve-default`) при першому запуску гри.
Це також дозволятиме користувачеві встановлювати різні модифікації, редагувати файли конфігурації, переглядати журнали, тощо.
## Готовий пакунок .flatpak
Мета цього гайду - розписати процес білду, тоді як пакунок містить ігрові асети Valve Corp., а отже розмістити його тут не можу. Утім, якщо у вас є мінімум CPU і 5 хвилин часу, можете зібрати і поширювати його для особистих потреб, користуючись інструкціями нижче.
## Готовий маніфест
Якщо ви не хочете вручну правити згадані вище файли і вам не потрібна остання версія Xash3D/FWGS:
``` bash
rad clone rad:zQwuiSABZkACpAYgn5mJvf7y4QNm
```
Або через Веб-проксі (сід підбирайте самі)
```bash
git clone https://iris.radicle.xyz/zQwuiSABZkACpAYgn5mJvf7y4QNm.git xash3d-fwgs
```
* тут вам все одно потрібно буде правити Веб-сорс в маніфесті, тому краще юзайте `rad`
Перед збіркою потрібно перемкнути гілку на `radicle-bundle`:
``` bash
cd xash3d-fwgs
git checkout radicle-bundle
git submodule update --init --recursive
```
* останньою командою підтягуємо залежності `.gitmodules` (для них я поки не реалізував локальні дзеркала, тому поки використовуємо оригінальні джерела)
## Системні залежності
Для збірки пакунків `.flatpak`, потрібно встановити `flatpak-builder`. На Fedora, це робиться командою:
``` bash
sudo dnf install flatpak flatpak-builder
```
Надалі, я буду робити все в просторі користувача (`--user`). Якщо ви ставите глобально, то можете цей аргумент прибрати звідусіль.
Окремо додається стандартний репозиторій залежностей Flathub, якщо його не було додано раніше:
``` bash
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
```
## Збірка і встановлення
Перед продовженням, для резольву префіксів `rad://`, не забудьте запустити локальний вузол Radicle:
``` bash
rad node start --foreground --verbose
```
З теки репозиторію:
``` bash
flatpak-builder --force-clean build --install-deps-from=flathub --install --repo=repo --user scripts/flatpak/su.xash.Engine.Compat.i386.yml
```
Після завершення збірки, працюючий вузол Radicle більше не потрібен.
### Запуск
Застосунок "**Xash3D FWGS**" буде доступним в меню системи, назву його поки не змінював. Опціонально, можна запустити командою, за необхідності вказавши там аргументи середовища типу `--env=XASH3D_BASEDIR=/`:
``` bash
flatpak run su.xash.Engine.Compat.i386
```
Якщо бачите помилку:
> Can't find 32-bit runtime extension. Try running 'flatpak install org.freedesktop.Platform.Compat.i386//25.08'
довстановіть середовище `flathub org.freedesktop.Platform.Compat.i386`:
``` bash
flatpak install --user flathub org.freedesktop.Platform.Compat.i386
```
Якщо:
> Can't initialize any renderer. Check your video drivers!
довстановіть 32-бітну версію `org.freedesktop.Platform.GL.default`:
``` bash
flatpak install --user flathub org.freedesktop.Platform.GL32.default
```
### Створення пакунку
Можна згенерувати пакунок `.flatpak` і встановити через менеджер додатків або поділитись з іншими:
``` bash
flatpak build-bundle repo Half-Life.flatpak su.xash.Engine.Compat.i386
```
* в корені поточної теки буде створено файл `Half-Life.flatpak` (~230 Мб)
## Посилання
=> https://devzone.org.ua/post/flatpak-zbirka-xash3dfwgs-half-life-z-radiclegit Інтернет-адаптація цього матеріалу з коментарями на DevZone
### Дивіться також
=> radicle-is-decentralized-p2p-git-dvcs.gmi Radicle: децентралізований P2P хостинг Git/DVCS
=> git-repository-mirroring-with-local-gitmodules-dependencies-in-radicle.gmi Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle
=> half-life-on-linux-using-xash3d-fwgs-engine.gmi Half-Life в Linux на базі рушія Xash3D / FWGS
=> build-xash3d-fwgs-half-life-on-haiku-os.gmi Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS