gemlog/public/uk/xash3d-fwgs-half-life-flatpak-build-with-radicle.gmi
2026-02-21 20:08:02 +02:00

169 lines
No EOL
8 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`, мають бути розташовані за рамками контейнера з доступом на запис. Тому форк включає також і патч лаунчера:
=> https://github.com/FWGS/xash3d-fwgs/blob/master/scripts/flatpak/run.sh
``` scripts/flatpak/run.sh
# ~48 рядок
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