8.5 KiB
Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS
Давно з цікавістю приглядаюсь до проєкту вільної операційної системи Haiku, але досі не було вагомих причин її спробувати. Після Linux, Windows і MacOS я не дуже розумів її нішу. Останнім часом, через перебої світла, перебрався на нетбук з 7 Гб оперативної пам'яті і серйозно "вдарився" в оптимізацію енерго-споживання.
Серед такої оптимізації, було й вимкнення шару zram, а звідти - відмова від "товстого" swap, що зкорочує термін служби SSD. Якщо на нетбуці 7 Гб це ще прийнятно, то робоча станція з 3 Гб максимум (4-1) вже занадто. Було прийнято рішення спробувати Haiku у якості основної системи.
Системні особливості Haiku
Найкращий спосіб зорієнтуватись в новій системі - це мабуть спробувати встановити в неї потрібну тобі програму. Оскільки я займаюсь розробкою і майже все збираю з сорсу (це в більшості C++), вирішив зібрати першим щось "не тривіальне": наприклад, олдовий ігровий рушій Xash3D/FWGS і запустити на ньому першу Халфу.
Кому цікаві інструкції в контексті Linux, то вам сюди:
Архітектура
Класично, Half-Life є 32-бітною грою. Спочатку, я спробував встановити Haiku 32 біт, але система в мене не запустилась а ні на віртуалці QEMU, а ні на "залізі". Тому я все ж поставив 64 біт і нижче будуть інструкції саме для цієї архітектури.
Командний рядок
На моє здивування, на відміну від вже екзотичного сьогодні UI, CLI - дуже нагадує Linux, зокрема за рахунок спільного cureutils: наявність стандартних команд не дадуть заблукати.
В меню програм є Термінал, але можливо вам також стане в нагоді гайд з підключення до хосту через SSH (адже якщо користуватись virt-manager, то там буфер обміну не працюватиме)
Пакетний менеджер
Пакетний менеджер в Haiku називається pkgman, він використовується для встановлення програм замість apt (Debian) і dnf (fedora). Особисто я конвертую залежності в README череш ШІ, це досить зручно:
pkgman install libsdl2_devel freetype_devel opus_devel bzip2_devel libvorbis_devel
- звісно, є інші залежності, але вони в мене були встановлені з коробки
Як бачимо, sudo в Haiku не використовується, бо це система для одного користувача. Це мені навіть сподобалось, бо чесно признатись, вже втомився від постійних вводів паролів та перемикання між юзерами системних служб (Linux - все таки, серверна платформа).
Само собою, відсутність root мене погнала шукати віруси і як виявляється, я пропустив анонс першого такого в 2024 році.
Збірка Xash3D / FWGS
Збірка рушія відбувається так само, як і на Linux, але мені довелося зробити невеличкий патч, тому збірка буде на прикладі цієї гілки, допоки її не змержили:
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. Шукаємо і додаємо префікс:
FS_SeekOggVorbis->(void *) FS_SeekOggVorbisOggFilestream_Seek->(void *) OggFilestream_Seek
Тепер можна збиратись:
./waf configure
./waf build
./waf install --destdir=/path/to/valve-root
Встановлення ігрових наборів
Ігрові набори Half-Life потрібно придбати або скачати, наприклад з торентів або Radicle/Git:
git clone https://iris.radicle.xyz/z3LRRg2os4mihf6n12P6m2Ukr4BfW.git half-life
Детальніше про rad, читайте тут: Radicle: децентралізований P2P хостинг Git/DVCS. Для мене Radicle цікавий тим, що дозволяє контролити апдейти без перезаливу всього торента.
Ігрові набори розпаковуються до теки /path/to/valve-root/valve.
Portable Half-Life SDK
Для запуску на альтернативних архітектурах, потрібно додатково зібрати певні залежності:
git clone --recursive https://github.com/FWGS/hlsdk-portable.git
git checkout bot10
cmake -B build -S .
cmake --build build
Які саме залежності потрібно зкопіювати до valve (з теки build) - буде вказано в помилці запуску гри. В мене це були файли:
valve/dlls/hl_haiku_amd64.sovalve/cl_dlls/client_haiku_amd64.so
Тестування
Перший запуск (бінарником ./xash3d) в мене відбувся. Утім, гра сильно гальмувала на віртуалці QEMU, через що я згодом поставив Haiku вже на фізичне залізо аналогічної архітектури: просто зкопіював збірку флешкою, довстановивши на новій машині залежності *-devel.
Гра запустилась і там. Хоч на фізичному залізі вона працює швидше, утім тут явно не вистачає якогось драйвера (хоча система й автоматично підтягнула OpenGL) або ж він працює не коректно. Спробую згодом ще на зовнішній відео-картці, хоча на форумах повідомляють про окремі проблеми з чіпсетами Radeon.