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


Давно з цікавістю приглядаюсь до проєкту вільної операційної системи Haiku, але досі не було вагомих причин її спробувати. Після Linux, Windows і MacOS я не дуже розумів її нішу. Останнім часом, через перебої світла, перебрався на нетбук з 7 Гб оперативної пам'яті і серйозно "вдарився" в оптимізацію енерго-споживання:

Оптимізація швидкодії та енергоефективності GNOME / Linux


Серед такої оптимізації, було й вимкнення шару zram, а звідти - відмова від "товстого" swap, що зкорочує термін служби SSD. Якщо на нетбуці 7 Гб це ще прийнятно, то робоча станція з 3 Гб максимум (4-1) вже занадто. Було прийнято рішення спробувати Haiku у якості основної системи.


Системні особливості Haiku


Найкращий спосіб зорієнтуватись в новій системі - це мабуть спробувати встановити в неї потрібну тобі програму. Оскільки я займаюсь розробкою і майже все збираю з сорсу (це в більшості C++), вирішив зібрати першим щось "не тривіальне": наприклад, олдовий ігровий рушій Xash3D/FWGS і запустити на ньому першу Халфу.


Кому цікаві інструкції в контексті Linux, то вам сюди:

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


Архітектура


Класично, Half-Life є 32-бітною грою. Спочатку, я спробував встановити Haiku 32 біт, але система в мене не запустилась а ні на віртуалці QEMU, а ні на "залізі". Тому все ж поставив 64-бітну версію і нижче будуть інструкції саме для цієї архітектури.


Командний рядок


На моє здивування, на відміну від вже екзотичного сьогодні UI, CLI - дуже нагадує Linux, зокрема за рахунок спільного cureutils: наявність стандартних команд не дадуть заблукати.


В меню програм є Термінал, але можливо вам також стане в нагоді гайд з підключення до хосту через SSH (адже якщо користуватись virt-manager, то там буфер обміну не працюватиме)


https://www.haiku-os.org/guides/daily-tasks/netservices/

https://www.haikuinsider.org/ssh-server


Пакетний менеджер


Пакетний менеджер в Haiku називається `pkgman`, він використовується для встановлення програм замість `apt` (Debian) і `dnf` (fedora). Особисто я конвертую залежності в README через ШІ, це досить зручно:


pkgman install libsdl2_devel freetype_devel opus_devel bzip2_devel libvorbis_devel

Як бачимо, `sudo` в Haiku не використовується, бо це система для одного користувача. Це мені навіть сподобалось, бо чесно признатись, вже втомився від постійних вводів паролів та перемикання між юзерами системних служб (Linux - все таки, серверна платформа).


Само собою, відсутність `root` мене погнала шукати віруси і як виявляється, я пропустив анонс першого в 2024 році:

World's First Haiku Ransomware/Malware


Збірка Xash3D / FWGS


Збірка рушія відбувається так само, як і на Linux, але мені довелося зробити невеличкий патч:

https://github.com/FWGS/xash3d-fwgs/pull/2459)


git clone --recursive https://github.com/YGGverse/xash3d-fwgs.git
git checkout oooo-ps-patch-1
cd xash3d-fwgs

Якщо на момент читання патч вже змержили до апстріму:


git clone --recursive https://github.com/FWGS/xash3d-fwgs
cd xash3d-fwgs

Перед компіляцією, потрібно ще в двох файлах руками виправити типізацію Ogg/Vorbis API. Руками, тому що це "брудне" рішення у вигляді касту, замість вирішення конфліктів залежностей і я не планую з цього робити RC. Шукаємо і додаємо префікс:



Тепер можна збиратись:


./waf configure
./waf build
./waf install --destdir=/path/to/valve-root

Встановлення ігрових наборів


Ігрові набори Half-Life потрібно придбати:

https://store.steampowered.com/app/70/HalfLife/


Або скачати, наприклад з торентів або Radicle/Git:


git clone https://iris.radicle.xyz/z3LRRg2os4mihf6n12P6m2Ukr4BfW.git half-life-steam-id-70

Детальніше про Radicle, читайте тут:


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


Ігрові набори розпаковуються з розташування профілю Steam до теки `/path/to/valve-root/valve`.


Portable Half-Life SDK


Для запуску на альтернативних архітектурах, потрібно додатково зібрати певні залежності:


git clone --recursive https://github.com/FWGS/hlsdk-portable.git
cmake -DCMAKE_BUILD_TYPE=Release -B build -S .
cmake --build build

Які саме залежності потрібно зкопіювати до `valve` (з теки `build`) - буде вказано в помилці запуску гри. В мене це були файли:



Тестування


Перший запуск (бінарником `./xash3d`) в мене відбувся. Утім, гра сильно гальмувала на віртуалці QEMU, через що я згодом поставив Haiku вже на фізичне залізо аналогічної архітектури: просто зкопіював збірку флешкою, довстановивши на новій машині залежності `*-devel`.


Гра запустилась і там. Хоч на фізичному залізі вона працює швидше, тут явно не вистачає 3D акселерації (хоча й для моєї ATI Radeon HD 4850 система з `listdrivers | grep accelerant` повертає драйвер `radeon_hd`). Для порівняння, я пробував встановлювати лайтову OpenArena з репозиторіїв HaikuDepot - те само. В моніторі процесів, вісить програмне прискорення `llvmpipe`. На форумі, з цього приводу, мені відповіли коротко:


Nothing changed since 2020, 3D hardware acceleration is not supported currently.

https://discuss.haiku-os.org/t/ati-hd-4850-and-3d-acceleration/18726/2


Підсумовуючи: станом на 2026, грати Half-Life на Haiku OS - технічно можливо, але тільки на програмному прискоренні і коли у вас доволі потужний/сучасний процесор.


Посилання


https://www.haiku-os.org

Haiku port #9

Playing Half-Life on Haiku Using a FOSS Half-Life Engine! (відео)

General FAQ: What graphic cards are supported?



/uk/