Недавно было проведено тестирование новой версии Installer-SH 2.9 — перспективного формата распространения ПО для Linux и FreeBSD. В прошлый раз была скомпилирована консольная игра Nudoku актуальной версии. Сейчас же мы не будем заниматься компилированием из исходного кода.
Для разнообразия я нацелился на игру Xonotic. Это трёхмерная свободная игра в жанре шутера от первого лица. Насколько мне известно, однажды американская компания IllFonic выкупила изначальный проект под названием Nexuiz, что, если очень коротко, не понравилось разработчикам. Компания, судя по слухам, не уведомила остальных разработчиков о покупке проекта и отказалась делиться своими наработками с сообществом создателей оригинального проекта Nexuiz. Так и появилось ответвление под названием Xonotic, по сути, дальнейшее развитие приобретённого проекта.
Забавно, что исходный, купленный американской компанией проект есть в репозиториях Debian, а вот Xonotic отсутствует. Ирония в том, что линуксоиды часто рассказывают о том, какие репозитории классные, мол, в них всё есть, а если чего-то нет, значит никому якобы не надо.
Так что идём на страницу проекта и скачиваем архивы не только с игрой, но и с инструментами. На сайте указаны системные требования и даже основные зависимости, что редкость для линуксоидного софта. Это очень поможет в создании нового распространяемого пакета.
Обычно линуксоиды оставляют в неведении конечных пользователей, а когда что-то не работает — виновным выставляют именно пользователя. Потому меня порадовала обнаруженная информация. Разработчики Xonotic действительно заботятся о пользователях, ведь прочие даже не могут адекватно скомпилировать свои поделия и упаковать в обычные архивы для распространения.
За примерами далеко ходить не нужно: взять тот же OBS Studio, разработчики которого наплевали на пользователей Linux в разделе загрузок. Любой адекватный разработчик должен скомпилировать свою программу и предоставить пользователям готовые к использованию исполняемые файлы. Тут же вместо архивов с ПО, выставлены сомнительные инструкции к не менее сомнительным пакетным менеджерам, фактически мёртвым без подключения к интернету.
Встаёт логичный вопрос: почему OBS Studio не умер как проект при таком бездарном распространении? Ответ в платформе Windows, для которой разработчики вынуждены предоставлять адекватные исполняемые файлы. Пользователи Windows просто не поймут всего этого мракобесия из мира Linux. Если линуксоиды съедят, что есть, ибо альтернатив нет, и придётся есть, даже если не вкусно и больно, то в среде Windows таких «особенных» просто выбросят за борт конкуренты.
Вот и разница между Linux и Windows. Мой способ распространения софта под названием «Installer-SH» как раз решает проблему распространения ПО для Linux и FreeBSD, уравнивая практически всех разбрёвшихся «пингвинов» (Linux) и «демонов» (FreeBSD).
Впрочем, давайте вернёмся к подготовке файлов Xonotic. Я хочу выпустить не просто установочный пакет для Linux, а полную версию игры со всеми инструментами и исходным кодом, который смогу собрать воедино.
Вот и первые проблемы. Я ещё даже не начал собирать распространяемый пакет с игрой, а уже сталкиваюсь с серьёзными проблемами платформы Linux как таковой. Типичный «ад зависимостей» передаёт привет. Хотя, как пользователь, я был предупреждён об этом в системных требованиях.
Ради интереса я попытаюсь не устанавливать в систему отсутствующие библиотеки, а собрать в отдельном каталоге рядом с программой. Разумеется, чтобы найти подходящую зависимость в линуксоидных репозиториях, пришлось расковырять локальную копию размером 89 гигабайт, потому что имена пакетов в пакетном менеджере не соответствуют фактическим именам пакетов, что крайне осложняет поиск нужных. Стоит ли говорить, насколько сильно я недолюбливаю эти все пакетные менеджеры из-за таких моментов?
Буду пробовать не самую актуальную версию, а более старую, так как последняя может не заработать в старых дистрибутивах Linux. Это разумный подход, так как я стараюсь сохранить совместимость, насколько это возможно. Ведь чем лучше обратная совместимость с операционными системами, тем больше охват пользователей.
Изрядно потанцевав с библиотеками, мне удалось запустить утилиту NetRadiant. Полагаю, обратная совместимость выйдет на уровне Debian 11, но ниже вряд ли, потому что дальше упрётся в GLIBC, вокруг которого всё крутится в дистрибутивах Linux.
Да, редактор уровней NetRadiant оказался весьма неудобным в использовании с первого захода. Даже встроенный редактор Doom 3 был как-то интереснее, когда создавал уровни в 2006 году. Тогда у меня даже интернета не было, разве только 56k изредка.
Но редактор работает, а значит заслуживает включения в набор с игрой.
В среде Debian 11 редактор запустился с использованием собранных в отдельной папке библиотек. Но в Debian 10 уже всё печально не только для редактора уровней. Если редактор спотыкается о зависимости добавленных библиотек, то сама игра уже спотыкается о GLIBC.
А ещё я заметил, что репозитории Debian 10 уже выкинули на свалку истории, потому что нигде их больше нет. Вот вам и линуксоидные способы распространения софта. Да и FreeBSD 13 тоже выбросили. Похоже, теперь локальная копия репозитория FreeBSD 13, где-то у меня, валяющаяся на внешнем SSD, осталась чуть ли не единственной живой в мире, ибо сомневаюсь, что кто-то ещё сделал копию, учитывая практически нулевую популярность этой системы среди людей. По крайней мере, я не замечал за любителями FreeBSD способности делать бэкапы.
И да, я был прав в своих наблюдениях: репозитории Debian 10 мертвы. Увы. И это одна из причин, почему Linux так же мёртв для подавляющего большинства людей, как и основные дистрибутивы. Так и падают дистрибутивы Linux: репозитории отключили — и всё, система автоматически превращается в бесполезную «тыкву». Это вам не Windows XP, которую можно даже спустя 50 лет развернуть и она прекрасно будет работать с огромной массой накопившегося софта, если, конечно, его не начнут умышленно уничтожать современные корпорации, в том числе злоупотребляя властью над компьютерами людей.
В любом случае, мне ничего не остается как ограничить планку обратной совместимости на уровне Debian 11. Время тут работает против пользователей Linux, так как со временем и Debian 11 таким же образом будет уничтожен. Поэтому Installer-SH создавался самодостаточным и крайне жизнеспособным, чтобы жить даже в условиях полной изоляции. Именно поэтому Linux обречён на провал, пока владельцы репозиториев могут легко уничтожить любой дистрибутив, просто заблокировав доступ к пакетной базе.
С одной стороны, я критически отношусь к разработчикам за то, что их софт имеет плохую обратную совместимость. Но с другой стороны, их можно понять, ведь как поддерживать старый дистрибутив Linux, если его репозитории уже мертвы? Но это не относится к разработчикам таких проектов, как OBS Studio, которые кидают с поддержкой даже актуальные, полностью исправные дистрибутивы Linux. Таких нужно критиковать, да пожёстче, потому что нет никаких здравых причин бросать пользователей актуальных версий ОС.
Давайте вернёмся к игре Xonotic. Я тут уже поиграл в виртуальной машине без 3D ускорения. В целом, моего ноутбука с i7-10875H (офисный режим <15W TDP) хватает, чтобы активно играть без помощи видеокарты. Да, производительность на уровне около 40-60 fps с фризами при загрузке ресурсов на лету. Но это всё равно впечатляющий уровень оптимизации. Тем более настройки не самые низкие.
Дальше разбираюсь с локальным сервером. Как оказалось, для создания сервера нужно перенести конфиг в домашний каталог пользователя или отдельную папку в игре. Это говорит о том, что придётся активно использовать возможности формата Installer-SH для переноса домашнего каталога в папку рядом с программой.
Также придётся поработать над ситуацией, когда запущен игровой сервер, ведь нельзя просто взять и запустить игру во время работы сервера.
Казалось бы, что сложного - просто взять официальные архивы, распаковать и играть? Зачем я перепаковываю игру в новый формат Installer-SH, занимаясь этими всеми проверками, доработками и тестами? Правильно, чтобы потом просто взять установочный пакет в формате Installer-SH, установить и получить сразу всё исправное без дотачивания напильником. Как пользователь, я ненавижу, когда приходится дотачивать линуксоидный софт напильником, потому что всем плевать на пользовательский опыт в среде Linux.
Теперь можно заняться настройкой лаунчеров. Да, мы наконец взялись за формирование установочного пакета. Для инструмента NetRadiant включаю функцию подключения каталога с дополнительными библиотеками, так как без них программа не запустится.
Попутно настраиваю и заполняю информацию о программе в установочном пакете.
И тут я обнаружил баг, не выявленный нейронными сетями во время флуд-атаки на репозиторий проекта Installer-SH. В файле настроек ish-settings отсутствует параметр ISHMoveHomeDir. Похоже, нужно будет внести исправление и обновить уже выпущенный Installer-SH 2.9. Эта ошибка не причиняет никакого вреда, просто делает окно выбора расположения файлов конфигурации неработоспособным, так как выбор не учитывается после установки.
Радует, что ошибка незначительная и требует исправления только в одном файле. Достаточно добавить переменную в файл с настройками, чтобы исправить недоразумение. Для того и нужно проводить тестирование на реальных проектах, чтобы выявлять и устранять подобные недочёты. Это, конечно, нехорошо - обновлять уже выпущенный релиз, но пока его особо не скачивали, я не вижу в этом проблем. Нет смысла выпускать новый релиз из-за одной строчки кода в проекте, общей массой более двух тысяч строк.
Теперь можно упаковать архивы, но я не просто упакую, а проведу тестирование. Installer-SH поддерживает два метода сжатия: линуксоидный tar.xz и более совершенный 7-Zip. Сначала упакуем архивы в формат tar.xz и посмотрим, сколько времени это займёт.
На упаковку архива в формате tar.xz ушло примерно 10 минут 15 секунд, на установку потрачена 21 секунда. В формате 7-Zip на упаковку ушло 3 минуты 50 секунд, а на установку 13 секунд. Разница в размере незначительная, вышло 1264 и 1261 МБ. Да, архиватор 7-Zip значительно превосходит tar.xz по скорости, но наибольший удар приходится на упаковку архивов. При распаковке оба варианта справляются достаточно быстро, чтобы это не было проблемой. Так что можно обойтись обычным форматом tar.xz и не таскать вместе с инсталлером архиватор 7-Zip.
Игра в любом случае доставляется пользователю. Осталось только протестировать, чтобы всё работало исправно, и можно заканчивать с новым установочным пакетом.
А ещё я попробовал запустить инсталлер без ручной распаковки распространяемого tar-архива, и это даже получилось. Но команда оказалась довольно сложной, чтобы это имело какую-либо практическую ценность, а ещё это занимает место во временном каталоге. В общем, нет смысла в этих извращениях линуксоидных, когда можно просто распаковать и запустить как положено. Да никто и не запрещает хранить пакеты в распакованном виде, сразу готовом к установке, несжатый tar нужен только для удобства распространения.
Debian 11
Запускаем виртуальную машину и устанавливаем игру в дистрибутиве Debian 11. Прямо в Live CD-режиме.
Всё работает хорошо.
Локальный сервер и редактор карт тоже работают хорошо.
На этом можно завершить тест в дистрибутиве Debian 11.
Fedora 30-32
Запускаем Fedora 30 и сразу монтируем каталог portsoft в оперативную память, ибо этот Linux выделяет совсем мало под файловую систему.
Редактор карт не запустился, потому что проявился типичный для Linux ад зависимостей. Библиотека libGLU не найдена. Но вот сервер и сама игра работают без проблем. Вообще, это странно, потому что ничего связанного с libGLU не было видно в системных требованиях редактора NetRadiant. Неужели Fedora настолько отсталый дистрибутив?
Впрочем, даже если я и подсуну недостающую библиотеку, проблемы начинаются с другими. Похоже, Fedora 30 старовата для редактора карт.
Идём дальше. Дистрибутив Fedora 32.
Тут уже всё заработало, стоило подкинуть недостающую библиотеку. Придётся перепаковать архивы с игрой, чтобы гарантировать совместимость с дистрибутивом Fedora.
Второй заход, и всё работает как положено.
Manjaro 20 и openSUSE Leap 15.5
Теперь протестируем Manjaro 20. Всё установилось и запустилось без проблем. Да, вместо видеокарты за графику отвечает процессор i7-10875H, но для тестирования установочного пакета этого более чем хватает.
В дистрибутиве openSUSE Leap 15.5 всё установилось и запустилось без проблем.
Финальный штрихи
На этом можно завершить тестирование и внести финальные штрихи, ведь в кратком описании есть ещё свободное место под системные требования игры.
А ещё была обнаружена специфическая для игры проблема. Xonotic может намертво зависать при запуске. Как выяснилось, проблема заключается в работе игры с сетевыми протоколами.
Данная ситуация интересна тем, что вчера у меня Xonotic прекрасно работал, а сегодня уже не работает. И чтобы исключить вероятность проблем в моей главной операционной системе, я запустил виртуальную машину с дистрибутивом Manjaro 20 и проверил, подключив сеть к ней.
Да, проблема, судя по всему, в том, что умерли серверы Xonotic в интернете, а за серверами следом пала и игра. Вот почему я недолюбливаю, когда софт привязан к сервисам в сети. Какая ирония: вроде бы свободная игра, линуксоидная, а она также умирает, как и дистрибутивы Linux, вслед за серверами в сети.
Придётся добавить новые ярлыки, чтобы можно было запустить, даже когда серверы игры мертвы в интернете. Я даже такие проблемы стараюсь предусмотреть при создании новых установочных пакетов в формате Installer-SH, чтобы пользователям, в том числе мне, не приходилось танцевать с бубном из-за таких проблем.
Хорошо, что Installer-SH архитектурно разделяет системные файлы с ярлыками от файлов программы, так я могу перепаковать лишь маленький архив, не затрагивая массивный с игрой.
Теперь игру можно запустить, даже если серверы в интернете мертвы. Да, сетевые функции не будут доступны при таком запуске, но это меньшее из зол. Так или иначе, пользователь теперь имеет выбор.
Заключение
На этом завершаем сборку игры и загружаем распространяемый пакет с игрой в репозиторий Chimbalix-Software-Catalog.
https://github.com/Shedou/Chimbalix-Software-Catalog/releases/tag/xonotic086
Я давно не записывал новые видео, поэтому записал одно, посвящённое созданному установочному пакету с игрой Xonotic в формате Installer-SH. Хотя к моменту записи работа игровых серверов наладилась, всё равно можно заметить местами, как игра подвисает при загрузке списка доступных серверов.
Мы столкнулись со множеством характерных для Linux проблем, проделали много работы и выпустили наконец игру в действительно качественном формате распространения ПО. Теперь, если я сам захочу поиграть в Xonotic на другом компьютере, то благодаря Installer-SH это будет тривиальной задачей. На этом можно завершить статью.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Читайте далее на сайте
ИИ-напарники в играх стали реальностью — NVIDIA запустила ACE Game Agent
Глава Sonic Team сообщил о планах Sega закрыть серию Sonic в 2016 году
Игра Crimson Desert получила обновление 1.12.00 с улучшенным декорированием домов