!!! Компиляция движка выполнялась на Репке ver 1.3 с частотой 1.4 ГГц (выставил в repka-config), 2 ГБ ОЗУ с активным охлаждением !!!
Обновление от 15.09.2023: В связи с тем что разработчики движка xash3d-fwgs своими обновлениями иногда умудряются что-нибудь сломать и “оно не компилируется“, я “форкнул“ движок xash3d и HLSDK к себе в репозиторий на GitHub, чтобы движок спокойно компилировался и работал на Репке, также я сделал сборку под aarch64, чтобы можно было не собирать из исходников (но инструкцию оставлю, в командах git clone изменил ссылки на свои репозитории).
Содержание #
- Вариант 1: Установка собранных aarch64-билдов (простой способ)
- Вариант 2: Сборка из исходников (на Репке)
- Вариант 3: Сборка из исходников (через кросс-компилятор x86_64 -> aarch64)
Данная инструкция ориентирована на новичков (включая тех, кого даже пугает само словосочетание “сборка из исходников“. Как раз именно этим и будем заниматься в вариантах 2 и 3).
Запускать игру мы будем с помощью движка xash3d.
Авторы движка xash3d и open-source версии Half-life SDK: сообщество Flying With Gauss
Вариант 1: Установка собранных aarch64-билдов (простой способ) #
-
Устанавливаем зависимости
sudo apt install libsdl2-dev libfontconfig-dev libfreetype6-dev
-
Скачиваем архив с движком xash3d-fwgs-repkapi_aarch64.zip
-
Скачиваем архив с HLSDK hlsdk-portable-repkapi_aarch64.zip
-
Распаковываем архив “xash3d-fwgs-repkapi_aarch64.zip”, должна быть папка “xash3d” с содержимым.
-
Распаковываем архив “hlsdk-portable-repkapi_aarch64.zip”, должны быть папки “dll” и “cl_dll”
-
Папки “dll” и “cl_dll” перемещаем в папку xash3d/valve
-
Добываем Half-Life любым способом (пиратство, естественно, осуждаем, я свой half-life покупал в Steam) и перетаскиваем содержимое его папки valve КРОМЕ cl_dlls и dlls в папку xash3d/valve
-
В папке “xash3d” запускаем терминал и запускаем игру командой
./xash3d
В игре идём в Configuration → Video → Video modes, ставим renderer GLES1 (nano gl), разрешение экрана 1280×720, сохраняем, перезапускаем игру ). Выход из игры отрабатывает некорректно (точнее вообще не отрабатывает) и приходится “убивать “ процесс.
ПРИМЕЧАНИЕ: Если при запуске игры движок выдал ошибку видеодрайвера и/или в консоль посыпались ошибки типа “cannot allocate memory”, то перезапустите репку. Возможно косяк видеоядра, точно не знаю.
Вариант 2: Сборка из исходников (на Репке) #
Просто введите в терминале последовательно следующие команды:
-
Установим зависимости
sudo apt install build-essential python libsdl2-dev libfontconfig-dev libfreetype6-dev
-
Скачаем движок из репозитория
git clone --recursive https://github.com/ArtSvetlakov/xash3d-fwgs-repkapi.git
-
Перейдём в папку с исходниками
cd xash3d-fwgs-repkapi
-
Запустим автоконфигуратор
./waf configure -T release --jobs=4 --disable-gl --enable-gles1 --enable-stbtt
Возможно файлу waf потребуется дать разрешение на исполнение файла как программы, это делается командой
chmod +x waf
или же по файлу щелкнуть правой кнопкой мыши → Свойства → Права и поставить галочку “Разрешить исполнять как программу“. -
Компилируем
./waf build
-
Установка в отдельную папку (в моём случае
~/games/half-life/
, но вы можете заменить на свою. Но собранный Half-life SDK, о котором ниже, надо будет ставить в ту же папку)./waf install --destdir=~/games/half-life/
-
Возвращаемся из папки с исходниками, чтобы скачать и собрать Half-life SDK
cd ..
-
Скачиваем Half-life SDK из репозитория
git clone --recursive https://github.com/ArtSvetlakov/hlsdk-portable-repkapi.git
-
Переходим в папку с исходниками Half-life SDK
cd hlsdk-portable-repkapi
-
Запустим автоконфигуратор
./waf configure -T release -j 4
-
Компилируем
./waf
-
Устанавливаем собранный Half-Life SDK
./waf install --destdir=~/games/half-life/
-
Переходим в папку с установленным движком и проверяем что получилось. Мы должны увидеть папку valve, исполняемый файл xash3d и его библиотеки формата .so
cd ~/games/half-life/ && ls
-
Переходим в подпапку valve. Здесь мы должны увидеть две папки, в каждой из которых лежат файлы библиотек (а именно client_arm64.so в cl_dlls и hl_arm64.so в dlls) и один файл extras.pk3
cd valve && ls
-
Вышеуказанные папки/файлы можете проверить и из обычного файлового менеджера. Если всё получилось, то добываем Half-Life любым способом (пиратство, естественно, осуждаем, я свой half-life покупал в Steam) и перетаскиваем содержимое его папки valve КРОМЕ cl_dlls и dlls в папку valve, которая в папке с установленным нами движком.
-
Далее запускаем игру, в игре идём в Configuration → Video → Video modes, ставим renderer GLES1 (nano gl), разрешение экрана 1280×720, сохраняем, перезапускаем игру ). Выход из игры отрабатывает некорректно (точнее вообще не отрабатывает) и приходится “убивать “ процесс.
Переход в папку с игрой:
cd ~/games/half-life/
Запуск:
./xash3d
ПРИМЕЧАНИЕ: Если при запуске игры движок выдал ошибку видеодрайвера и/или в консоль посыпались ошибки типа “cannot allocate memory”, то перезапустите репку. Возможно косяк видеоядра, точно не знаю.
Вариант 3: Сборка из исходников (через кросс-компилятор x86_64 -> aarch64)
Сборка будет проводиться на компьютере с ОС Windows через WSL.
-
Подготовить кросс-компилятор из статьи “Установка кросс-компилятора из x86_64 в aarch64“
-
сначала нужно собрать и установить SDL2 под aarch64, для этого последовательно выполняем:
git clone --recursive -b release-2.28.x https://github.com/libsdl-org/SDL.git
cd SDL
CC=aarch64-linux-gnu-gcc cmake -B build
cd build
make -j<количество потоков вашего CPU>
Если возникнет ошибка компиляции, связанная с файлом ~/SDL/src/video/x11/SDL_x11xinput2.h “error: conflicting types for ‘XGenericEventCookie’“,
то нужно открыть этот файл и закомментировать строку
typedef struct XGenericEventCookie XGenericEventCookie;
чтоб было так
//typedef struct XGenericEventCookie XGenericEventCookie;
затем сохранить файл и повторить
make -j<количество потоков вашего CPU>
sudo make install
собранная библиотека SDL2 установится в /usr/local в папки bin, include, lib (оттуда потом сможете удалить).
Выходим обратно из папок SDL/build
cd ../..
-
см. шаги 1-3 из варианта 2
-
Запустим автоконфигуратор
CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc ./waf configure -T release --jobs=<количество потоков вашего CPU> --disable-gl --enable-gles1 --disable-menu-changegame --enable-stbtt
Возможно файлу waf потребуется дать разрешение на исполнение файла как программы, это делается командой
chmod +x waf
-
см. шаги 5-9 из варианта 2
-
Запустим автоконфигуратор
CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc ./waf configure -T release --jobs=<количество потоков вашего CPU>
-
см. шаги 11-15 из варианта 2
-
в итоге получается готовая папка half-life по пути ~/games/ (то есть /home/<пользователь>/games). Данную папку на флешке/по облаку/как угодно переносите на Репку и уже там запускаете (см. шаг 16 из варианта 2).
Компиляция застряла на 171 шаге на файле "celt_decoder.c".
Репка ver. 1.3 на частоте 1 Гигагерц, c памятью 1 Гигабайт без активного охлаждения. Практически не реагирует на клавиатуру и мышь. Сколько должна идти компиляция?
Время компиляции точно не замерял, но не больше 5 минут и нигде надолго не застревала.
У меня Репка тоже 1.3, но 2 гиговая с активным охлаждением и частоту выставил 1.4 ГГц
На всякий случай отмечу вверху статьи.
Охлаждение процессора оказалось не причем. На Репке с активным охлаждением на частоте 1, 4 Гигагерца и памятью 1 Гигабайт компиляция также зависает.
На Репке с двумя гигами памяти все прошло на ура! На всякий случай еще увеличил объем swap файла до 4 Гигабайт.
Интересно, пройдет ли в этом случае компиляция на Репке с 1 Гигабайтом?
Автору большое спасибо за подробную инструкцию.
в результате выполнения команды
./waf build
выдало :
........
........
[140/560] Compiling 3rdparty/opus/opus/silk/ana_filt_bank_1.c
[141/560] Compiling 3rdparty/opus/opus/silk/NSQ_del_dec.c
[142/560] Compiling 3rdparty/opus/opus/silk/NSQ.c
[143/560] Compiling 3rdparty/opus/opus/silk/tables_NLSF_CB_NB_MB.c
[144/560] Compiling 3rdparty/opus/opus/silk/stereo_MS_to_LR.c
[145/560] Compiling 3rdparty/opus/opus/silk/NLSF_unpack.c
gcc: fatal error: Убито signal terminated program cc1
compilation terminated.
Waf: Leaving directory `/root/xash3d-fwgs/build'
Build failed
-> task in 'gl4es' failed with exit status 1 (run with -v to display more information)
root@Repka-Pi:~/xash3d-fwgs#
почему? и что делать?
зы
Репка 1.3 2 Гб 1.4 ГГц с активным охлаждением
Репозиторий xash3d-FWGS разработчики движка активно дорабатывают и обновляют. К сожалению и ломают периодически (уже второй раз за месяц) :D
Судя по изменениям на гитхабе что-то связанное с OpenGL как раз поменяли 3 дня назад.
Попробую "форкнуть" его к себе, откатить изменения и тут обновлю ссылки. Чтоб движок хранился в неизменном виде и спокойно компилировался.