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/


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

Динамічні файли профілю, які входять до теки `valve`, мають бути розташовані за рамками контейнера з доступом на запис. Тому форк включає також і патч лаунчера:

https://github.com/FWGS/xash3d-fwgs/blob/master/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:


rad clone rad:zQwuiSABZkACpAYgn5mJvf7y4QNm

Або через Веб-проксі (сід підбирайте самі)

git clone https://iris.radicle.xyz/zQwuiSABZkACpAYgn5mJvf7y4QNm.git xash3d-fwgs

Перед збіркою потрібно перемкнути гілку на radicle-bundle:


cd xash3d-fwgs
git checkout radicle-bundle
git submodule update --init --recursive

Системні залежності


Для збірки пакунків .flatpak, потрібно встановити flatpak-builder. На Fedora, це робиться командою:


sudo dnf install flatpak flatpak-builder

Надалі, я буду робити все в просторі користувача (--user). Якщо ви ставите глобально, то можете цей аргумент прибрати звідусіль.


Окремо додається стандартний репозиторій залежностей Flathub, якщо його не було додано раніше:


flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Збірка і встановлення


Перед продовженням, для резольву префіксів `rad://`, не забудьте запустити локальний вузол Radicle:


rad node start --foreground --verbose

З теки репозиторію:


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=/


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`:


flatpak install --user flathub org.freedesktop.Platform.Compat.i386

Якщо:


Can't initialize any renderer. Check your video drivers!


довстановіть 32-бітну версію `org.freedesktop.Platform.GL.default`:


flatpak install --user flathub org.freedesktop.Platform.GL32.default

Створення пакунку


Можна згенерувати пакунок .flatpak і встановити через менеджер додатків або поділитись з іншими:


flatpak build-bundle repo Half-Life.flatpak su.xash.Engine.Compat.i386

Посилання


Інтернет-адаптація цього матеріалу з коментарями на DevZone


Дивіться також


Radicle: децентралізований P2P хостинг Git/DVCS

Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle

Half-Life в Linux на базі рушія Xash3D / FWGS

Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS



/uk/