mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-03-11 12:02:40 +00:00
169 lines
No EOL
8 KiB
Text
169 lines
No EOL
8 KiB
Text
# 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 |